APP下载

水族馆鱼类目标检测网络优化研究

2022-07-07张胜茂王书献邹国华

渔业现代化 2022年3期
关键词:卷积鱼类图像

刘 洋,张胜茂,王书献,王 斐,樊 伟,邹国华,伯 静

(1 上海海洋大学信息学院,上海 201306;2 中国水产科学研究院东海水产研究所,农业农村部渔业遥感重点实验室,上海 200090;3 上海峻鼎渔业科技有限公司,上海 200090;4 武汉纺织大学经济学院,湖北,武汉 430200)

水族馆观赏鱼是一项保护野生鱼类及传播海洋知识的产业,其价值几十亿美元[1]。利用目标检测算法自动跟踪和识别鱼类对监测鱼类状态及传播知识具有重要意义[2-3]。受应用环境、成本和便捷性等因素的影响,算法需要更好实时性和低能耗,从而减少运行成本。

随着目标检测的发展,已有很多研究针对该任务,例如区域建议检测网络R-CNN[4],Fast R-CNN[5],Faster R-CNN[6],R-FCN[7]和Libra R-CNN[8]等;端到端检测网络Yolo[9-11],SSD[12]和Retinanet[13]等。在鱼类目标检测领域也有广泛的应用,如袁红春等[14]针对水下目标识别任务迁移学习了Fast Rcnn网络,平均测试精确率达到91.7%,但由于其网络的主干(backbone)使用了VGG16和Resnet101,计算复杂度高。李庆忠等[15]为避免网络权重过大,修改了Yolo的backbone,在1 500张图像上实现了99%的准确率,但数据较为简单,网络泛化能力差。王双琴等[16]改进MobileNet、SSD网络结构,并进行数据增强和损失设计进一步提高了鱼类识别精确率,但其数据集不够丰富。Jalal 等[17]在LifeCLEF 2015数据集上,融合Yolo网络模型与高斯混合模型,通过时间信息检测背景中伪装的自由移动的鱼,有效地提高了检测精确率,但其网络权重较大。张胜茂等[18]将 MobilenetV1作为SSD网络的主干,实现了92.5%的识别精确率,但网络识别能力和计算复杂度需进一步优化。

为了提高鱼类目标检测网络检测识别能力和实时性,本研究重新制作了鱼种更丰富图像质量更好的数据集,探究了高精度、轻量级目标检测网络的应用方案。在水族馆拍摄鱼类视频,经过清洗、处理和标注,生成了包含83中常见鱼类,共10 042张图像的水族馆鱼类的数据集;为满足实时性要求,基于“深度可分离卷积”[19]、残差[20]和Mish[21]激活函数重新设计了YoloV4的backbone,以降低网络的计算量,加快网络的推理速度;为了加强网络的识别和检测能力,用不同数据增强(Mixup[22]、 Cutmix[23]、Mosaic[9])、不同激活函数(ReLU[24]、ELU[25]、Swish[26]、Mish[21])、多尺度图像输入对网络进行消融研究,得到最佳的数据增强和激活函数的搭配,提高了网络的识别和检测精确率;最终,得到了计算量小、推理速度快、检测和识别精确率较高且对多尺度输入具有泛化能力的鱼类目标检测与识别网络。

1 数据与方法

1.1 数据介绍

大规模的鱼类数据可以促进更强大、更复杂的识别网络和算法发展。但鱼类种类繁杂多样,如何准确地组织、收集和处理数据仍然是渔业智能化的关键问题。本研究在水族馆用摄像机拍摄游动的活体鱼类视频,总共拍摄了83种鱼的游泳视频。对该数据进行处理,处理过程包括:检查视频质量(包括清晰度、曝光、是否有鱼类对象),挑选出曝光正常清晰度高有鱼类对象的视频;然后利用Opencv将视频存储成图像,人工去除模糊不清的以及不包含鱼类的图像。得到了83种鱼类的数据集,包括白鳍鲨、白招财鱼、斑点水母、大目鱼、海苹果、关刀、河豚、皇后神仙、苏眉等,共10 042张图像,每张图像的分辨率为600×400像素,如图1a。为满足该数据集在基于监督学习的目标检测和识别中的要求,使用Labelme软件对不同鱼种进行标注,标注的内容包括每一张图像中鱼类对象的目标检测框(x,y,w,h)和鱼类种类,其中x、y、w、h分别表示图像中鱼类对象目标检测框左上角位置(x,y)和长宽(w,h),总共标记了13 558个目标,生成了10 042个标注文件,例如彩色水母标注如图1b。在试验中,参照(visual object classes,VOC)[27]格式对数据进行归纳整理,以便其他相关研究重复利用。

图1 水族馆鱼类图像样图Fig.1 Fish data sample of aquarium

为了验证数据集的有效性,将83种鱼类图像数据及一一对应的标注文件按照鱼种编号为0~82,并按照8∶2的比例将鱼类的数量均匀分为训练集和测试集,其数据量分布如图2,除了编号为将军甲、蓝线雀和虱目鱼(编号12、58和59)数据量较多,其他鱼类数据量平均分布在80~150张,整体数据分布较为均匀。

图2 水族馆鱼类数据集分布Fig.2 Distribution of fish data sets in aquarium

1.2 数据增强

训练集的数量及其数据多样性对增强网络的泛化能力具有决定性作用,因此对图像进行数据增强处理,能提高网络对数据的泛化能力(图3)。首先对图像进行放缩、平移、翻转、旋转和裁剪等变换操作,其中放缩图像可增强网络对多尺度输入的泛化能力;然后使用Mixup、Cutmix、Mosaic对图像做数据增强。

图3 数据增强示例图Fig.3 Data augmentation example diagram

Mixup基于特征张量的线性插值对应相关标签的线性插值的先验原理,其计算开销小且与数据无关[22],如公式(1)所示。

(1)

Cutmix将图像A中截切一块用B作为填充,在推理过程中增加了数据复杂性,可提高网络的泛化能力[23],如公式(2)所示。

(2)

1.3 鱼类目标检测网络

目标检测算法中,基于传统CNN卷积设计的主干网络(backbone)包括Resnet[20],VGG[28],Densenet[29],Squeezenet[30]等。这些网络的层数较多,且传统CNN卷积的计算量较大。直接使用上述网络迁移学习水族馆鱼类数据时,均会出现参数冗余、检测实时性差等问题。为解决该问题,本研究重新设计了目标检测网络的backbone模块。使用Xception[31],Mobilenet[19,33]利用“深度可分离卷积”(Depthwise)的方法,可有效地减少计算复杂度。利用He等[20]提出的残差原理,防止梯度消失; 使用Ioffe等[32]提出的Batch Normalization(简称:BN)模块,加速训练与防止过拟合;使用Sandler M等[19]提出的Linear Bottlenecks (LB),防止特征退化。并对激活函数做消融研究,包括计算量较少的非平滑函数ReLU[24]及计算量较大的平滑函数ELU[25]、Swish[26]和Mish[21]等。

该模块主要由PDP1~3(Pointwise To Depthwise To Pointwise)利用残差原理组成,可使其特征信息稳定传播。在设计中,该模块为减少计算量使用了Depthwise卷积(卷积核为K2),其特征张量计算量为W×H×K2;仅为CNN卷积计算量W×H×N×K2的1/N;该模块为了能灵活压缩和扩张张量信息,用Pointwise卷积融合Depthwise卷积后的张量信息,并且用Linear激活函数防止较浅层次网络中的特征退化现象[19];该模块为了加速训练与防止过拟合,在卷积之后使用BN模块;该模块为了使张量在反向和正向传播的过程中更加平滑地过度,使用Mish激活函数;该模块用步长和大小为2的最大池化降采样。

该模块推理流程简述,如图4所示。首先输入为(W,H,K)的张量,通过PDP1在n通道上提取特征信息,输出 (W,H,n)的张量;然后PDP2为提炼细粒度的信息,先用PW卷积将特征通道扩张到2n细化张量信息,再用DW提炼细粒度的特征,最后再用PW将信息压缩回n通道,输出(W,H,n)的张量[19];然后PDP3承接PDP1和PDP2在通道上合并的残差张量(W,H,2n)以保留更多的原始信息,防止PDP2提炼特征过程中出现特征退化[20],并用PW和Linear压缩信息,输出(W,H,n)的张量;最后将PDP1和PDP3的残差张量拼接,使用2×2的最大池化(maxpool 2:2)降采样。该模块用较少计算复杂度的模块(Depthwise,Pointwise),将张量信息进行1次扩张,2次压缩,2次残差融合和1次下采样,根据Resnet和Mobilenet的设计原理,其对张量信息有细化、压缩、残差和降采样的功能。为了方便,本文将该重组网络简称为TPDP(Triple PDP)。

目标检测与分类网络的结构包括backbone,neck及head模块(代码:https://github.com/dm0mb/FishCLEF-dm0mb)。其中,backbone由3个串行的TPDP连接而成,且TPDP1~TPDP3的通道数依次为32、64、128,因此以下称该重构的backbone为BTP(The backbone by TPDP),如图5a。在BTP模块中,用32通道卷积核卷积(卷积核大小为(3×3),步长为2),对图像特征进行初步提取。并使用3个TPDP对特征进行多次扩张,压缩,残差融合和下采样;在neck模块中,将底层特征语义信息和高层特征语义信息融合成特征金字塔,分层次进行预测,以扩大感受野并优化网络在描述小目标中的表现[34]。在head模块,head1模块下采样32倍用于检测小目标,head2模块下采样16倍用于检测大目标。

注:DW表示卷积核为(3×3)的“深度可分离卷积”(Depthwise Convolution);Pw 表示卷积核为(1×1)的点卷积(Pointwise Convolution),BN表示Batch Normalization;Linear表示线性激活函数; Mish为平滑的激活函数;route表示在张量拼接;maxpool 2∶2为核为2步长为2的最大池化;n表示通道数图4 重组卷积模块(TPDP)Fig.4 Reorganized convolution module (TPDP)

目标检测网络的输出及评估原理。将图片分成S×S个网格单元,每个网格单元预测3个检测框,每个检测框包含5个参数(x,y,w,h,η),分别表示预测框的位置坐标(x,y),预测框的宽高(w,h)和该网格的目标置信度(η)。本试验中包含83种鱼类目标,因此head1和head2中的卷积模块的通道为264(检测框个数×(类别数+检测框参数个数)),各个检测框的预测参数如图5b。为了方便,将该网络称为BTP-YoloV3。

注:Conv 3表示3个卷积核的普通卷积;upsample 2表示2倍上采样运算; class表示不同种鱼类的编号;yolo为输出层 图5 网络结构及检测框Fig.5 Network structure and bounding box

1.4 损失函数

损失函数为置信度损失、目标检测损失和分类损失函数。置信度损失:将图像分为S2个网格后,对于每一个网格进行置信度评价 ,即计算“该网格中是否包含目标”的损失,如果包含目标则进行目标检测,如果不包含目标,则扫描下一个网格。置信度损失函数采用交叉熵函数[9],如公式(3)所示。

(3)

目标检测损失:目标检测损失用于表示真实框与预测框的之间的差距。常见的目标检测损失函数有IoU、CIoU[35]等。

在传统的损失计算方法中,常利用IoU表示预测框与真实框的重合程度。IoU参数的数值为预测框、真实框的重合部分面积与预测框、真实框面积之和的比值。IoU参数能够在一定程度上反映模型预测结果的好坏,但存在一些局限性。选用CIoU替代IoU作为评价目标检测损失的标准。CIoU在IoU的基础上,做了以下两点改进:第一,为了解决IoU在预测框与真实框无重叠区域情况下的无梯度回传问题,定义变量v、α作为惩罚参数。检测框与真实框重叠的情况比非重叠情况拥有更高的优先级,α可以让重叠的情况优先于非重叠的情况公式(5)。第二,IoU仅判断重叠区域面积,忽略了预测目标中心与真实目标中心之间的距离。为了解决该缺点,CIoU使用欧式距离计算两中心点距离。最后,目标检测损失函数如公式(6)所示。

(4)

(5)

(6)

分类损失:采用交叉熵损失函数评价预测类别和真实类别之间的距离[28],如公式(7)所示,

(7)

最后得到优化网络的损失函数如公式(8)所示。

L=λclsLcls+λCIoULCIoU+Lc

(8)

式中:λcls和λCIoU为前置变量,在0~1之间,在本研究中设置为1。

1.5 评价指标

试验用NBFLOS(Billion Float Operations)、AIoU、NmAP( Mean Average Precision)和NFPS(Frames Per Second)评价计算复杂度、平均交并比、平均精确率和每秒计算图像的张数[9]。

(9)

(10)

(11)

(12)

(13)

(14)

(15)

式中:W,H表示输入特征的长和宽;N,M表示输出特征的长宽,K表示卷积核的大小;C,D分别表示常规CNN卷积和Depthwise-Pointwise卷积的卷积个数;N为待检测图像个数;A,B分别表示真实的目标框和预测目标框;tP为正确预测正样本的个数;fp错误预测正样本的个数;fn为错误预测负样本的个数;n为待检测的目标类别数;P表示精确率;R表示召回率;pA表示目标类别精确率;pAi为第i个目标类别的精确率。t为检测时间。

2 试验

2.1 网络训练过程

用Darknet深度学习框架,在Tesla V100显卡(16G),内存为32G的Linux系统进行试验。用SGD优化器在反向传播过程中更新网络权重,初始学习率0.001 3, Momentum为0.949,Decay为0.000 5,初始输入图像为512×512。Batch Size为512,分16次装入显存计算前向传播后,再计算1次反向传播,并在反向传播20 000、40 000次时,将学习率线性缩放为当前学习率的1/10,直到完全收敛。由于ReLU相对于Mish计算量更小,为加快网络训练的速度,先用ReLU激活函数对网络进行热身训练,待权重稳定后,再用Mish激活函数用相同的超参数迁移学习网络,增强网络的鲁棒性;最后试验在83种鱼的2 000张图像测试,测试效果如图6,其平均测试精确率达到94.37%,每类鱼的精确率如图7。

图6 鱼类目标检测与分类结果Fig.6 Fish target detection and classification results

图7 测试集每类鱼的精确率分布Fig.7 Average precision distribution of each species of fish in the test set

2.2 多尺度输入测试

本研究对数据集进行放缩、Mosaic和Cutmix的数据增强,并且head1~2模块中对图像进行了32倍和16倍下采样,输出的张量形状分别为(16,16,256)和(32,32,256),其感受野同时兼顾了大目标和小目标。基于以上两个原因,本研究相比于其他研究[14-17],可让模型对多尺度输入的图像具有泛化能力,可兼容不同尺度的输入图像。经过测试,网络在512×512的图像数据集上训练后,可实现同一网络兼容了6种不同图像输入尺寸,如表1所示。平均精确率和平均交并比评价指标在512×512网络中表现最好,随着图像尺寸的变化,其指标也有所下降。测试结果表明,该网络在不改变输入接口的情况下,兼容了多种输入尺度图像的检测和识别。

表1 多尺度图像指标Tab.1 Multi-scale image index

2.3 网络优化

为定量研究网络调优对评价指标的影响,分别验证了各数据增强、各激活函数和BN的不同组合对目标检测精确率的影响。一共进行了9个不同组的组合试验,对网络进行消融研究,如表2所示。表中结果显示,数据增强Mixup,Cutmix和Mosaic方法对网络识别能力均有提升,其中Mosaic数据增强提高效果最明显;在均使用ReLU激活函数和BN时,3种数据增强方法同时使用时,平均精确率表现最佳;在均同时使用3种数据增强和BN时,平滑的激活函数Swish、Mish和ELU相比于非平滑的ReLU能得到更好的结果,其中使用Mish的效果最好;在均同时使用3种数据增强和Mish激活函数时,使用BN能显著的提高目标检测的平均精确率。

表2 不同数据增强和激活函数的效果Tab.2 The effect of different data augmentation

2.4 与开源网络对比

将YoloV4[9]、YoloV3-tiny[11]和MobilenetV2[19]作为backbone的YoloV3网络在该数据集上迁移学习,作为对照组。在训练过程中,权重每更新1 000次,测试网络的平均精确率和召回率,测试结果如图8 。试验表明,在训练过程中,重量级网络 YoloV4的平均精确率和召回率震荡严重,网络拟合过程不稳定;在轻量级网络中,MobilenetV2-YoloV3、YoloV3-tiny和BTP-YoloV3拟合比较稳定。

图8 训练过程中的平均精确率和召回率Fig.8 mAP and recall rate during training

本研究提出的BTP-YoloV3拟合最快,且平均精确率和召回率较高。试验表明,在卷积之后用BN模块可以加快网络拟合,提高网络性能;在该数据集上用轻量级网络训练更稳定;试验表明,本研究提出的BTP-YoloV3网路采用多次扩张,压缩,残差融合和下采样的方式,用同样的超参数和数据增强方法训练网络的情况下,相比重量级网络YoloV4能更快的稳定的拟合, 相比于轻量级网络MobilenetV2-YoloV3和YoloV3-tiny具有较好平均精确率和召回率。

为综合评价各个网络的指标,试验设置所有网络的Batch Size为1,输入图像大小为512×512,在Tesla V100显卡上进行测试,如表3。重量级网络YoloV4在测试数据上的平均精确率最高,但其计算复杂度太大,权重较大,运行时内存占用高,每秒推理帧数较低。在权重50 MB以内的轻量网络中,YoloV3-tiny,MobilenetV2-YoloV3,BTP-Yolov3均有权重小,测试精确率和运行速度高的特点。本研究设计的BTP-YoloV3相较与其他轻量级网络,每秒推理帧数达到285.7,是推理速度最快的网络。相较于YoloV3-tiny,该网络采用Depthwise卷积减少了计算复杂度和网络权重,提高了推理速度;相较于MobilenetV2-YoloV3,该网络采用了更多的残差,有利于并行计算,提高了推理速度,但其计算复杂度略高;相较于MobilenetV1-SSD[18]在该数据上的表现,BTP-YoloV3提高了平均精确率,优化了网络的权重,在保证目标检测和识别能力的同时,降低了计算成本。

表3 网络试验对比Tab.3 Comparison with other networks

2.4 讨论分析

相较于提高鱼类目标检测识别能力的方案[14,16-17],本研究检测的难度在于平衡网络计算复杂度和识别能力,因此本研究相比于重量级模型YoloV4[9]检测效果稍差;相较于迁移学习[11,18]开源网络,本研究的检测难度在于如何更进一步提高精确率并降低网络权重,因此本研究重新设计了目标检测网络的backbone、增加数据增强、用Mish激活函数的方案,获得了更好的性能。 相较于MobilenetV2[19]作为backbone的YoloV3[11]网络,本研究的网络虽然推理速度更快,但计算复杂度和网络权重有待降低。相较于最前沿的注意力机制[36]和YoloV5[37]网络,本研究在目标检测精度上有待优化。

3 结论

本研究收集、清洗、标注了水族馆鱼类数据集,为鱼类养殖行业提供了种类更加丰富的数据集,并探究了神经网络在实际应用中提高检测速度与识别精确率的优化过程,使用“深度可分离卷积”优化网络结构,大大降低了计算复杂度,提高了推理速度。并探究了3种数据增强和4种激活函数对模型性能的影响。最后,网络的平均测试准确率达到94.37%,网络权重大小仅为13.9 M,计算复杂度仅为5.476,在Tesla V100上每秒推理速度平均达到285.7张;相比于迁移学习传统的网络(YoloV4,MobilenetV2-YoloV3,YoloV3-tiny),该优化网络的方法能够在保证网络识别能力不减弱的情况下,提高了网络的检测和识别速度,降低了运行时能耗,节约了应用成本。为神经网络在鱼类养殖行业的应用中的优化提供了参考。

猜你喜欢

卷积鱼类图像
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
鱼类运动会
基于深度卷积网络与空洞卷积融合的人群计数
A、B两点漂流记
卷积神经网络概述
引发海啸(上)
名人语录的极简图像表达
一次函数图像与性质的重难点讲析
趣味数独等4则