【每天进步一点点】【Atlas 200 DK】基于YOLOv3_Resnet18的行人检测
基于YOLOv3_Resnet18的行人检测
一、特征提取网络Resnet18
行人检测部分使用了目前主流目标检测算法YOLOv3,特征提取网络由Darknet53转变为经典的Resnet18。Resnet网络的提出很好地解决了随着网络加深,训练集准确率下降的问题,性能更为优良。
从经验来看,网络深度的增加,一般能学习到更多的特征,获得更好的性能,但实践发现随着网络加深,深度网络出现退化,准确度饱和甚至下降,比如56层的网络效果可能比18层的网络更差,但这并不是过拟合造成的,因为网络的训练误差依然很高,这使得深度网络训练遇到了难题,性能无法通过加深网络得以提升。残差学习的提出为解决此问题提供了一种可能,残差学习基于这样的假设:希望在浅层网络通过叠加网络层提升性能,在叠加的网络层不进行学习,仅仅复制浅层网络
的特征,性能应该和该浅层网络一致,不会出现退化现象。
图1 残差学习:基本模块
Resnet网络是在经典的VGG19网络基础上,通过短路机制引入残差单元,直接使用Stride = 2的卷积做下采样,并且用Global Average Pool层替换了全连接层,其
重要原则为当Feature Map大小降低一半时,数量增加一倍,这保持了网络层的复杂度,维持增加网络层数带来的性能提升。Resnet使用了两种残差单元,分别对应
浅层网络和深层网络,以适应不同需要。
Resnet网络性能优良,很快成为了计算机视觉任务中的主流网络架构之一,也衍生出很多改进版,是非常受欢迎的架构。同时,参考官方文档,针对Ascend 310芯
片的特点,做了适配和优化,尽量提升3D Cube的利用率,相应减小数据搬移和Vector运算的比例,以提升算法性能。注意了边界算子规格,输入数据的处理,比如
输入数据最大支持四维,转维算子(例如Reshape、Expanddim)等不能输出五维等细节问题。同时,注意到模型中的算子只支持2D卷积,暂不支持3D卷积,参考
官方建议,矩阵乘法的MKN以及conv、concat等算子的输入或输出通道数采用16的整数倍等问题。
二、跨尺度预测
YOLOv3在输入映射到输出方面,对应三种不同尺度特征图,输出3个不同尺度的张量,是输入图像各个单元格中目标对象的概率,当输入为416×416时,在每个尺
度的特征图的每个单元格设置3个先验框,总共有10647个预测,且每一个预测是一个85维向量,包含边框坐标(4个数值),边框置信度(1个数值),对象类别的
概率(以COCO数据集为例,有80种对象)。且是在不同分辨率上进行,对小物体的检测效果较好。
为了更好地在Atlas平台运行,适配硬件处理,提高运行速度,使用Atlas 200 DK提供的数字视觉预处理(Digital Vision Pre-Processing,DVPP)模块做数据处
理,由于使用输出限定宽高为128:16对齐,这里参考官方文档例程建议,考虑到一般来说图片的宽和高越大,对目标检测越好,设置为640×352,不破坏原算法输入
尺寸需要为32的倍数的限制,同时降低了数据处理开销和带宽压力。
同时,由于输入图像大小的改变,相应地适配先验框将原来的(373×326) 改为(163×326)。
图2 YOLOv3的输出
三、边界框预测
延续YOLOv3采用回归策略的端到端的策略,便于部署。假设将输入图像网格化,如果检测目标的中心落在网格中,网络则对检测目标的具体位置做估计。假设每个
网格需要预测N个边界框,则输出结果为每个边界框的位置坐标和置信度。
图3 具有尺寸先验和位置的边界框预测
PS:不好意思,输入公式不太方便,就直接上图了。
这里采用逻辑回归预测每个边界框的待检测物体的得分,每个边界框使用多标记分类预测框中可能包含的物体类别,由于使用了独立的逻辑分类器,可以较为简单地
用于其他更为复杂的领域,更好适应大量重叠标签的情况。
- 点赞
- 收藏
- 关注作者
评论(0)