改进YOLOv3算法在集装箱箱号定位中的应用*
2019-06-25郭立君胡叶天
刘 岑, 郭立君, 张 荣, 胡叶天
(宁波大学 信息科学与工程学院,浙江 宁波 315211)
0 引 言
为了便于集装箱在国际运输中的识别、管理和交接,每个集装箱都配有一个唯一的集装箱号码。如文献[1,2]提出的利用边缘检测与形态学相结合的方法,文献[3,4]根据图像形态学处理后,依据连通域的高宽比来进行定位,文献[5]提出基于边缘点数量统计的定位方法,文献[6]提出基于数学形态学的定位方法,文献[7]提出基于边缘特征的定位方法,文献[8]则采用最大稳定极值区域(maximally stable extremal regions,MSER)的方法对集装箱号进行定位,同时文献[9]提出的模板匹配技术也可以用于集装箱箱号定位。然而上述基于传统的图像学处理的方法对于复杂背景的图像,定位误差较大,且定位速度相对较低。
本文创新性地提出将深度神经网络算法用于集装箱箱号定位。实验结果表明,该算法可以满足集装箱箱号定位的准确率与实时性的要求。
1 集装箱箱号定位算法
首先将原始的数据做数据增强后,对含有集装箱箱号的24位彩色图片进行灰度化、二值化处理后得到训练样本,然后将训练样本输入改进的YOLOv3定位网络进行训练,学习网络权重。测试时,将原图进行相同的预处理之后,输入训练好的网络中得到最终的定位结果。
1.1 图片预处理
1.1.1 灰度化处理
对原始的24位彩色图像,如图1(a)所示,进行灰度变换,如图1(b)所示。设图像的像素点f(x,y)的彩色分量为(R,G,B),通过如下公式进行灰度转换
f(x,y)=0.299R+0.587G+0.114B
(1)
1.1.2 二值化处理
为了去除噪声的影响同时更突出集装箱号码,采用最大类间方差法[10]进行二值化处理,具体步骤如下:
1)随机初始化阈值T,将图像f(x,y)分割为前景A和背景B;
2)按照式(2)、式(3)分别计算前景,背景区域占全部像素点个数的比例pA,pB为
(2)
式中NA,NB分别为前景和背景的像素点个数,N表示图片上像素点的总个数;
3)按照式(4)、式(5)分别计算前景,背景区域像素均值uA,uB为
(3)
4)按照式(4)计算类间方差θ为
θ=pA(uA+u)2+pB(uB+u)2
(4)
式中u为整幅图像的像素均值;
5)将阈值T从0至255进行遍历,找出可以使类间方差θ最大化的阈值Tbest;
6)根据阈值Tbest对图像进行二值化处理。二值化处理后的图片如图1(c)所示。
图1 原图像与处理之后的结果
1.2 改进的YOLOv3定位算法
YOLOv3算法相比于早期的YOLO[11]算法,采用类似特征金字塔[12]的上采样融合法,在多个尺度的融合特征图上分别独立进行检测。本文基于YOLOv3算法进行改进,网络结构如图2所示,同时利用K-均值(K-means)聚类调整初始的先验框尺寸并且简化了模型的输出和训练的损失函数,以此可以大幅度提高集装箱箱号的定位效率。
1.2.1 Darknet网络提取集装箱号码特征
借助多层残差网络[13]的思想,在集装箱箱号特征提取阶段选用深层残差网络darknet—53作为特征特提取网络。第一个卷积层采用32个大小为3×3的卷积核过滤416×416分辨率的输入图像,然后将先前的卷积层的输出作为输入,使用64个大小为3×3的卷积核以步长为2个像素进行卷积操作,实现2倍的下采样,得到208×208分辨率的特征图。之后在网络中添加执行1×,2×,8×,8×,4×的5组残差模块,同时在每2组的残差模块之间连接数量不同的3×3大小的卷积核,步长均为2个像素,分别获得104×104,52×52,26×26,13×13分辨率的特征图。其中,每组残差模块由数量不同的1×1和3×3大小的卷积核组成残差结构。这样做可以允许原始输入残差模块的信息直接传入到后面的卷积层,可以使在加深网络的前提下,网络性能不会衰减,优化训练效率。
之后选取分辨率52×52,26×26,13×13的特征图与下节提出的上采样特征图进行融合,构成特征金字塔的结构对集装箱箱号进行定位预测。
图2 集装箱箱号定位网络结构
1.2.2 多尺度网络定位集装箱箱号
定位时直接在多个尺度的特征图上进行回归预测集装箱箱号的位置。如图2所示,最终的输出的预测由3个不同分辨率的独立分支组成(分别为52×52,26×26,13×133个分辨率的特征图)。其中每个分支分别配有多个卷积层,分别对darknet—53最后输出的特征图进行2倍、4倍、8倍上采样。将得到的上采样特征图分别与darknet—53中的相同尺寸的特征图进行融合,最终输出3种不同尺寸的细粒度特征图。
在预测阶段,对于输入的图像,不同于原始的YOLOv3算法需要预测一个三维张量(物体的边界框、置信度、类别)。本文的改进YOLOv3算法只需要预测一个二维的张量,即集装箱箱号的边界框和边界框的置信度。
1.2.3 锚点预测集装箱箱号的边界框
由于不同集装箱图片中的集装箱箱号尺寸并不相同,为了提高对不同尺度的集装箱号码的预测效率,本文沿用YOLOv3算法中的锚点机制预测集装箱号的边界框。
YOLOv3中将特征图划分成N×N的网格,针对三种不同尺寸的输出特征图,N分别取13,26,52。每个网格预测3个锚点框。因此,对于每幅输入图像会产生10 647个大小不同的预测框,可以更好地提升对集装箱箱号的定位精度。
同时本文借鉴YOLOv2[14]中使用K-means聚类的方法,对训练集的标注框聚类。针对三种同尺寸的特征图,分别得到三种不同尺寸的先验框。在最小的13×13的特征图上,有最大的感受野,应用较大的先验框(92×278),142×240,371×122,定位较大的对象;在中等的26×26的特征图上,有中等的感受野,应用中等的先验框30×81,82×45,59×129,定位中等大小的对象;在较大的52×52的特征图,有较小的感受野,应用较小的先验框10×23,14×42,33×18,定位较小的对象。
网络通过直接预测每个预测框中心点相对于对应网格左上角位置的偏移量,即每个边界框预测4个坐标:tx,ty,tw,th。最终边界框的中心坐标以及边界框的宽和高bx,by,bw,bh通过下面的公式确定
bx=σ(tx)+cx,by=σ(ty)+cy,bw=pwetw,bh=pheth
(5)
式中cx和cy为网格与整幅图像左上角的横纵距离,pw和ph为初始先验框的宽和高。
1.2.4 改进YOLOv3的损失函数
由于只需要定位集装箱箱号的位置坐标,不需要预测类别。在原有的YOLOv3损失函数的基础上,删除了预测类别的损失,改进后的损失函数
训练时,使用简化后的损失函数,可以使模型计算量减小,同时使模型更容易收敛训练。
1.3 非极大值抑制
在测试时,对于每张输入图片通过定位网络会输出的多个预测框和每个预测框的置信度。将置信度低的预测框抛弃(本文阈值为0.9),之后通过非极大值抑制算法[15]输出最终的集装箱号的位置。具体算法过程如下:1)对预测框按照置信度从大到小进行排序;2)从置信度最大预测框开始,分别计算这个预测框与其他预测框的交并比的值;3)如果与某个预测框的交并比值超过阈值(本文取0.5),就舍弃这个预测框;4)保留置信度最大的预测框;5)剩下的预测框重复第一步,直到筛选出所有被保留下来的预测框。
2 实验结果与分析
2.1 实验数据集
本文使用的数据集为宁波港口提供的集装箱监控截图,共包含3 143张彩色图片。每张图片均已经标注好了集装箱号的位置,原始图像大小为1 920×970。为了减少网络训练与测试的时间,以原始图像降采样为416×416分辨率进行实验和性能评价。
同时为了增加模型的泛化能力,对原始数据集采用多种数据增强策略,如随机亮度、饱和度、对比度变化,添加随机椒盐噪声,随机镜像翻转等方法,以扩充训练的数据量,进一步提高模型的泛化能力。
2.2 训练环境与参数
本文实验基于Darknet神经网络框架实现集装箱箱号定位网络。实验的计算机配置:CPU为Intel Xeon 4116 ,GPU为NVIDIA Quadro P5000和64 G内存。
整个训练过程中,采用小批量随机梯度下降法,批量大小为64,最大迭代次数为50 000次,动量和权重衰减分别为0.9和0.000 5,初始学习率为10-3,在迭代次数为15 000和25 000次时调整学习率为10-4,10-5。
2.3 结果与分析
本文使用定位准确率与定位速率两项指标对算法进行评价。其中,定位准确率是指当预测框与标注框的交并比值大于0.7时的预测框个数与预测框总数的比值。
实验的图像为不同环境背景下的集装箱监控视频中的截图,其中包括非理想拍摄条件下的图像,如夜间光照下拍摄的图像,箱体表面有锈蚀,阴雨天拍摄的图像,箱号表面有油污遮盖等,如图3所示。
图3 不同拍摄条件下的集装箱图像
图4显示了不同拍摄条件下集装箱箱号的定位结果。可以看出,在拍摄条件不理想的条件下,本文的算法依然能够准确的定位集装箱箱号的位置,模型具有良好的鲁棒性。
图4 不同拍摄条件下的定位结果
此外使用基于形态学的算法,MSER算法等传统集装箱定位算法与本文提出的算法进行对比,实验结果如表1所示。其中测试样本来自集装箱港口,不同时间段的监控视频中的550张截图。
表1 三种定位算法准确率和定位速度对比
由表1可看出,相比于传统图像学的定位算法,本文提出的算法在准确率和速度上有着明显优势。同时可以有效克服复杂背景的影响。
3 结束语
本文提出了一种用于集装箱箱号的快速定位改进YOLOv3算法。通过对图片预处理之后,利用深度残差网络对输入的图片进行特征提取与多尺度融合,同时利用聚类算法得到网络所需的初始先验框的尺寸。在训练时,简化了损失函数和预测的输出张量,提高了定位的效率。对比其他传统定位方法,实验结果表明:本文提出的算法有着精度高,速度快的优势,是一种高效的定位算法,可以用于集装箱箱号的实时识别系统。