YOLO(you only look once)作为一种新的目标检测算法[1],可以在保证高检测精度的前提下提高检测速度,该算法采用了端到端的检测方式,不仅可以精确判别边缘还可以辨别标签,运用这种方式的检测速度可以达到45帧/s的实时检测,最新YOLO系列算法甚至可以达到155帧/s[2]。
对于YOLOv3-Tiny算法[3]众人对其评价褒贬不一。在强大的YOLOv3算法性能影响下,YOLOv3-Tiny算法的轻量化版本虽然成本低,但并没有展现出高效能,甚至还出现了检测精度降低的情况,在很多场景并不能达到预期效果。目标检测技术应用的3个主要领域是:安全系统、安保系统、金融系统[4]。目前,车辆识别主要采用模式识别和图像分析技术[5]。本文采用改进后的YOLOv3-Tiny目标检测算法实现对车辆的检测,增加了YOLOv3-Tiny算法的实用性,在保证低成本的前提下,提高了Tiny算法对于车辆检测效果的精度。同时,出于安全考虑,以普通车辆代替特种战车,进行改进型算法的有效性验证。
随着科技的发展,目标检测以及生物识别技术进入大众的视野,YOLO系列算法作为当前目标检测最为流行的深度学习算法,得到广泛研究和应用[6]。本次车辆检测系统为实现低成本高效率而采用YOLOv3-Tiny目标检测算法。系统结构见图1。
图1 车辆识别系统结构框图
Fig.1 Structural framework of vehicle identification system
此次实验的图片数据集借助照相机以每秒20帧的速度进行实地拍摄,实验对象为识别检测4种车辆。同时此次采集的图像考虑了白天、黑夜、阴雨等多样化天气状态,最终整理出4 091张图片来制作本次实验的数据集,数据集图片像素为 1 024 540。
整理出4 091张图片后,接下来需要运用LabelImg软件对每一张图片进行标注,使得可以生成与原图相对应的标签文件,标签文件中记录着每个对象的类别在对应图片中的相对位置。
本次标注共有4种标签,包括car、bus、truck、ignore_region,其中ignore_region的标注是为了避免歧义和降低标注成本。比如在采集的某些图片中,存在较远的大块区域里包含有很多个其他类别的物体,因目标过小使得计算机不能很好的捕捉到其特征,所以对其进行标注没有实际意义[7]。
相比于YOLOv3检测算法,Tiny系列的版本将整个网络进行简化,删除了残差层,只使用了2种不同尺度的yolo输出层,在损失函数的选择上包含坐标误差(coordError)、IoU误差(iouError)和分类误差(classError)[8]。
在训练过程中对损失值的计算如下:
其中,表示目标物体在第i个格子中,和分别表示目标物体是否在第i个格子或者第i个预测框中,公式的前2个式子代表坐标误差,第1个是对格子中心坐标点的(x,y)预测,第2个是对宽和高的预测,第3个表示IoU误差,第4个表示分类误差,只有格子包含物体的时候该式子前面的系数才为1。
YOLOv3-Tiny网络模型结构如图2所示。
图2 YOLOv3-Tiny网络模型结构框图
Fig.2 YOLOv3-Tiny network model structure
由图2可知,YOLOv3-Tiny模型采用了卷积与池化交替的结构,输入经过卷积池化尺寸成比例降低,特征筛选是采取4个元素取1个元素的方式;对比于YOLOv3简化了层级,而且输出只有2层,所以Tiny网络总体成本较低,虽然检测精度低于YOLOv3算法,但是继承了检测速度快的优点[9]。
根据YOLOv3-Tiny网络检测效果的匹配问题[10],提出了相应的改进思路,因为数据库为小样本数据,所以发现特征流失严重,因为正负样本标签数目较少,在保证数据库数据不变的情况下需要改变特征筛选的方式。
采用部分卷积层替换池化层的方式,适当增大输入,经过计算改变输入为448×448,卷积核步长为2,即保证了输入尺寸成倍降低,达到相同效率,又减少了池化导致的特征流失。改进后的网络模型结构如图3所示。
图3 替换卷积层后的YOLOv3-Tiny网络模型结构框图
Fig.3 Block diagram of YOLOv3-Tiny network model
after replacing convolution layer
K-means聚类均值算法是对网络的训练和机器学习的无监督模式[11],用这种方法可以来计算锚点。锚点(anchor)是检测框的中心点,往往在算法中归为定值,不过随着机器学习的发展,不同Anchor计算得到的不同精度值所造成的影响越发受人关注,因此可以动态调整Anchor是目前目标检测算法的主流方向。K-means聚类如图4所示。
图4 K-means聚类图
Fig.4 K-means cluster diagram
K-means算法步骤如下:
1) 从数据中选择k个对象作为初始聚类中心;
2) 计算不同聚类物体到聚类中心的长短;
3) 再次计算每个聚类中心;
4) 计算标准测度函数,进行循环往复,直到达到最大迭代次数函数才会停止,为了加快函数收敛速度,可以指定最大迭代次数,提高效率;
5) 确定最优的聚类中心
iou=xy/d(box,clusters)
是为了计算参数iou(交并比),来判断检测框是否准确。
由图4可知聚类的数目等于6,图像的输入尺寸等于448。
本次实验使用的操作系统版本为64位Ubuntu 18.04 LTS的Linux操作系统,主要的机器硬件配置为四核四线程英特尔酷睿i3-9100F CPU,选择darknet为本次实验的深度学习框架,数据集图片由人工实地采集,制作成类VOC数据集共4 091张图片,再以6∶2∶2的比例将图片划分为训练集、测试集以及验证集。设置输入为448×448,初始学习率为0.001,最大迭代次数为25 000,采用动态调整学习率的方式在第4 000、8 000批次下对学习率进行成倍衰减。
经过聚类算法得到的Anchor如图5所示,(12,18),(10,7),(4,26),(29,17),(10,14),(7,37)共6类。改进前后的检测效果如图6所示,检测前后的平均精度如下:
图5 得出的Anchor
Fig.5 The resulting Anchor
图6 改进前后的检测效果
Fig.6 Test results before and after improvement
检测前:Bus: 0.76132358873
Car: 0.860279633443
Ignore_region: 0.190031117096
Truck: 0.774514273566
****************************
Map: 0.839441153998
检测后:Bus: 0.80847090384
Car: 0.899464888
Ignore_region: 0.396268242427
Truck:0.861581049064
****************************
Map: 0.841446270832
检测前后的预测框准确率:
检测前:[ [0.02539062 0.02592593]
[0.04003906 0.04444444]
[0.01855469 0.04074074]
[0.0078125 0.01296296]
[0.04492188 0.08703704]
[0.01269531 0.02037037]]
Accuracy: 89.72%
检测后:[ [0.02636719 0.06481481]
[0.04003906 0.03888889]
[0.02246094 0.02222222]
[0.01464844 0.03148148]
[0.00976562 0.01666667]
[0.05859375 0.08148148]]
Accuracy: 90.60%
改进前后YOLOv3-Tiny的检测结果对比如表1所示,改进前后YOLOv3-Tiny的各类别车辆检测效果如表2所示。
表1 改进前后YOLOv3-Tiny的检测结果
Table 1 Detection results of YOLOv3-Tiny before
and after improvement
IoUAccuracymAP/%速度/sYOLOv3-Tiny0.54389.7283.90.017改进后的YOLOv3-Tiny0.68490.6084.10.083
表2 改进前后YOLOv3-Tiny的各类别车辆检测效果 %
Table 2 Testing effect of various types of vehicles before
and after improvement of YOLOv3-Tiny
Faster-RCNNYOLOv3-Tiny改进后的YOLOv3-Tiny汽车89.7686.0289.94巴士车80.2772.6180.84卡车87.3477.4586.15平均识别率85.6783.9484.14
目标检测算法中主要的评价指标如下:
1) mAP(mean average precision)。可以用来判断预测框的类别标签是否准确和定位坐标是否精准的指标。
2) IoU(intersection over union,交并比)。是目标检测算法中2个不同检测框之间存在的相似度的判断指标。
通过上述数据对比可以得出,改进后的YOLOv3-Tiny模型整体检测结果相较原模型有了明显的提升,交并比(IoU)提升了14%,整体准确率提高了0.88%,平均检测率(mAP)提高了0.2%,但是速度有所降低。
在不同目标的识别率上,改进后的YOLOv3-Tiny模型对比原模型在小目标的识别率提高了3.92%,大目标的识别率提高了8.23%,中大型目标的识别率提高了8.7%;由此可见,改进后的YOLOv3-Tiny模型整体性能有了明显提高,牺牲了少许检测速度而提高了精度,改进的主干网络减少了在池化层中特征点的大量丢失。
本文提出了对YOLOv3-Tiny算法的改进,改进后的YOLOv3-Tiny检测算法整体准确率提高了0.88%,mAP提高了0.2%,对于中大型目标的识别率有明显提升,中型目标的识别率提升了8.23%,大型目标的识别率提升了8.7%。
[1] 郑秋梅,王璐璐,王风华.基于改进卷积神经网络的交通场景小目标检测[J].计算机工程,2020,46(06):32-39.
Zheng Q M,Wang L L,Wang F H.Small Target Detection in Traffic scene based on improved convolution Neural Network[J].Computer engineering,2020,v.46;No.514(06):32-39..
[2] 朱杰,辛月兰,孙可心.二次特征融合的YOLO目标检测算法[J].计算机与数字工程,2021,49(05):914-919.
Zhu J,Xin Y L,Sun K X.YOLO target detection algorithm based on quadratic feature fusion[J].Computer and Digital Engineering,2021,49(05):914-919.
[3] Yao Z X,Song X P,Zhao L,et al.Real-time method for traffic sign detection and recognition based on YOLOv3-tiny with multiscale feature extraction[J].Proceedings of the Institution of Mechanical Engineers Part D Journal of Automobile Engineering,2021,235(99):095440702098055.
[4] 王瑶,胥辉旗,姜义,等.AI目标检测网络应用研究[J].兵器装备工程学报,2021,42(06):236-242.
Wang Y,Xu H Q,Jiang Y,et al.Research on the Application of AI Target Detection Network[J].Journal of Ordnance equipment Engineering,2021 minute 42(06):236-242.
[5] 谢晓方,刘厚君,张龙杰,等.融合轻量级YOLOv4与KCF算法的红外舰船目标识别[J].兵器装备工程学报,2021,42(06):175-182.
Xie X F,Liu H J,Zhang L J,et al.Infrared ship target recognition based on lightweight YOLOv4 and KCF algorithm[J].Journal of Ordnance equipment Engineering,2021 minute 42(06):175-182.
[6] 帅泽群,李军.基于深度学习的目标检测研究[J].汽车工程师,2021(05):11-14.
Shuai Z Q,Li J.Research on target detection based on deep learning[J].Automotive engineer,2021(05):11-14.
[7] 张家铭.基于深度学习的交通标志检测与识别研究[D].大连:大连海事大学,2020.
Zhang J M.Research on Traffic sign Detection and recognition based on Deep Learning[D].Dalian:Dalian Maritime University,2020.
[8] Xiao D,Shan F,Li Z,et al.A Target Detection Model Based on Improved Tiny-Yolov3 Under the Environment of Mining Truck[J].IEEE Access,2019(99):1-1.
[9] 杨晓乐,付天晖,王永斌.基于改进型YOLOV3-Tiny的通信干扰检测算法[J].舰船电子工程,2021,41(02):60-63,76.
Yang X L,Fu T H,Wang Y B.Communication interference detection algorithm based on improved YOLOV3-Tiny[J].Warship Electronic Engineering,2021,41(02):60-63,76.
[10] 杨铭,文斌.一种改进的YOLOv3-Tiny目标检测算法[J].成都信息工程大学学报,2020,35(05):531-536.
Yang M,Wen B.An improved YOLOv3-Tiny target detection algorithm[J].Journal of Chengdu University of Information Engineering,2020 35(05):531-536.
[11] 罗春芳,张国华,刘德华,等.基于Kmeans聚类的XGBoost集成算法研究[J].计算机时代,2020(10):12-14.
Luo C F,Zhang G H,Liu D H,et al.Research on XGBoost ensemble algorithm based on Kmeans clustering[J].Computer Age,2020(10):12-14.
Citation format:ZHANG Chenchen, JIN Hong.Research on Target Detection Based on Improved YOLOv3-Tiny[J].Journal of Ordnance Equipment Engineering,2021,42(09):215-218,312.