轻量级水下目标检测器LUDet*
2022-09-21喻明毫高建瓴
喻明毫,高建瓴
(贵州大学大数据与信息工程学院,贵州 贵阳 550025)
1 引言
海洋富含各类自然资源可供人类使用。为了提高海洋资源开采的便利性,水下目标检测算法被用来辅助人类或机器人开展水下开采作业。在实际中,水下目标检测能对海洋捕捞事业、海洋军事及海洋环保事业提供更好的便利。但是,海底环境的复杂性加大了检测难度,限制了检测效果。针对海底环境的复杂性,Fabic等人[1]提出的基于形状分类的传统水下检测算法利用斑点计数和形状分析来对水下鱼类进行分类;Oliver等人[2]使用Harris角点检测器结合黑森高检测器对水下目标进行检测。由于针对性较强,难以适用于其他目标,且算法受环境影响较强,所以传统的检测算法不具有适用性,在实际场景中算法性能会急剧衰减。
在图像处理领域,卷积神经网络CNN(Convolution Neural Network)在图像分类、图像分割及目标检测等任务中均已证明了其高效性。CNN通过端到端的方式从大量数据中学习得到一个检测模型,且能够应用于大量目标的检测。自2014年Girshick等人[3]提出基于卷积神经网络的R-CNN(Region-CNN)目标检测器以来,物体识别精度不断提高,但R-CNN系列网络检测速度过于缓慢,难以做到实时检测。Liu等人[4]提出的SSD(Single Shot multibox Detector)虽然提高了检测效率,在模型体积上的考虑还存在不足。YOLO[5,6]在保证一定的识别精度的同时还保持了高效的检测效率。但是,不论是双阶段的R-CNN系列还是单阶段的检测器,其参数量以及浮点运算FLOPs(FLoating OPerations)量都过于庞大,移动端设备需求逐渐增加时,这些网络难以在有限的计算资源下达到较好的效果。
为了在有限的计算资源下达到更好的检测效果,本文设计了一种轻量级的网络,相比大型网络,能够在相同检测效果下消耗更少的资源。目前网络模型轻量级的方向主要是MobileNet网络[7]中提出的的深度可分离卷积以及ShuffleNet系列[8,9]使用的通道混洗操作。深度可分离卷积操作是将普通深度卷积转换为逐通道卷积与1×1点卷积,前者卷积核数与通道数相同以压缩参数,后者使用点卷积来混合通道信息,将每一个输入特征图信息在输出上有所体现;又针对内存访问成本问题说明输入输出通道一致的时候内存访问成本最小,指出了4条轻量级的设计思想,在此基础上设计了ShuffleNet V2结构[9]。基于Iandola等人[10]提出的SqueezeNet模块化思想,本文网络通过模块叠加构成。
目前在轻量级设计中还是大量使用点卷积来压缩参数量,然而过度使用卷积带来的后果就是FLOPs暴增,这已经成为轻量型网络设计的计算瓶颈。在如何去除卷积的同时不增加参数量和FLOPs的研究方面,Prabhu等人[11]结合快速傅里叶变换FFT(Fast Fourier Transform)中的蝶形运算与卷积操作提出了Butterfly Transform,来无限逼近卷积并应用于卷积神经网络中,以降低计算复杂度。Li等人[12]则继续在分解卷积的维度上开展研究,将卷积核矩阵分解为2组自适应卷积。Han等人[13]在研究CNN提取的特征图中发现大量特征图存在冗余,于是利用一部分特征图通过线性变换来生成大量的特征图,并提出了GhostModel。
本文针对DenseNet[14]中的稠密连接进行改进,提出一种两路稠密连接结构;对PeleeNet[15]中的Stem Block进行改进,提出了高效的卷积池化层来获取初始特征。为了避免大量使用点卷积,本文使用GhostModel代替部分点卷积。网络下采样模块Transition Layer遵循ShuffleNet V2中的设计规则,保持输入输出通道不变。
2 Ghost幻影图
已经训练好的卷积神经网络其实含有大量的特征映射冗余。图1是AlexNet由输入图像生成的特征图,从图1可以看到,有很多特征图非常相似。因此,Han等人[13]利用少量的原始特征图通过一系列简单的线性映射来生成更多的特征图。
Figure 1 Visualization of feature maps图1 特征图可视化
映射方式如式(1)所示:
yij=Φi,j(y′i),∀i=1,…,m;j=1,…,n
(1)
其中,y′i是第i个原始特征图,Φi,j(·)是生成第i个幻影图yij的第j个线性运算。一个原始图可以有一个或多个幻影图,如图2所示,其中图2b中的k=i×j。
Figure 2 Original convolution and GhostModel图2 原始卷积与幻影模块
3 网络结构设计
3.1 卷积池化层
现有的轻量级神经网络通过使用深度可分离卷积和通道混洗来减少参数量与计算量,但同时大量点卷积的使用已经成为轻量级网络设计的计算瓶颈。本文构建一种新的网络结构,使用Ghost- Model来代替点卷积,同时结合DenseNet网络连接方式来构造用于水下目标检测的网络。
特征提取是网络构建最重要的部分,为了获得更好的特征表达,开始的特征提取模块使用卷积与池化2种方式来提取特征,最后再通过通道维度相加来合并特征。第1个特征提取模块如图3所示。这样的结构能够极大地提高网络的特征表达能力。PeleeNet中使用点卷积来压缩通道,于是在图3的结构中使用了GhostModel来代替点卷积,在提高特征表达能力的同时减少一定的参数量和FLOPs。图3中stride表示步长,kernel_size表示卷积核尺寸。
Figure 3 ConvPool layer图3 卷积池化层
3.2 两路稠密连接模块
因为在设计轻量级网络时需要考虑计算资源的限制,所以不能构建深度网络来提取特征,且网络层数过深会导致梯度消失,导致网络难以收敛。使用DenseNet稠密连接结构可以较好地解决梯度消失和难以训练的问题,同时可以高效地利用特征图来减少参数,通过将每层的特征图连接起来又可以获得更多特征表达。DenseNet中已证明了模块输入尺寸和输出尺寸相同时网络性能表现更佳,为使kernel_size=5的连接中特征图尺寸不变,在卷积过程中使填充宽度padding=2。增大卷积核尺寸的同时可以增加网络感受野,对目标检测任务更有优势。同时增加一路连接会增加参数,但是增加的连接会通过GhostModel来抵消一部分参数量和计算量。于是构造了如图4b所示的基于GhostModel的两路稠密连接结构,增加了一路连接以获取不同特征。
Figure 4 Dense connection图4 稠密连接
表1中对比了图3的卷积池化层使用点卷积和GhostModel的参数对比,使用GhostModel和1×1卷积在参数量、累计乘加计算次数MAdd及FLOPs上大致都下降了12%;同时对比了图4中的原始稠密结构与两路稠密连接结构参数、MAdd及FLOPs,相比之下本文两路稠密结构在参数等方面高出原始稠密结构15%左右,但是获得了更好的特征表达。
Table 1 Comparison of structure parameters
3.3 网络整体结构
稠密连接结构特征图的输入输出尺寸不变,以便输出特征图和输入特征图在通道维度相连。DenseNet中使用卷积和池化的Transition Layer减小特征图尺寸,同时使用压缩因子压缩特征通道,减小特征图尺寸。但是,根据ShuffleNet V2中的规则以及实验表明,通道压缩因子会降低网络性能,所以本文在Transition Layer中保持输入通道数和输出通道数不变,Transition Layer由GhostModel和平均池化组成。普通卷积部分使用Conv-BN-ReLU的激活模式。靠近输出的GhostModel不使用ReLU。网络整体结构如表2所示,一共有4个阶段:第1阶段由卷积池化层构成,初步提取特征;后面3个阶段由两路稠密连接模块重复组成;最后连接Transition Layer。
Table 2 Overall network structure
Figure 5 Channel attention inechanism图5 通道注意力机制
Figure 6 Architecture of LUDet图6 LUDet整体结构
水下轻量级目标检测器的主干网络构建完毕。本文所使用的检测框架是基于Faster R-CNN的两阶段检测器,但由于检测部分网络过于庞大,会造成头重脚轻的后果,检测效果会大打折扣,因此在检测部分也要使网络趋于轻量化。ThunderNet使用了一种轻量级的检测头,在其基础上,本文将替换检测部分的上下文信息增强模块;替换后的新模块使用多阶段特征经过通道注意力模块,再通过特征融合的方式将每个阶段特征图相加,以增强每个阶段输出特征图的特征表达。本文提出的通道注意力机制如图5所示,通过不同池化方式获取特征权重,构造注意力特征图,图5中R为压缩率,C、H和W分别为卷积核数(即通道数)、卷积核高和卷积核宽。原始特征图分别经过全局最大池化和全局平均池化产生2个C×1×1特征图。得到的特征图经过卷积滤波压缩通道生成新的2个C/R×1×1的特征图。新的特征图恢复通道数并在维度(特征图宽、高)相加,最后与原特征图相乘得到注意力特征图。
网络的整体模型如图6所示。原ThunderNet网络中主干网络与检测网络的连接部分是一个上下文信息增强模块CEM(Context Enhance Model)。CEM类似于特征金字塔网络的结构,本文将LUNet(Lightweight Underwater Net)的stage2、stage3及全局平均池化后所得到的特征图经过图5中的通道注意力机制进行特征融合,形成通道注意力模块CAM(Channel Attention Model),以此提高网络的特征表达能力。可见,本文以改进的两路稠密连接结构结合GhostModel构造LUNet,并基于Faster R-CNN检测框架提出了一种新颖的轻量级水下目标检测器LUDet(Lightweight Underwater object Detector)。
4 实验结果及分析
4.1 数据集来源以及数据处理
本文为水下目标检测搜集了2个数据集。一个是水下生物数据集,来自大连理工大学-獐子岛联合实验室采集的水下地形、地貌和生物等图像数据集RUIE,开源地址为https://github.com/dlut-dimt/RealworldUnderwater-Image-Enhancement-RUIE-Benchmark。该数据集中含有海胆(echinus)、海参(holothurian)、海星(starfish)和扇贝(scallop)4类海底生物,收集的原始数据集包含4 756幅图像,但有一些图像并未标记,处理后数据集中含有4 540幅图像。将数据集制作成Pascal VOC数据集的格式以便训练,其中测试集455幅图像,验证集613幅图像,训练集3 472幅图像。
另一个是水下垃圾检测数据集[16]。该数据集中含有3类垃圾:全部塑料垃圾Plastic、人为放置在水下环境中的物体ROV和所有的天然生物材料,包括鱼类、植物和一些生物碎屑Bio(Biological detritus),一共8 821幅图像。同样制作成Pascal VOC数据集格式,其中测试集、验证集和训练集分别有883,1 191和6 747幅图像。评价指标与Pascal VOC数据集的相同。
同时本文对LUNet使用开源数据集CAFIR10和CAFIR100进行分类性能验证。CAFIR10和CAFIR100由Alex Krizhevsky收集(http://www.cs.toronto.edu/~kriz/index.html)。
4.2 实验环境配置及评价指标
本文实验操作系统为Ubuntu18.04,处理器为Intel Xeon Silver 4210。使用PyTorch框架对模型进行训练、测试和可视化分析。分类实验初始学习率设置为0.1,检测实验初始学习率设置为1e-6,都随训练迭代次数的增加而减小。
评价指标使用AP与mAP,AP表示各个类别的PR曲线下的面积,mAP表示各个类别的AP平均值。
4.3 分类实验
为了验证轻量级骨干网LUNet的性能,在CAFIR10和CAFIR100数据集上进行分类实验,先基于CAFIR10数据集验证网络的有效性,然后基于CAFIR100数据集与现有其它轻量级网络进行对比。
图7和图8显示了LUNet在CAFIR10数据集上的实验结果。在训练集和验证集上的混淆矩阵(如图8所示)说明了每个类的分类效果。LUNet在CAFIR10验证集上的准确率为89.03%,在训练集上的准确率为98.89%。从图7可以看出,LUNet在CAFIR10验证集上的损失在第96次epoch之后便不再下降,在验证集上趋于拟合状态,同时准确率变化趋于稳定。
Figure 7 Accuracy and loss curves of LUNet on training set and validation set图7 LUNet在训练集与验证集上的准确率曲线与损失曲线
Figure 8 Confusion matrix图8 混淆矩阵
另外,还在CAFIR100数据集上进行分类对比实验。此数据集一共有100个类,每个类有600幅图像,其中500幅组成训练集,100幅组成验证集。采用的评价指标是Top1错误率和Top5错误率。实验结果如表3所示。表3中的参数量与表2中的不同,是因为最后全连接层输出只有100维。
Table 3 Experimental results of networks on CAFIR100 data set
从表3可知,本文轻量级网络在保持极低参数量和FLOPs的同时只损失了小幅度的准确率。通过在CAFIR10和CAFIR100数据集上的实验表明了LUNet作为轻量级网络的有效性与效率。在CAFIR100上的损失曲线如图9所示。
Figure 9 Loss of LUNet training图9 LUNet训练损失
4.4 目标检测实验
本文使用5种检测器与本文提出的检测器进行对比,其中YOLOv4、M2Det、SSD和PeleeNet属于单阶段检测器,同时PeleeNet又是轻量级检测器,ThunderNet(1、2、3)属于轻量级双阶段检测器,本文所提检测器同样是两级检测器。图10表示LUDet在2个水下目标检测数据集上训练过程的损失曲线,随着迭代过程损失逐渐趋于平缓,说明检测器也逐渐趋于拟合状态。
表4中对比了各个检测器在水下垃圾检测数据测试集上的测试效果。本文检测器的mAP值在所有检测器中排名第2,其中对于Bio本文检测器LUDet的检测效果最好。但是,根据表5中的对比模型结构,本文所构造的网络大小仅1.1 MB,是检测效果最好的SNet_535模型参数量的26.4%,FLOPs也下降71.6%左右;参数约与PeleeNet检测器的相差不多,FLOPs对比PeleeNet下降了41.6%左右。
Table 4 Test results on underwater garbage dataset
Table 5 Comparison of parameters of the first three detectors
Figure 10 Training Loss curves of two datasets图10 2个数据集训练损失曲线
表6中是各个检测器在水下生物数据集测试集上的检测结果。LUDet对所有类别检测的mAP为52.5%,比PeleeNet的高出7.1%,比ThunderNet3的高出6.3%,相比垃圾检测数据集上的检测结果,此数据集检测效果更好,说明结合通道注意力的CAM模块在尺度变换下网络的稳定性较好。表6中网络的Backbone设置与表4中的相同。
Table 6 Test results on underwater biological dataset
4.5 速度测试
为了测试基于LUNet的轻量级水下目标检测器的检测速度,使用水下垃圾数据集的测试集进行速度测试,使用表4中的检测网络进行测试的结果如图11所示。可以看到,本文的轻量级检测器速度与AP之间达到了很好的平衡,本文检测器的每秒传输帧数FPS(Frames Per Second)为37。
Figure 11 Results of speed test图11 速度测试结果
本文检测器在2个数据集上的图像测试结果如图12所示,在水下生物数据集中有大量的小目标,水下环境也复杂多样,但检测效果比较稳定,且检测中存在的冗余检测框可以通过提高IoU阈值来解决,这是目标检测领域中的一种常规做法。
Figure 12 Test results of images图12 图像测试结果
5 结束语
为了提高特征表达能力,本文在构造网络时使用卷积和池化2条连接来获取不同的特征映射,同时还将点卷积替换为GhostModel,以降低参数量和计算量。同样基于获取不同特征映射的考虑,在网络下一阶段使用两路的稠密连接,稠密连接本身是将卷积后的特征图与原特征图连接,以获得不同特征表达,在使用了两路稠密连接之后,比原始连接获得的特征表达更为丰富,以此提高网络性能。在特征提取网络部分和检测网络部分,没用使用原框架中的CEM模块,而是将后2个阶段输出的特征图及最后阶段输出经过全局池化后的特征图通过通道注意力模块进行特征融合,因为不同大小的特征图对不同大小的目标检测效果不一样,小目标需要大特征图,所以此模块在检测不同大小目标时效果更好。