对鱼类进行检测识别是对海洋生物进行了解及保护的重要基础. 但由于海洋环境的复杂, 光照不均匀、水中杂质、遮挡物多等因素, 造成采集到的鱼类图像能见度、对比度较低, 加大了识别的难度, 容易造成误检情况. 鱼类的准确定位和高效识别是实现水下智能作业的关键.
传统的鱼类目标检测流程是先采用滑动窗口对图像遍历产生候选区, 使用SIFT、HOG进行特征提取与相应的分类器SVM等结合综合判断进行分类. 滑动窗口为区域选择策略的基础是此类方法的关键难点, 导致了时间复杂度高和针对性低; SIFT、HOG等传统算子对多样性的变化适应性不强, 导致特征鲁棒性差.
最近几年, 人们在计算机视觉领域取得了累累硕果, 深度学习方面技术提高颇多, 鱼类目标检测也开始广泛应用卷积神经网络(CNN), 这些都是来源于CNN出色的特征提取能力. 当前基于CNN的目标检测算法主要分为两大类, 一类是RCNN[1]、Faster RCNN[2]为代表的双阶段(two-stage)目标检测算法, 一类是YOLO[3]、SSD[4]、Retina-Net[5]为代表的单阶段(one-stage)目标检测算法. Two-stage算法首先用到了启发式方法(selective search)或者使用RPN结构产生一系列的候选框, 下一步通过使用CNN对样本做回归和分类, 因此这种方法检测的准确率与其定位精度较高, 但需要牺牲检测速度为代价; 而one-stage算法则能够将目标边框定位问题直接转变为回归问题并进行处理, 由于略去了候选框, 因此这种方法检测速度较快, 但检测准确度会比two-stage方法略逊一筹.
Alsmadi等[6]使用反向传播神经网络、决策树算法以及灰度共现矩阵对20类鱼识别分类, 在其特定的测试集上取得了84%的准确率. 李庆忠等[7]将改进的YOLO算法和迁移学习结合出一种Underwater-YOLO网络模型, 针对小目标和位置重叠鱼类进行有效检测, 准确率达93%. 王亚茹等[8]采用改进的FML-Centernet网络模型进行鱼类识别检测, 识别平均精度AP50可达到85.99%, 平均检测时间在100 ms以内. 覃学标等[9]提出了增强混合的鱼类检测方法, 有效地改善了模糊水下图像造成的精度退化问题.
通常我们用到的双阶段目标检测算法以及一些单阶段目标检测算法, 例如YOLO算法, 其工作原理是先于原图片中预定义锚框(Anchor), 再通过神经网络进行一系列调整, 最后预测的目标结果源于以上操作得到的边界框. 此类方法参数多计算繁琐, 因此识别效率低. 而基于无锚框(Anchor-free)的算法如CenterNet[10]、FCOS[11]、CornerNet[12], 通过CNN提取特征之后, 取消预先定义锚框, 直接在经过卷积得到的特征图(feature map)上进行预测, 降低检测的复杂度, 既提高检测速度又能保证精度.
FCOS (fully convolutional one-stage object detection)是一种基于无锚框的全卷积、单阶段逐像素目标检测算法, 总的来说有以下几点优势: 超参数减少, 使得训练更容易, 速度有所提高; 无锚框可以不用计算GT boxes与anchors之间的IoU, 内存和计算量减少; FCOS还可以作为two-stage检测器的RPN. FCOS不仅保证了算法的检测精度且减少了算法复杂度, 可以很方便地扩展去解决其他任务, 比如鱼类检测识别. 本文针对水下鱼类图像检测的难点问题, 提出通过FCOS网络对鱼类进行分类检测, 通过使用MobileNetv2轻量级模型作为骨干网络减少计算量, 提升模型推理速度满足实时性; 同时在FPN上引入ASFF避免尺度特征的不一致性, 提高检测精度; 对损失函数进行改进, 针对梯度消失问题, 使用GIOU损失来解决.
1 改进FCOS的鱼类目标检测模型FCOS网络模型主要分为3个部分: 第1部分骨干网络(Backbone)、第2部分特征金字塔(feature pyramid networks, FPN)和第3部分检测头(Head), 其中回归、中心度和分类3个分支构成了检测头部分.
1.1 改进FCOS网络的检测模型设计FCOS默认使用ResNet-50[13]作为网络的骨干, 本文在特征提取方面, 引入深度可分离卷积, 骨干网络使用MobileNetv2[14], 并且也保证了网络的检测精度, 相较于ResNet-50, 使用MobileNetv2可以压缩模型, 同时降低了参数量和计算量, 模型推理速度会有所提升, 从而提高对鱼类实时检测性; 通过骨干网络输出的特征图经过特征金字塔处理得到5层新的特征图, 对下层的3层使用ASFF共享语义特征; 将5层特征输入到共享的检测头中, 将center-ness分支引入到回归分支, 在检测头部分进行回归分类. 改进后的FCOS网络模型如图1所示.
首先对输入的图片进行预处理操作, 输入到Backbone网络中获得特征图(feature map) C3、C4和C5; 在FPN部分, 特征图P5直接由C5经过1×1卷积生成, P4和P3分别由C4和C3经1×1卷积上采样与P5和P4相加融合得到, P6和P7是特征图P5进行3×3卷积的2倍下采样得到, 该方法既减少了参数数量, 又增强了特征图语义, 因此最终效果也有所提高. 最终得到了5个级别的特征映射{P3, P4, P5, P6, P7}, 下采样步长stride分别为8、16、32、64、128, 即通过FPN, 将大小不一的对象被不同级别的特征图检测出来. 对P3、P4、P5融合ASFF, 得到ASFF-1, ASFF-2, ASFF-3, 将{ASFF-1, ASFF-2, ASFF-3, P6, P7}这5层特征输入到共享检测头中.
1.2 深度可分离卷积
标准卷积的计算量为:
DW卷积+PW卷积的计算量为式(1):
$ D_K \times D_K \times M \times D_F \times D_F+M \times N \times D_F \times D_F=\frac{1}{N}+\frac{1}{D_K^2} $ | (1) |
由此可见, 标准卷积计算量是深度可分离卷积的8–9倍, 深度可分离卷积在极大程度减少模型参数的同时, 又显著加快了计算速度.
1.3 自适应空间特征融合金字塔特征表示常用来解决目标检测当中目标尺度变化, 特征金字塔主要是引入了一条自上而下的路径, 对低分辨率和语义丰富的特征进行上采样, 并与网络骨干中输出的高分辨率和语义稀少的特征进行横向结合, 最终形成了一个在各层次上语义共享的特征金字塔. 但对one-stage检测器而言, 在内部不同特征尺度之间不一致性是其主要弊端. 为了解决这一问题, 本文融入自适应空间特征融合(ASFF), ASFF学习了空间滤波冲突信息以抑制不一致性的方法, 针对有利用价值的信息保留后再加以组合, 提高特征尺度的不变性, 并且引入的计算开销很小, 实现简单. ASFF[15]网络结构如图3所示.
ASFF思想的实现可分为两步: 恒等缩放与自适应融合. 以ASFF-3为例, 融合后的特征ASFF-3为level1–level3三个尺度图的特征与融合的权重参数α, β和γ相乘再相加的结果, 权重自适应调整, 这样对学习不同特征尺度在预测特征图的贡献度方面效果更佳. 最终得到第l层特征图的式(2)为:
$ y_{{{ij}}}^l = \alpha _{ij}^l \cdot {\mathbf{x}}_{ij}^{1 \to l}{\text{ + }}\beta _{{{ij}}}^l \cdot {\mathbf{x}}_{ij}^{2 \to l} + \gamma _{ij}^l \cdot {\mathbf{x}}_{ij}^{3 \to l} $ | (2) |
其中,
$ \alpha _{ij}^l + \beta _{ij}^l + \gamma _{ij}^l = 1 $ | (3) |
$ \alpha _{ij}^l = \frac{{{e^{\lambda _{{\alpha _{ij}}}^l}}}}{{{e^{\lambda _{{\alpha _{ij}}}^l}} + {e^{\lambda _{{\beta _{ij}}}^l}} + {e^{\lambda _{{\gamma _{ij}}}^l}}}} $ | (4) |
1.4 损失函数
FCOS损失函数由3部分组成
低质量预测框通常是由远离物体中心的像素点产生, 中心度center-ness是为了降低其得分, 使经过NMS后更靠近鱼类中心的像素点生成的高得分框排在前面. 中心度表示从该位置到该位置负责的对象中心的标准化距离,
$ {\textit{center-ness}}^* = \sqrt {\frac{{\min ({l^*}, {r^*})}}{{\max ({l^*}, {r^*})}} \times \frac{{\min ({t^*}, {b^*})}}{{\max ({t^*}, {b^*})}}} $ | (5) |
中心度取值范围从0到1, 位置点越靠近真实框中心, center-ness的预测目标越接近1, 因此使用二进制交叉熵(BCE)损失进行训练. 中心度的作用是可以降低距离对象中心较远的边界框分数的权重, 所以在高概率情况下, 非最大抑制(NMS)会将这些低质量的边界框给过滤掉, 检测性能进而得到显著提高.
1.4.2 分类损失在鱼类数据集中, 有的鱼数量较少, focal loss可以在不影响检测速度的情况下, 用来解决鱼类目标检测当中样本比例严重不平衡的问题, 降低简单样本的内部加权, 从而更关注难分类的鱼类样本. 分类损失
$ {L_{{\rm{cls}}}}({p_{x, y}}, p_{x, y}^*) = - {\alpha _t}(1 - p_{x, y}^t){}^\gamma \log (p_{x, y}^t) $ | (6) |
其中,
在FCOS中使用交并比(intersection over union, IoU)进行回归损失, IoU表示BBox (bounding box)框和GT (ground truth)框的交并集之比, 如式(7)所示:
$ IoU = \frac{{\left| {A \cap B} \right|}}{{\left| {A \cup B} \right|}} $ | (7) |
其中, A、B分别表示预测框与真实框面积, IoU取值范围[0, 1]. 虽然IoU loss (LIoU)能很好地反应预测框和真实框之间的相关程度, 但是在BBox与GT不相交的时候IoU值为0, 无法计算LIoU, 梯度也为0, 不能进行反向传播, 从而也无法回归; 当预测框与真实框有IoU时, 二者重合率大小是IoU无法正确预测的. 式(8)为LIoU计算公式:
$ {L_{{\rm{IoU}}}} = 1 - IoU $ | (8) |
GIoU可以解决BBox与GT因无重叠而造成的梯度消失问题, 聚焦在重叠区及其他的非重叠区域, 而IoU只聚焦在重叠区域. GIoU的公式如式(9)所示:
$ GIoU = IoU - \frac{{\left| {C(A \cup B)} \right|}}{C} $ | (9) |
其中, C表示BBox与GT最小外接矩阵的面积, GIoU取值范围为[–1, 1]. 当BBox与GT相重合, 即三者面积相等, GIoU=IoU=1; 当BBox框与GT框不相交且两者距离无穷远时, GIoU=–1. GIoU loss (LGIoU)在LIoU之后加了一个惩罚项, 因此可以在不重叠时, 预测框向目标框移动, LGIoU的计算公式为式(10):
$ {L_{{\rm{GIoU}}}} = 1 - GIoU $ | (10) |
模型整体损失函数可用式(11)表示:
$ \begin{split} & L\left( {\left\{ {{p_{x, y}}} \right\}} \right., \left. {\left\{ {{t_{x, y}}} \right\}} \right) = \frac{1}{{{N_{{\text{pos}}}}}}\sum\limits_{x, y} {{L_{{\rm{cls}}}}({p_{x, y}}, c_{x, y}^*)} \\ &\quad + \frac{{{\lambda _1}}}{{{N_{{\rm{pos}}}}}}\sum\limits_{x, y} I \left\{ {c_{x, y}^* \gt 0} \right\}{L_{{\rm{reg}}}}\left( {{t_{x, y}}, t_{x, y}^{\text{*}}} \right) {\text{ + }}\frac{{{\lambda _2}}}{{{N_{{\text{pos}}}}}} \\ &\quad\sum\limits_{x, y} {I\left\{ {c_{x, y}^* \gt 0} \right\}} {L_{{\text{center-ness}}}}\left( {{\textit{center-ness}}_{x, y}, {\textit{center-ness}}_{x, y}^*} \right) \\ \end{split} $ | (11) |
其中,
本文图像数据采用Fish4Knowledge (F4K) 公开数据集中的23类鱼类图像(数据集图像如图4所示), 以及从F4K鱼类视频中以帧截取图片组成. 图像分辨率缩放至240×320像素, 采用LabelImg标注软件工具对数据集图像进行手工标注, 并生成XML文件供检测使用.
2.2 数据增强
由于每种鱼类数量不一, 因此对鱼类图像数据集使用旋转、缩放、水平镜像、明亮度、对比度调整等方式进行数据增强, 同时将图像对应的标注文件进行相应的调整使得标签完整. 最终数据增强后的F4K数据集共获得34920幅图像, 视频帧图像共1760幅, 使用8:2的合适比例, 将两种数据集各自划分为训练集和验证集.
3 结果与分析 3.1 模型训练平台本文试验平台主要配置环境为Windows 11操作系统, CPU为8核16线程Intel i7-11800H, GPU为NVIDIA RTX 3060, CUDA版本为11.0, CuDNN版本为8.0.3, 基于PyTorch 1.9框架下Python版本为3.7进行训练和测试.
3.2 模型实施本文试验利用迁移学习, 将在ImageNet上进行预训练后得到的MobileNetv2模型参数迁移到本实验中, 以更好地获得模型鲁棒性以及提高模型精度. 训练过程中, 参数调整如下: 动量(monentum)、权重(weight-decay)和学习率(learning rate)分别设置为0.9、0.0001和0.001, 更新模型参数使用的优化器为SGD (stochastic gradient descent), 权值更新采用BN (batch nomalization)正则化, batch size设置为16, 共迭代90000次.
本文在测试集使用各类AP (average precision), 最终检测结果的评价指标将使用平均值mAP. 根据训练日志中得到的数据, 绘制损失变化曲线, 如图5所示, 图5(a)表示以F4K为数据集得到的总损失变化, 以及分别展示训练过程中分类分支、回归分支、center-ness三分支的损失变化. 从图5可知, 改进之后损失函数在前3000轮迅速下降.
以视频帧截取图片为例, 展示该模型检测识别结果图, 如图6所示.
从图6可以看出水下环境模糊、杂质较多、光照不均匀, 但本文模型可以准确定位鱼类目标, 并且可以极大程度上准确识别该目标鱼类.
3.3 不同网络模型的对比试验将本文研究算法与其他学者在F4K数据集上的成果进行比较, 如表1所示. 董绍江等[16]提出了一种可以降低计算量且能保证精度的分层精简双线性注意力网络, 精度达到98.04%; 顾郑平等[17]通过使用迁移学习得到预训练网络特征, 再结合SVM算法进行分类, 取得了98.6%的准确率; 焦明连等[18]把密集卷积网络结合到了胶囊网络中, 为了更新权重, 使用了动态路由算法, 提出了一种改进的胶囊网络(CapsNet+DenseNet), 在F4K数据集上精度达到98.83%; 赵力等[19]通过对卷积神经网络改进提出了非对称交互分支网络, 使得模型中的局部特征和全局信息的学习能力有所提高, 在F4K数据集上取得了98.9%的准确率. 贾宇霞等[20]在结合了迁移学习方法之后, 提出了一种可以实现图像主体自动增强功能的鱼类识别模型, 在F4K数据集上取得了较高的检测精度, mAP达到99.63%; 本文提出的模型在F4K上可以达到99.79%的准确率.
3.4 对比试验
将F4K数据集与截取的视频帧图片放在模型中分别进行对比试验. 首先是对F4K数据集进行测试, 结果如表2所示. 可以看到以ResNet50为骨干网络时检测精度是98.67%, 以MobileNetv2为骨干网络时检测精度可以达到98.37%, 准确率略有降低, 由于MobileNetv2为轻量级模型, 参数及计算量较少, 因此检测速度有所提升; 将center-ness分支从分类分支换到回归分支, 损失函数使用GIoU, 且特征金字塔融合ASFF之后, 其mAP比原FCOS均有提升, 模型的平均检测时间只牺牲了不到1 ms.
为进一步检测网络本文对视频帧图片进行测试, 结果如表3所示. 本文的改进网络相比于只用MobileNetv2骨干网络的检测效果提升了1.62%. 由此说明改进的FCOS能够在保证检测速度的前提下提升网络的检测性能.
4 结论
本文提出了一种基于FCOS的自适应特征融合鱼类检测识别算法. 该算法将从MobileNetv2骨干网络中提取的特征输出到特征金字塔中, 提高了网络的检测速度; 再将自适应空间特征融合(ASFF)与特征金字塔部分融合, 避免特征尺度的不一致性; 使用GIoU损失替换IoU损失, 解决预测框与真实框之间无重叠造成的梯度消失问题, 将center-ness分支引入到回归分支, 进一步提升模型精度. 最终实验结果表明, 本文所提出的网络模型在鱼类公共数据集进行检测, 其检测精度与识别速度均有所提升, 对海洋鱼类检测与识别有很好的适应性.
[1] |
Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation. 2014 IEEE Conference on Computer Vision and Pattern Recognition. New York: IEEE, 2014. 580–587.
|
[2] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031 |
[3] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv:1804.02767, 2018.
|
[4] |
Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector. Proceedings of the 14th European Conference on Computer Vision. Cham: Springer, 2016. 21–37.
|
[5] |
Lin TY, Goyal P, Girshick R, et al. Focal loss for dense object detection. Proceedings of the 2017 IEEE International Conference on Computer Vision. Venice: IEEE, 2017. 2999–3007.
|
[6] |
Alsmadi MKS, Bin Omar K, Noah SA, et al. Fish recognition based on the combination between robust features selection, image segmentation and geometrical parameters techniques using artificial neural network and decision tree. International Journal of Computer Science and Information Security, 2016, 6(2): 215-221. |
[7] |
李庆忠, 李宜兵, 牛炯. 基于改进YOLO和迁移学习的水下鱼类目标实时检测. 模式识别与人工智能, 2019, 32(3): 193-203. DOI:10.16451/j.cnki.issn1003-6059.201903001 |
[8] |
王亚茹, 刘雨青, 黄璐瑶. 基于FML-Centernet算法的鱼类识别检测方法. 激光与光电子学进展, 2021: 1–15, http://kns.cnki.net/kcms/detail/31.1690.tn.20210712.1608.016.html, 2022-06-26.
|
[9] |
覃学标, 黄冬梅, 宋巍, 等. 模糊水下图像多增强与输出混合的鱼类检测方法. 农业机械学报, 2022, 53(7): 243-249. DOI:10.6041/j.issn.1000-1298.2022.07.025 |
[10] |
Zhou XY, Wang DQ, Krähenbühl P. Objects as points. arXiv:1904.07850, 2019.
|
[11] |
Tian Z, Shen CH, Chen H, et al. FCOS: A simple and strong anchor-free object detector. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2022, 44(4): 1922-1933. |
[12] |
Law H, Deng J. CornerNet: Detecting objects as paired keypoints. International Journal of Computer Vision, 2020, 128(3): 642-656. DOI:10.1007/s11263-019-01204-1 |
[13] |
He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016. 770–778.
|
[14] |
Sandler M, Howard A, Zhu ML, et al. MobileNetv2: Inverted residuals and linear bottlenecks. 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 4510–4520.
|
[15] |
Liu ST, Huang D, Wang YH. Learning spatial fusion for single-shot object detection. arXiv:1911.09516, 2019.
|
[16] |
董绍江, 刘伟, 蔡巍巍, 等. 基于分层精简双线性注意力网络的鱼类识别. 计算机工程与应用, 2022, 58(5): 186-192. DOI:10.3778/j.issn.1002-8331.2009-0349 |
[17] |
顾郑平, 朱敏. 基于深度学习的鱼类分类算法研究. 计算机应用与软件, 2018, 35(1): 200-205. DOI:10.3969/j.issn.1000-386x.2018.01.035 |
[18] |
焦明连, 朱鹏, 蓝玉珍, 等. 胶囊网络的海洋鱼类图像分类方法. 江苏海洋大学学报(自然科学版), 2020, 29(3): 54-58. |
[19] |
赵力, 宋威. 基于非对称双分支交互神经网络的水下生物识别. 计算机应用研究, 2021, 38(4): 1240-1244, 1255. DOI:10.19734/j.issn.1001-3695.2020.03.0083 |
[20] |
贾宇霞, 樊帅昌, 易晓梅. 基于显著性增强和迁移学习的鱼类识别研究. 渔业现代化, 2020, 47(1): 38-46. DOI:10.3969/j.issn.1007-9580.2020.01.006 |