摘要
目标检测是计算机视觉一个重要的领域。而目标检测算法的准确性和推理速度不可兼得,我们工作旨在通过tricks组合来平衡目标检测器的性能以及速度。考虑到yolo3的广泛应用,我们考虑在yolo3基础模型训练得到一个更快,准确率更高的模型,即PP-YOLO
介绍
最近出现了yolov4,5模型,这些模型也是基于yolo3算法改进得来。但PPYOLO并不像yolov4探究各种复杂的backbone和数据增广手段,也不是靠nas暴力搜索得到一个结构。我们在resnet骨干网络系列,数据增广仅靠mixup的条件下,通过合理的tricks组合,不断提升模型性能。
最终与其他模型对比图如下
方法
网络架构
BackBone骨干网络
yolov3使用的是较为大型的darknet53,考虑到resnet更广泛的应用以及多样化的分支,我们选用ResNet50-vd作为整个架构,并将部分卷积层替换成可变形卷积,适当增加了网络复杂度。由于DCN会带来额外的推理时间,我们仅仅在最后一层的3x3卷积替换成DCN卷积
DetectionNeck
这里依然采取的是FPN特征金字塔结构做一个特征融合,类似Yolo3,我们选取最后三个卷积层C3, C4, C5,然后经过FPN结构,将高层级语义信息和低层级信息进行融合。由于FPN我们接触的比较多了这里就不展开讲了
DetectionHead
原始yolo3的检测头是一个非常简单的结构,通过3x3卷积并最后用1x1卷积调整到自己所需要的通道数目。输出通道数为3(K+5),3代表每个层设定的三种尺寸的锚框,K代表类别数目,5又可以分成4+1,分别是目标框的4个参数,以及1个参数来判断框里是否有物体*。
Tricks的选择
更大的batchsize
使用更大的batch能让训练更加稳定,我们将batchsize从64调整到196,并适当调节训练策略以及学习率
滑动平均
类似于BN里的滑动平均,我们在训练参数更新上也做了滑动平均策略
W E M