基于YOLOv4算法的集装箱破损检测方法
2021-01-06马林朱昌明周日贵
马林 朱昌明 周日贵
摘要:针对港口集装箱破损检测的算法较少,并且存在检测速度慢、检测精度低的问题,本文提出一种基于改进的YOLOv4卷积神经网络的集装箱破损检测方法。通过改进的K均值聚类算法获取集装箱数据集的锚点框,结合焦点分类损失函数,减少易分类样本的损失;引入α平衡因子调节正负样本的不均衡,使检测结果更加精确。实验结果表明,改进后的YOLOv4算法比目前流行的算法在明显破损检测及小目标破损检测上具有更好的效果,且不会明显增加检测时间,在集装箱破损检测等方面具有较高的实用价值。
关键词: 港口应用; YOLOv4; K均值聚类; 焦点分类损失函数; 破损检测
中图分类号: TP391.41 文献标志码: A
Abstract: There are few algorithms for port container damage detection, and there are problems of slow detection speed and low detection accuracy. Aimed at the problems, an improved YOLOv4 convolutional neural network is proposed for container damage detection. The anchor frame of the container dataset is obtained by an improved K-means clustering algorithm, and the focus classification loss function is combined to reduce the loss of easily classification samples. The α balance factor is introduced to adjust the imbalance between positive and negative samples, which makes the detection results more accurate. The experimental results show that, compared with the current popular algorithm, the improved YOLOv4 algorithm is of better effect on obvious damage detection and small target damage detection, and the detection time does not significantly increase, so it has a higher practical value in container damage detection.
Key words: port application; YOlOv4; K-means clustering; focus classification loss function; damage detection
0 引 言
随着全球经济一体化发展,越来越多的国际贸易货物需经由港口运输,港口作业的高效和安全变得越来越重要,而集装箱的智能化管理是影响港口作业效率的主要因素之一。为此,一些学者提出了箱号识别,如:WANG等[1]采用一种基于深度学习的目标检测算法Faster-RCNN对集装箱箱号进行检测识别;BU等[2]采用改进的区域生成网络实现箱号检测,再通过CNN對目标字符进行识别;马欣欣等[3]将传统的加权模板算法应用到集装箱检测上。针对破损检测方面的研究,江南等[4]对单个绝缘子利用图像处理技术进行定位检测,杨鹏等[5]结合信息熵与低秩张量之间的差熵检测破损区域。这些利用传统机器学习检测破损区域的方法有2个缺点:(1)无法达到实时检测;(2)对复杂的自然场景的检测准确率低。对比传统学习方法,当前深度学习算法有更好的目标检测效果。2017年,LIN等[6]提出焦点分类损失函数,解决了目标检测中正负样本不均衡的问题。本文基于已有的研究,结合集装箱数据集和箱顶洞破损特征,采用YOLOv4[7]算法和焦点分类损失函数调整检测类别的目标权重,使模型更注重对明显破损区域和划痕或小孔等区域的检测;使用K均值聚类[8]生成集装箱数据集的锚点框,提高检测准确性。最后,通过实验结果证明,本文方法可以同时提高集装箱破损检测的平均精度和速度。
1 YOLOv4算法
1.1 YOLOv4算法原理
YOLOv4[7]算法以YOLOv3算法为基础,在特征提取网络的修改、网络训练方法、激活函数运用、损失函数的改进以及数据预处理等各方面做出改进。该算法主要由特征提取层、特征融合层和预测层3个部分组成,具体结构见图1。
图1中,CBM块为卷积层、归一化和Mish激活函数的结合;CBL块为卷积层、归一化和Leaky激活函数的结合;Res为两个CBM块加上跳层连接组合;SPP是空间特征金字塔池化,由3个池化层组成。
1.2 YOLOv4算法核心
YOLO网络是一种基于深度学习的单阶段目标检测算法,具有较快的检测速度,在实际应用中也取得了较好的效果。YOLO网络将输入的图片划分为大小为N×N的网格,当破损区域落入某个网格中时,由该网络负责检测目标[9]。与其他单阶段算法相比,YOLO能够更加有效地检测不同尺度的目标区域,同时YOLO在速度性能上表现突出,可以满足港口集装箱破损检测的需求。
YOLOv4[7]的网络结构比YOLOv3的更复杂,它主要是在YOLOv3的基础上进行了以下改进:
(1)输入端。对输入图像数据进行Mosaic数据增强,通过分别对4张图片进行翻转、缩放、色域改变等,并且按照4个方向位置摆好,进行图像的组合,极大地丰富了检测物体背景。
(2)主干特征提取网络。在每个Darknet53中添加CSP模块[10],并且在主干网络中使用Mish激活函数,同时使用Dropblock正则化方式随机删除神经元,防止过拟合。
(3)特征融合模块。在特征提取网络与最后的输出层之间添加SPP[11]模块和PANet[12]模块,使网络进行多尺度特征信息融合。
(4)预测模块。在3个不同尺度的特征图上分别对大、中和小目标进行检测预测,在特征图上应用锚点框,并生成带有类概率、对象得分和包围框的最终输出向量[6]。
2 YOLOv4网络模型改进
2.1 锚点框更新
锚点框的大小对于YOLOv4网络十分重要,若初始边界框参数更接近真实边界框,则模型收敛速度会更快,并且预测边界会更加贴合真实边界框。
YOLOv4算法在训练前可通过K均值聚类算法对相应标注集中的边界框宽、高进行聚类,以获得初始边界框尺寸。由于在标准K均值聚类算法中用欧氏距离度量两点间的距离,较大边界框的尺寸误差比较小边界框的大。为提高检测准确率,对K均值聚类算法进行优化。根据交并比的重叠度选取更适合的锚点框,采用如下距离公式[13]使边界框交并比的大小与边界框尺寸无关。
为验证引入焦点分类损失函数的有效性,将原网络结构与本文设计的网络结构进行对比。其中焦点分类损失函数参數γ=2,α1、α2、α3分别设置为1、2、2。这里针对不同类别设置权重,可以使模型更加注重检测明显破损区域、小目标(划痕或小孔)。由表3可知,本文设计的网络结构比YOLOv3在槽、明显破损区域的检测精度上都有明显提升,明显破损区域的检测平均精度由35.29%上升到73.46%,小目标的检测平均精度则由22.60%上升到31.57%。本文设计的网络结构比YOLOv4在检测明显破损区域和小目标上也有明显的提升。另外,本文改进的算法比原算法在平均精度均值上提升了6.46%,这表示改进后的算法减少了小目标的漏检、误检等情况,提高了算法性能。
运行时间增加是因为检测到了更多的目标。对小目标检测的平均精度不太高是因为数据集是人工标注的,可能存在对小目标区域漏标、多标等情况。另外,对于划痕或小孔等小目标的检测,自然场景数据集会产生许多的干扰,如集装箱上的黑漆、锈迹、水渍、光照等[19-20]。
为验证本文算法的有效性,表3展示几个比较有名的算法的性能比较,其中:SSD512[15]采用不同的卷积对不同特征图进行检测;Efficientdet-d0、Efficientdet-d1[21]具有可扩展体系结构,其主要利用反复自上向下和自下向上的特征融合,将特征进行回归和分类。
由表3可知,本文算法具有最优的表现。图2展示的是算法改进前后目标检测的效果图,其中:蓝色框表示槽(类别1)的部分;黄色框表示明显破损部分(类别2);红色框是划痕或小孔部分(类别3);各个框的上方是对预测类别的置信度得分。由图2可见,本文算法对集装箱破损检测的效果很好。
4 总结和未来工作
港口集装箱破损智能化检测将是大势所趋,故本文针对集装箱破损检测设计了一种改进的YOLOv4算法。首先采用优化的K均值聚类算法获得特定数据集合适的锚点框,接着对小目标分类损失函数权重进行修改,使正负样本不平衡问题得到充分缓解。经测试发现,本文算法比目前流行的算法在明显破损区域和小目标(划痕或小孔)检测方面具有较好的检测效果,比未改进YOLOv4算法的平均精度均值提升了10%左右,其中对明显破损区域和小目标的检测平均精度分别上升了10.57%和13.53%。
本文以YOLOv4算法作为主要网络架构,主要贡献如下:(1)针对在集装箱破损检测中对明显破损区域和小目标定位不准确问题,通过对数据集进行聚类处理,获取更准确的锚点框。(2)对分类损失函数进行修改,使集装箱破损正负样本不均衡问题得到缓解,提高了检测效果。
未来集装箱破损检测研究可以关注以下问题:(1)针对数据集标注问题、小目标检测平均精度低的问题,划分更规范的标注标准,减少检测错误和误检测。(2)减少光照、雨水等对图像的干扰。
参考文献:
[1] WANG Zhiming, WANG Wuxi, XING Yuxiang. Automatic container code recognition via Faster-RCNN[C]//International Conference on Control, Automation and Robotics (ICCAR). 2019: 870-874. DOI: 10.1109 / ICCAR.2019.8813401.
[2] BU Wanghui, YAN Shuang, CHEN Jing, et al. Visual recognition of container number with arbitrary orientations based on deep convolutional neural network[C]//2018 10th International Conference on Intelligent Human-Machine Systems and Cybernetics. IEEE, 2018: 204-207. DOI: 10.1109/IHMSC.2018.10153.
[3] 马欣欣, 李小平. 集装箱箱号字符识别关键技术的研究[J]. 现代电子技术, 2019, 42(14): 131-134, 139. DOI: 10.16652/j.issn.1004-373x.2019.14.030.
[4] 江南, 李怡然, 黄毅标, 等. 基于绝缘子的高空电线杆损坏检测技术[J]. 机械设计与制造工程, 2019, 48(3): 107-111. DOI: 10.3969/j.issn.2095-509X.2019.03.025.
[5] 杨鹏, 刘德儿, 李瑞雪, 等. 结合信息熵与低秩张量分析的金属零件破损检测[J]. 激光与光电子学进展, 2019, 56(21): 64-71. DOI: 10.3788/LOP56.211006.
[6] LIN T Y, GOYAL P, GIRSHICK R, et al. Focal loss for dense object detection[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2020, 42(2): 318-327. DOI: 10.1109/TPAMI.2018.2858826.
[7] BOCHKOVSKIY A, WANG C Y, LIAO H Y M. YOLOv4: optimal speed and accuracy of object detection[EB/OL]. arXiv: 2004.10934[cs.CV]. https://arxiv.org/abs/2004.10934v1.
[8] 王菲菲, 李秦, 张梦佳. k-means聚类算法的改进研究[J]. 甘肃科技纵横, 2017, 46(3): 68-70. DOI: 10.3969/j.issn.1672-6375.2017.03.021.
[9] 陈正斌, 叶东毅, 朱彩霞, 等. 基于改进YOLOv3的目标识别方法[J]. 计算机系统应用, 2020, 29(1): 49-58. DOI: 10.15888/j.cnki.csa.007230.
[10] WANG C Y, LIAO H Y M, YEH I H, et al. CSPNet: a new backbone that can enhance learning capability of CNN[C]//2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops. IEEE, 2020: 1571-1580. DOI: 10.1109/CVPRW50498.2020.00203.
[11] PURKAIT P, ZHAO Cheng, ZACH C. SPP-net: deep absolute pose regression with synthetic views[EB/OL]. arXiv:1712.03452[cs.CV]. https://arxiv.org/abs/1712.03452v1.
[12] WANG Xiaolan, WANG Shuo, CAO Jiaqi, et al. Data-driven based tiny-YOLOv3 method for front vehicle detection inducing SPP-net[J]. IEEE Access, 2020, 8: 110227-110236. DOI: 10.1109/ACCESS.2020.3001279.
[13] LIU Shu, QI Lu, QIN Haifang, et al. Path aggregation network for instance segmentation[C]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. IEEE, 2018: 8759-8768. DOI: 10.1109/CVPR.2018.00913.
[14] 黃凤荣, 李杨, 郭兰申, 等. 基于Faster R-CNN的零件表面缺陷检测算法[J]. 计算机辅助设计与图形学学报, 2020, 32(6): 883-893. DOI: 10.3724/SP.J.1089.2020.17981.
[15] LIU Wei, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector[C]//Computer Vision–ECCV 2016. Lecture Notes in Computer Science, 2016, 9905: 21-37. DOI: 10.1007/978-3-319-46448-0_2.
[16] LI Ye, SHI Fangye, HOU Shaoqi, et al. Feature pyramid attention model and multi-label focal loss for pedestrian attribute recognition[J]. IEEE Access, 2020, 8: 164570-164579. DOI: 10.1109/ACCESS.2020.3010435.
[17] ZHU Qinfeng, ZHENG Huifeng, WANG Yuebing, et al. Study on the evaluation method of sound phase cloud maps based on an improved YOLOv4 algorithm[J]. Sensors, 2020, 20(15): 4314. DOI: 10.3390/s20154314.
[18] LIN T Y, MAIRE M, BELONGIE S, et al. Microsoft COCO: common objects in context[C]//Computer Vision–ECCV 2014. Lecture Notes in Computer Science, 2014, 8693: 740-755. DOI: 10.1007/978-3-319-10602-1_48.
[19] 任海鹏, 马展峰. 基于复杂网络特性的带钢表面缺陷识别[J]. 自动化学报, 2011, 37(11): 1407-1412. DOI: 10.3724/SP.J.1004.2011.01407.
[20] 徐志刚, 车艳丽, 李金龙, 等. 路面破损图像自动处理技术研究进展[J]. 交通运输工程学报, 2019, 19(1): 176-194.
[21] TAN Mingxing, PANG Ruoming, LE Q V. EfficientDet: scalable and efficient object detection[C]//IEEE/CVF Conference on Computer Vision and Pattern Recognition. IEEE, 2020: 10778-10787. DOI: 10.1109/CVPR42600.2020.01079.
(编辑 贾裙平)