APP下载

基于YOLOv3改进的行人检测

2020-05-18马小陆洪石林

工程技术与管理 2020年3期
关键词:级别行人尺度

马小陆 洪石林

安徽工业大学,中国·安徽 马鞍山 243000

针对目前行人检测anchor 尺寸不匹配和特征尺度不连续的会影响检测精度的问题,提出基于YOLOv3改进的行人检测算法。论文使用Guided anchoring 指导生成anchors,融入自适应空间特征融合。在路口行人数据集上的测试结果表明,改进后的YOLOv3 行人检测算法mAP 达到了95.56%,提高了检测精度。

YOLOv3;指导锚;自适应空间特征融合;行人检测

1 引言

近些年行人检测技术被广泛地应用在各个领域中,如智能交通中的路口行人检测、车辆辅助驾驶、危险区域行人识别等。常用的基于深度学习方法的目标检测方法有R-CNN系列[1-2]、SSD 系列[3]和YOLO 系列[4-6]。虽然将目标分类与定位一步回归的YOLOv3 已经取得了较好的检测效果,但是在行人检测方面精度仍不够理想。主要体现在下面几个方面:(1)YOLOv3 训练、测试使用的数据集为COCO 或者VOC,此类数据集类别过多,在此数据集聚类得到的anchor对行人检测的适应性不高,而且使用聚类生成的anchors 尺寸如果不合适将会阻碍行人检测的精度及速度。(2)基于特征金字塔的一阶段行人检测模型,不同特征尺度之间的不连续性是影响行人检测准确率的另一个主要因素。因此,论文采用指导锚 (Guided Anchoring-GA)[7]生成anchors,并在模型中加入一种自动训练不同尺度特征融合权重的策略(Adaptively Spatial Feature Fusion-ASFF)[8]。使得改进后的行人检测模型在依旧满足实时性的条件下,大大提高了行人检测的精度。

2 YOLOv3 原理

从2016年到2018年YOLO已经经历了YOLOv1、YOLOv2、YOLOv3 三个版本的改进。应用最广泛的是YOLOv3,首先采用类似ResNet[9]跳层连接的快捷连接,将原始数据跳过某些层而直接传到之后的层,在很大程度上地解决了因网络加深导致的模型过拟合的问题;其次采用多尺度预测,在三个不同的尺度上进行预测,使用类金字塔网络[10]从这些尺度中提取特征,然后与上采样后的特征进行合并,可以得到更有效的细粒度特征和更有意义的语义信息;并将softmax 替换为二进制交叉熵损失函数,实现多种类别的预测。

一般anchor 的生成方式会考虑对齐和一致性两个因素,即anchor 中心和特征图像素的中心要对齐,一个特征图中不同区域的感受野和语义范围要一致。YOLOv3 针对不同数据集和检测对象要制定不同尺寸及比例的anchors,而错误的制定会影响检测的精度与速度;而且目标检测在确保召回率的前提需要生成大量的anchors,但其中大部分的anchor 为假样本,会增加训练和推理的计算量。

YOLOv3 模型中除了anchor 生成方式会影响检测精度之外,不同尺度特征之间的不一致性同样会影响。YOLOv3模型中特征金字塔采用启发式引导的方式选择特征,即大尺寸的目标通常与上层特征图相关联,小尺寸目标通常与下层特征图相关联。但如果在某个级别特征图上一个目标被视为正例时,其他级别特征图中对应区域则会被视为背景。因此,若图像同时包含“小”和“大”两个尺寸的目标,则不同尺寸特征之间的冲突矛盾信息会占据“特征”金字塔的主要部分。这种特征尺度不一致会影响训练期间梯度的计算,并且会降低特征金字塔提取特征的有效性。

3 基于YOLOv3 训练优化

基于上述YOLOv3 存在的问题,论文从anchor 的生成方式和特征尺度不一致融合策略两个方面对模型进行优化。

3.1 anchor 生成方式优化

目标检测算法的好坏很大程度上依赖anchors 的生成机制,大部分的算法都是通过事先定义好的尺寸和大小的anchor 在空间上均匀移动采样得到。YOLOv3 通过聚类得到anchors,聚类得到尺寸不合适将会阻碍检测的精度及速度。论文提出一种利用语义特征对anchor 进行引导生成的方法(GA)。由两个步骤生成anchors:首先预测目标可能存在的位置,然后在可能存在的位置处预测该位置对应的形状。因此生成一系列稀疏的anchors,紧接着使用可变形卷积模块调整特征的连续性。

行人的位置及形状可以由(x,y,w,h)表示。(x,y)代表行人位置的坐标。(w,h)表示行人的宽高。在一帧图片上检测行人可表示为公式(1):

上式(2)表示行人中心位置在图片中的(x,y)处,并且该位置处的anchor 宽高与所在位置相关联。对于一帧图片I,首先提取特征map 称为Fi,在Fi 的头部设置anchor 初始位置,即YOLOv3 三个不同尺度通道对应的网格中心。接着预测针对每个位置的anchor 形状(w,h)。由于图像的宽、高的取值范围太大,直接进行预测较困难。论文做了如下映射。

通过公式(2),将w,h 的预测转换为对dw,dh 的预测,为一个经验系数,论文取8;s 表示特定尺度上的步长。该分支将附近的每一个ground truth box 与anchor 进行匹配,选择IOU 得分最高的anchor 宽度高度作为最优值。经过上述两个步骤生成一系列不同位置和形状稀疏anchors。由于anchor 形状不同,对应的特征编码区域也不同。此时生成的Fi 已不再适合标准卷积分类[11]。论文采用针对不同位置、anchor 尺寸来调整特征形状的模块,如下式(3):

其式(3)中,fi、wi、hi分别图片中位置i 处的特征、anchor 的宽、高。先通过可变形卷积[12]获取预测anchor 形状的偏移量(offest),然后将最初的与offset 结合获得新的特征。

3.2 特征尺度不一致优化

3.2.1 ASFF 介绍

基于特征金字塔的一阶段行人检测模型,不同特征尺度之间的不连续性对行人检测影响不容小觑。针对这一问题,一些模型采用了一些尝试性策略。比如将相邻级别上对应的特征图区域设置为忽略区域[14],但这种忽略可能会增加相邻级别特征的误检。

论文提出一种自动训练不同尺度特征融合权重的特征金字塔融合策略,自动学习融合权重并过滤空间上的冲突信息来改善特征尺度一致性。对于某个级别的特征,首先将其他级别的特征调整为与该级别相同的分辨率后再融合,然后训练以找到最佳融合权重。网络训练过程中使每个空间位置自动学习不同尺寸特征之间融合权重,即那些携带冲突矛盾信息位置的权重在学习过程中越来越小,并且这一操作几乎不引入额外的推理开销。

3.2.2 YOLOv3- ASFF 模型结构

下图1 为YOLOv3 模型加入ASFF 模块的网络结构图,与使用逐元素求和级联集成多层特征的方法不同,论文自动地学习各个尺度特征图的空间融合权重。首先把不同尺寸的特征图缩放到相同的比例,接着将缩放后的各个尺寸的特征进行融合。

图1 YOLOv3 加入ASFF 模块网络结构图

图1中conv2d为标准卷积,f为输入通道,k为卷积核尺寸,out 为输出尺寸,s 为卷积步长,Residual 为残差结构,2*为该模块重复次数。Level1 为第一个尺度特征,Level2、Level3含义类同,stride 为特征卷积步长,ASFF1 为第一个尺度自动融合后的特征,ASFF2、ASFF3 含义类同,predict 为预测的目标框。将原YOLOv3 的三尺度特征,经过相同的缩放和自适应融合后,网络自适应地学习各个比例下特征图的空间融合权重。其中ASFF3 层特征融合的方式如下图2。

图2 ASFF3 层特征融合

下面说明特征自适应融合过程。令

为了进一步说明ASFF 如何对特征进行自适应融合,论文在图3 中对行人检测定性结果进行了可视化。

图3 行人检测定性分析图

图3 左侧为检测结果。右侧α、β、γ 所对应的列为融合权重标量的热图,Fused feature 对应的列为相应级别通道之间的值求和得到可视化激活图。检测结果中红色数字代表检行人融合特征所在的级别。为了说明问题,选取含有不同尺寸行人的图片作为自适应空间特征融合的对象。论文仅将目标在相应特征图中心处视为正例。由图3 可知,部分行人分别由级别2、3 特征图预测得到,还有一部分由级别2 和级别3特征融合预测得到。由于待检测图中不包含大尺寸行人,该图的检测过程中级别1 的特征被过滤掉,即将1 级特征视为背景,并在训练过程中该级别的不会出现正例梯度。同时在级别1 融合过程中,级别2 和级别3 缩放大小后的特征也被滤除,不会出现负例梯度。由图可知小尺寸行人更大程度由第3 级别预测得到。因此借助ASFF 模块,可以得到不同尺度的最佳融合权重。

4 数据准备与实验验证

4.1 试验数据

论文使用的数据集为:采集的学校和街道路口行人,一共5000 张,其中3000 张作为训练集,1500 作为验证集,500作为测试集。为了提高模型的检测精度,论文通过对原始图片和注释文件的相应矩形框进行缩放、水平翻转、随机裁剪和随机改变对比度等来增强图像数据;还采用一种视觉连贯的目标检测图像混合增强方法,称为mixup,该方法本质是在高维空间对数据进行插值,从而增加更多的伪数据集,类似于正则化,一定程度上减少了模型的过拟合程度[16]。

4.2 试验平台、训练方法、评估指标

本试验中使用的实验平台为:英特尔酷睿i7-7700 2.80GHz处理器、NVIDIA GTX 1060 显卡、Ubuntu16.04LTS 系统。使用CUDA 9.0 和CUDNN v7.0 的PyTorch v1.0.1框架来实现YOLOv3 和加入GA、ASFF 模块后的模型。由于模型使用GA 指导anchors 生成后,论文加入anchor 损失Lossanchor。又由于预测边界框时,宽、高两个变量互相关联,加入IOU 损失Lossanchor[13]。梯度优化的方式为随机梯度下降(SGD),batchsize为6。学习率为0.0001,beta1=0.9,beta2=0.999;模型训练了300 个epoch,并在最后30 个epoch 关闭mixup 增强功能。

平均精度(Average Precision,AP)用来衡量模型对于每个种类分类的好坏。mAP (mean average precision )则是针对所有类别而言。论文只有一类目标,两者意义相同,衡量行人检测精度。Precision-recall(PR)曲线横坐标和纵坐标分别是召回率(recall)和精确度(precision)[15]。通过取不同的阈值得到多组精度和召回率数值绘制得到。检测速度也是一个重要性能指标,每秒帧数(Frame Percent Secind,FPS)常用来衡量检测算法的速度。

4.3 试验结果

论文将添加anchor 损失、IoU 损失、mixup 数据增强等模块统称为trick。

表1 YOLOv3 和改进后YOLOv3 模型性能对比

由表1 可知,YOLOv3 模型中加入GA 和trick 后mAP提高了4.91%,且FPS 保持不变;在上述模型基础上进一步加入ASFF 模块,mAP 又提高了2.97%,FPS 依旧不变。最终可知在实时性相同的条件下YOLOv3+ASFF+trick 比原始YOLOv3 的行人检测精度提高了7.88%,说明YOLOv3 在加入mixup 增强方式、anchor 损失、IoU 损失,并使用GA 指导anchor 生成、和加入ASFF 模块后可以在计算量增加不大的条件下有效的提高检测精度,解决检测过程中anchor 不匹配和特征尺度不一致的问题。

为了评估论文算法的好坏,在两个不同的测试集上进行测试,测试结果如下表2所示。由表2 可知,论文算法的泛化能力和鲁棒性较好。

表2 YOLOv3+ASFF+trick 在不同数据集上的检测结果

YOLOv3、YOLOv3+GA+trick、YOLOv3+ASFF+GA+trick模型的PR 曲线如下图5(a)、(b)、(c)所示。

图5 Precision-recall 曲线

为了测试模型的泛化能力,将算法用于实际场景中,检测结果如下图6 显示。从图6 可知对于近处和偏远处的行人检测效果好,且不同尺度的行人能被正确的检测到。

图6 实际场景检测效果图

5 结语

基于YOLOv3 使用聚类生成的anchors 尺寸不合适阻碍行人检测精度及速度这一问题,论文采用GA 指导anchors 生成;且基于特征金字塔的行人检测模型,不同特征尺度之间的不连续性影响行人检测准确率的问题,论文在模型中加入一种自动训练不同尺度特征融合权重的融合策略。实验验证表明在依旧满足实时性的条件下很大程度得提高了行人的检测精度。不过对于尺寸过小和遮挡的行人会出现漏检现象,后续会针对此做进一步研究。

猜你喜欢

级别行人尺度
毒舌出没,行人避让
财产的五大尺度和五重应对
路不为寻找者而设
级别分明
迈向UHD HDR的“水晶” 十万元级别的SIM2 CRYSTAL4 UHD
新年导购手册之两万元以下级别好物推荐
你是什么级别的
我是行人
曝光闯红灯行人值得借鉴
宇宙的尺度