APP下载

基于改进YOLOv3算法的行人检测研究

2021-01-07刘子龙

电子科技 2021年1期
关键词:网络结构行人损失

叶 飞,刘子龙

(上海理工大学 光电信息与计算机工程学院,上海 200093)

目标检测的目的是从不同的视觉信息中识别图像中所要确定对象的大小以及位置情况,并且将其从不同背景图像中分离出来。对于行人的检测是在给定的图像与视频中判断是否有行人。行人检测的算法可分为:基于背景建模、基于轮廓模板、基于底层特征和基于统计分析学习4大类[1]。在行人检测的算法中,比较经典的行人检测方法包括Dalal 等人提出的梯度直方图(Histogram of Oriented Gradient,HOG)以及与线性分类器支持向量机(Support Vector Machine,SVM)结合的行人检测方法,后者在MIT行人数据集上展现出了十分出色的性能[2-3]。Felazenszwalb等人随后提出了一种改进的组件模型(Deformable Part Model,DPM)算法,其对于形变之后的目标对象具有很强的鲁棒性[4-5]。

最近几年,得益于计算机算力提升,深度学习得到了巨大的发展,许多研究者将深度学习和目标检测结合来起来。使用深度神经网络的目标检测与传统的目标检测算法相比具有许多优点。传统的方法使用底层信息,对于行人目标的检测能力不足,且往往依靠人工手动来获取特征。使用深度学习的方法可以通过大量的数据学习相应数据差异的特征。基于神经网络的目标检测可分为两类:一种是基于区域的区域卷积神经网络(Region-Convolutional Neural Networks,R-CNN)系列,例如 Fast R-CNN、Faster R-CNN;另外一种是基于回归的SSD(Single Shot Multi Box Detector)和YOLO(You Only Look Once)系列[6-7]。

从网络结构来看,YOLO和R-CNN网络区别如下:(1)YOLO的训练和检测、特征提取和回归分类都是在一个网络中完成的,是一个单独的端到端的网络;(2)YOLO将对象检测看作一个回归问题,一旦将图像输入网络,就可以获得图像中对象位置以及们的类别和相应的置信概率[8]。 R-CNN系列的检测结果可以分为两个部分:目标对象类别(分类)、目标对象位置和边界框(回归问题)。YOLOv3检测方法于2018年被首次提出。当测试320×320的图像时,YOLOv3运行22 ms后达到28.2 mAP。同SSD相比,该方法获得的结果准确度一致,但是速度是SSD的3倍[9-10]。

因此,本文使用基于神经网络的目标检测算法,把改进后的YOLOv3网络用于行人检测。主要改进如下:改进网络结构,将复杂的主干网络简化,并且采用GIOU 损失函数的替代IoU(Intersection over Union)损失函数[11]。实验中使用INRIA数据集得到该算法的行人检测模型参数。实验结果显示该算法用于行人检测速度快,并且具有良好的识别精确度。

1 基于YOLOv3的行人检测方法

YOLO将检测看作一个回归问题[8],具体的步骤如下:(1)在该神经网络中输入一张新的图片来预测检测;(2)将输入图像分成S×S网格;(3)假设对象的正确标定框的中心点落在某个网格中时,则选用该网格来识别对象。所有的网格输出B预测边界框,包含了边界框的位置信息内容(中心点坐标x、y;宽度w;高度h)和预测置信度(Prediction Confindence,PC)。

YOLOv3利用了Faster R-CNN 锚框(Anchor box)的思想[6],舍弃了手动选择的锚框的的过程,并在选择边界框的尺寸上过程使用K-means聚类,得到了更好的锚框[9]。YOLOv3使用这种方法获得9个聚类中心,可以更好地覆盖图像特征。YOLO还采用了类似于功能金字塔网络(Feature Pyramid Network,FPN)的多尺度预测网络[12]。对多尺度特征图特征进行预测时,YOLOv3可以取得不同尺度的图像特征,并可极大改进对识别小目标的能力。结合锚框和多尺度预测思想,YOLOv3首先根据锚框的长度和宽度为每个比例特征图分配几个锚框,然后计算每个标注图像锚框的联合交叉(IoU),并将目标信息分配给最接近其形状锚框的特征映射。在执行边界框回归训练时,反向传播将使预测的边界框更接近图像中目标框。

YOLOv3使用Darknet53网络作为主干,结构如图1所示。

由图1可以看出,它的结构和ResNet(Residual Neural Network)网络和非常类似,均使用残差网络来网络变得更深[13]。另外,全卷积结构的使用进一步提升了检测速度。在每一个尺度内,为了便于计算损失函数,输出若干个3×3和1×1的卷积层。

YOLOv3算法的损失函数为:坐标位置损失(coordinate error)、IoU损失(IoU error)和分类误差(classification error)。首先对S×S网络进行计算

(1)

(2)

STw,h=2-w×h

(3)

式中,BC是交叉熵损失函数;ST是计算比例因子函数。YOLOv3的损失函数如下

(4)

(5)

(6)

coorderr是坐标位置损失,在坐标误差中。中心坐标使用交叉熵损失,宽度以及高度使用方差损失。将λ1设置为0.5,可以减小宽度与高度对计算的影响。此外,只有当网格中存在预测对象时才能进行坐标误差计算。iouerr是IoU损失,其中对于含有目标网格和不含有目标的网格权重是不一致的。因此,加入λ2=0.5来减弱没有目标的网格对损失函数损失值的影响[14-15]。classerr是分类误差,仅仅适用于具有目标的网格,其使用交叉熵函数计算损失。

最后,YOLOv3使用Sigmoid函数作为类别预测的激活函数。与Softmax函数相比,Sigmoid函数可有效解决同一个目标有两个标签的问题[9]。

2 基于改进YOLO v3算法

2.1 网络结构

YOLO v3通过参考残差网络提出Darknet53网络,并通过残差结构降低了训练的难度,由Darknet53网络实现了多类别检测。但是,对于单一目标的检测而言,复杂的网络是冗余的。复杂的网络意味着含有过多的参数,将导致训练变得复杂,大大影响训练的效率,造成过拟合,也会影响检测的速度。

为了检测单一行人目标,本文保留YOLOv3的多尺度检测部分,并使用Darknet19网络取代Darknet53[16]。Darknet19网络如图2所示。

图2 Darknet19网络结构Figure 2. Darknet19 network architecture

由图2可以看出Darknet19去除了残差网络,降低了网络结构复杂度。

在YOLOv3中,多尺度融合是将3个特征层进行融合。本文选择了3个尺度的特征层,最终的网络模型如图3所示。

图3 改进后的网络结构Figure 3. Improved network structure

2.2 损失函数

在实际检测中使用YOLOv3算法进行训练得到相同的损失值时会出现不同结果,不能正确反映预测框与正确框之间的的位置情况。为了消除这个不稳定影响并优化检测准确度,本文使用具有损失函数特性的GIoU(Generalized Intersection over Union)作为损失函数。该函数具有尺度不变的特性,且没有IoU作损失函数的缺陷。

IoU计算式如下

(7)

式中,A代表正确标定框的面积;B代表预测框的面积。可以看出有两种情况(重合和未重合)可以使IoU为零,所以在计算梯度时会产生错误。

GIoU计算式如下

(8)

式中,C代表两个框的最小闭包区域面积。可以看出在两个框没有重合的情况下, GIoU与IoU是相等的。但是GIoU优于IoU的地方在于它可以充分地反映两个框(标定与预测)之间的重合程度,并且可以关注两者非重合的区域。

3 实验与结果分析

本文实验环境为:Ubuntu18.04,64位操作系统,GPU为GTX980Ti。对于行人的目标检测实验结果,本文采用检测精确度(Average Precision,AP)、召回率(Recall)、检测速度(Detection Rate,DR)3个指标来对本文算法进行评价。

3.1 训练方法

训练网络中数据预处理是十分关键的一步。本文实验选取了来自INRIA数据集的图片,该数据集中总共1 804张图片,包含3 542个行人。除此以外,本研究还选取了网络上500张行人图片进行对数据集的扩充。具体方法为:首先将网络上收集的行人图片进行标注,再将图片的标注信息文件格式转换为YOLOv3可以识别的格式;然后把两组数据集合成一组数据并且按训练集与测试集为8∶2的比例进行分配;最后将分配好的图像数据用于训练。

在训练阶段,使用改进的YOLOv3训练。相关系数如表1所示。

表1 模型参数设置Table 1. Model parameter setting

3.2 不同主干网络实验对比

为了验证修改后网络的有效性,文中比较了Darknet19网络与Darknet53网络在同一数据集中训练时间及实际检测效果。在同一数据集中分别训练10小时和23小时,训练的损失值变化对比如图所示。

图4 不同网络结构的损失对比Figure 4. Loss comparison of different network structures

由图4可以看出,在相同的参数条件下, Darknet19网络下降更快,数据的波动更小。

在实际检测效果方面,本文分别使用两个网络来测试相同的图像,随机选取一张测试实例效果图如图6和图7所示。

图6 基于Darknet53网络检测后Figure 6. After detection based on Darknet53 network

图7 基于Darknet19网络检测后Figure 7. After detection based on Darknet19 network

由图6和图7可以看出在降低网络结构的复杂度之后,并未出现未识别出错的检测区域,也未出现漏检现象。

综上,通过对比实验可知,在训练阶段,改进后的网络结构可提高训练的速度,并且使训练更加稳定;在检测阶段,改进后的网络出色地完成了检测任务。

3.3 损失函数实验对比

为了验证改进损失函数的有效性以及该改进为整体网络贡献的程度,文中基于Darknet19网络,分别使用原始损失函数和改进后损失函数的模型在相同数据集下进行实验。最终得到的结果如表2所示。

表2 不同损失函数对比Table 2. Comparison of different loss functions

如表2所示,相较于原来,使用GIoU 损失函数之后的精确率提高了3%左右,在召回率上也有一定的提升。

3.4 不同目标检测算法的对比

将本文采用的算法与现阶段主流的神经网络模型Faster R-CNN和传统的HOG+SVM算法进行对比,对比结果如表3所示。

表3 不同检测算法对比Table 3. Comparison of different detection algorithms

由表3可以看出,YOLOv3算法凭借着端到端网络结构的优势,在检测速度上达到了每张图片0.051 s的速度,但是其只有68.12%的精确率;Faster R-CNN依靠生成候选框,再对候选框分类校准,检测精度达到了80.64%。但是由于其网络结构复杂导致,因此检测速度较慢,平均每张图片用时需要0.416 s;传统的HOG+SVM算法在精确度与速度上都不及其他算法;本文改进后的算法是在YOLOv3算法上再精简网络结构,相较于YOLOv3、Faster R-CNN和HOG+SVM算法,其检测速度分别提升了0.036 s、0.401 s、0.459 s。使用更加直接的GIoU 损失函数使本文改进算法在检测精确率也得到了有效的提升,相较于YOLOv3提升了5%左右,略低于Faster R-CNN。

4 结束语

本文在YOLOv3的基础上优化了其网络结构,使用更加简洁的Darknet19网络与多尺度特征图像结合,提升了检测的速度;通过将边界框回归损失函数修改为GIoU loss损失函数,提高检测的准确度。在INRIA数据集中,通过实验对比采用该算法取得的预期效果。另外,本文中改进算法具有网络简单且体积小的特点,为各种跨平台移植提供了可能。但由于单步检测的准确度低于双步的检测算法,因此所提算法在检测精度尤其是小目标的检测精度上仍有待研究。

猜你喜欢

网络结构行人损失
胖胖损失了多少元
毒舌出没,行人避让
路不为寻找者而设
玉米抽穗前倒伏怎么办?怎么减少损失?
我是行人
曝光闯红灯行人值得借鉴
基于互信息的贝叶斯网络结构学习
知识网络结构维对于创新绩效的作用机制——远程创新搜寻的中介作用
沪港通下A+ H股票网络结构演化的实证分析
复杂网络结构比对算法研究进展