【每天进步一点点】【Atlas 200 DK】基于YOLOv3_Resnet18的行人检测——行人检测算法的选择

举报
Tianyi_Li 发表于 2020/08/27 20:24:40 2020/08/27
【摘要】 行人检测与跟踪算法的比较和选择行人检测是后续跟踪的必要前提,检测算法的性能对跟踪影响较大。目前,行人检测算法一般依赖于通用目标检测框架,或在其基础上做优化。基于深度学习的目标检测算法是目前的主流。作为开创了使用深度学习进行目标检测的先河的R-CNN算法,是第一个能达到工业级应用的解决方案,影响了目标检测领域的主要研究思路,刷新了当时PASCAL VOC 2012的最好成绩,mAP达到了53....

行人检测算法的比较和选择

行人检测是后续跟踪的必要前提,检测算法的性能对跟踪影响较大。目前,行人检测算法一般依赖于通用目标检测框架,或在其基础上做优化。基于深度学习的目标

检测算法是目前的主流。

作为开创了使用深度学习进行目标检测的先河的R-CNN算法,是第一个能达到工业级应用的解决方案,影响了目标检测领域的主要研究思路,刷新了当时

PASCAL VOC 2012的最好成绩,mAP达到了53.3%。R-CNN的主要工作分为三步:

首先,借助一个可以生成约数千个 Region Proposal 的选择性搜索(Selective Search)算法,对输入图像进行扫描,来获取可能出现的目标。

然后,在每个 Region Proposal 上都运行一个卷积神经网络。

最后,将每个卷积神经网络的输出都输入进一个支持向量机和一个线性回归器。

前者对上述区域进行分类,后者收缩目标周围的边界框,前提是这样的目标存在。R-CNN把Region Proposal和CNNs结合起来,在候选区域上自下而上使用大型卷

积神经网络,用以定位和分割目标。同时,设定当带标签的训练数据不足时,先对辅助任务进行有监督预训练,再进行针对任务的调优,产生了明显的性能提升。

R-CNN计算量较大,分阶段训练,调参较难,且训练和推理耗时较长,Fast-RCNN对此做了改进。


                图1  R-CNNFast R-CNN的结构对比


Fast-RCNN基于R-CNN优化算法,训练和推理时间短于R-CNN,精度相差不大,但仍无法达到落地应用的快速处理的要求,且没有摆脱分步执行的限制,整个网络

不是端到端实现。

Faster-RCNN的提出将R-CNN以来的目标检测的候选区域生成、特征提取、分类、位置精确化四个基本部分在一个深度学习框架下统一,可以完全在GPU中完成,

运行速度有了较大提高。

Faster-RCNN主要改进有,设计并训练区域生成网络代替了Fast-RCNN中的Selective Search,使用共享特征提取网络。在COCO数据集训练,PASCAL VOC上测

试,准确率提升约6%,迁移性良好。但区域生成网络带来了性能的提升,也带来了计算资源的增加,推理时间较长,无法满足实际应用的要求。

借鉴Faster-RCNN通过在所有Region Proposal 上共享同CNN来改善检测速度,R-FCN进一步通过最大程度上共享计算来提升速度,并使用位置敏感分数图在位置

的不变性和可变性之间得到了较好的平衡。主要过程为:

先在输入图像上运行一个 CNN,然后添加一个全卷积层,以生成位置敏感分数图的Score Bank。

然后,运行一个全卷积 Region Proposal 网络以生成感兴趣区域(Regions of Interest, RoI)。对于每个RoI,都将其切分成同样的 k²个子区域作为分数图。

再对每个子区域,通过检查Score Bank,以判断该子区域是否匹配具体目标的对应位置。当每个 k²子区域都具备每个类的目标匹配值,则对这些子区域求平均值,得

到每个类的分数。

最终,通过对剩下 C+1 个维度向量进行 Softmax 回归,对RoI进行分类。

在和Faster-RCNN相当的准确率下,速度得到提高,但处理过程过于复杂,计算量大,耗时较长,仍无法满足部署到边缘计算设备的要求。

与R-FCN等两阶段目标检测不同,SSD在单个步骤中完成通过 Region Proposal网络生成感兴趣区域。然后,用全连接层或位置敏感卷积层来对得到的区域进行分

类,并且在处理图像的同时预测边界框和类。相比Faster-RCNN,速度大大提升。在一定条件下,稀疏场景的大目标检测精度超过Faster-RCNN但总的来说,准确率不如Faster-RCNN,且需要人工设置的参数较多,比如网格中的Default Box的大小等,调试过程对经验依赖较高。

                      图2 SSD 结构示意图


为了进一步提高目标检测的精度,RetinaNet算法应用而生,主要由Resnet +FPN+两个FCN子网组成,基于新提出的Focal Loss,通过在原有交叉熵损失上乘了个使

易检测目标对模型训练贡献削弱的指数式,较好解决了类别失衡问题,使得精度提高,但带来了计算量的增加,导致速度有所降低。

在保证精度的情况下,如何提高速度成为目前部署应用面临的主要问题,正是在这样的背景下,YOLOv3的提出做了一个较好的速度和准确率的平衡。YOLOv3延续

YOLOv2使用的Darknet-19,并融入残差网络的跳层连接,一共53层,称为Darknet-53。整体性能和计算量都有提升,在尽量减小网络层数的基础上,取得了较好

的准确率。


        图3  Darknet-53结构图


为了更好的检测不同大小的目标对象,YOLOv3使用了三种不同尺度的特征图进行目标检测,以输入416×416为例,得到13×13、26×26、52×52的特征图,其中,

13×13的特征图具有最大的感受野,适合检测图像中大尺寸的目标,52×52的特征图的感受野最小,适合检测图像中小尺寸的目标。

相比 Faster R-CNN中人工设计Anchor 的大小和比例,YOLOv3利用K-Means聚类方法确定更加贴合数据集的先验框,为每种特征图设置了3种先验框,共得到9个

聚类,在分配上,在13×13特征图上,由于有最大的感受野,使用了较大的先验框(116 × 90)、(156 × 198)、(373 × 326),以适应检测大目标。中等的26 × 26特

征图上,应用中等的先验框(30 × 61)、(62 × 45)、(59 × 119),来适合检测中等大小的目标。同理,最大的52×52特征图上,应用较小的先验框(10 × 13)、(16 × 

30)、(33 × 23),适合检测小目标。


表1 在COCO test-dev上YOLOv3、SSD、Retinanet的表现

实验表明,输入为416×416时,在Pascal Titan X的处理速度达到了30FPS,并且在COCO数据集上mAP值达到了57.9%,达到了SOAT的准确度。

在实际应用中,受限于部署环境和应用的要求,一般要考虑以下几点:

· 快速完成处理。快速完成处理,发挥靠近数据源的优势。

· 准确率高。根据实际应用场景和要求,有时可以牺牲一些准确率,以换取速度的提升。

· 通用性好。具体应用中,可能是对某种特定目标检测,需要算法能很好的迁移适应,准确检测出感兴趣的目标。比如这里我们希望对行人进行检测,其他目标并不感

兴趣。

· 计算复杂度适中。实际应用部署时,因各种资源有限,要求算法不能过于复杂,能够运行在低能耗的边缘计算设备上。


基于快速处理的要求,我们放弃了RCNN、Fast-RCNN以及后续的Faster-RCNN,考虑SSD、Retinanet以及YOLOv3。因为前者两阶段完成检测,速度较慢。在后

三者中,相比于SSD,YOLOv3在输入图像尺寸相当的情况下,相同速度下,mAP高出10,在类别的判断上更加准确。同时,与Retinanet相比,YOLOv3速度更快

,几乎是前者的两倍,mAP甚至还略高。总体来说,YOLOv3在速度和准确率二者间取得了一个较好的平衡。在算法方面,YOLOv3中以32倍降采样,16倍降采样,

8倍降采样时进行检测的计算很契合Ascend 310处理器运行时参数最好为16的整数倍的特点,有利于提高3D Cube计算单元的利用率。同时,YOLOv3中放弃了

Pooling等Vector算子,在Ascend 310上性能较好。考虑实际部署时,对速度和准确率的要求,以及为更好发挥Atlas 200 DK自身硬件优势,YOLOv3成为了最终选择。

正是基于在速度和准确率间做了很好的平衡,YOLOv3也是目前应用最广的主流算法之一,广泛应用于工业界的各种目标检测应用。并有很多研究者在做优化,在持续更新中,这也为后续应用的升级提供了方便。

                                                             图4 YOLOv3结构图

但在实际应用中,我们也注意到YOLOv3的特征提取网络Darknet-53较深,深层网络一般来说能更好地提取具有代表性的特征,但也带来了计算资源的增加,同时带

来的耗能也较高。基于方便部署的考虑,希望选用更为灵活轻便的经典网络代替原来的Darknet-53网络。同时,考虑到YOLOv3是对通用目标检测(COCO数据集有

80种类别),为能适应不同种类物体检测,学习差异较大的不同物体的特征,这是较好的做法。本文仅需对于行人检测,任务更为简单,不需要太深的网络。同时

Atlas 200 DK作为边缘设备部署,要尽量降低计算量来提高运行速度和降低功耗。

最终,经过抉择,我们选择了以Resnet18为主干的YOLOv3_Resnet18算法(详情可见ModelArts中的AI市场)

主要优势如下:

首先,Darknet-53借鉴了Resnet的思想,引入了Resnet网络中的残差块,选用较为接近的Resnet网络相比其他更为适合。

其次,考虑到具体应用为行人检测,是单类别多目标检测,任务更为简单,同时为减小计算量,以更快处理,选用层数较少的经典Resnet18。

此外,Resnet网络作为目前主流算法之一,改进及变体较多,这也方便后续优化提升网络性能提供方便。

最后,参考Atlas平台资料及Atlas 200 DK文档,了解到Ascend 310处理器对Resnet网络支持较好,性能做了专门优化。同时,将原来YOLOv3的DBL中的

Leaky relu换为更为常用的relu,组成Conv + BatchNorm + relu的组合,该组合基于Ascend 310处理器特点做过专门优化[40],有助于提升算法性能。

在实际设计中针对Atlas平台做了适配,以更好的运行,提高运行速度。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。