百度飞桨PP-YOLO刷新工业级目标检测新高度!精度提升12.9个绝对百分点

  工业视觉、自动驾驶、安防、新零售等我们身边熟知的各行各业都需要目标检测技术,由于其很好的平衡了标注成本、检测精度和速度等,成为当前智能制造产业升级浪潮中被商业化应用最为广泛的AI技术之一。

  而实际生产环境对检测算法的精度、速度、体积等要求往往十分苛刻。例如工业质检,生产线上往往需要毫秒级别的图片检测速度,而为了确保使用厂商收益最大化,还需要尽量平衡硬件成本和性能。因此,如何在保持高检测精度的前提下,尽量提高检测速度、减小模型体积,成为这项技术真正深入工业实际应用的关键。

图片[1]-百度飞桨PP-YOLO刷新工业级目标检测新高度!精度提升12.9个绝对百分点-4747i站长资讯

  而目标检测的王牌家族——YOLO系列模型,作为单阶段目标检测算法的代表之一,一经出世,便以快速精准的检测效果而迅速蹿红。其不仅在速度上做到真正实时,精度上也可以达到很多非实时两阶段模型才有的水平。

图片[2]-百度飞桨PP-YOLO刷新工业级目标检测新高度!精度提升12.9个绝对百分点-4747i站长资讯

  (来自论文《YOLOv3: An Incremental Improvement》)

  而学术界和开源社区中的YOLO拥趸、大神们,并未止步于此, YOLOv4、“YOLO v5”也在今年被相继推出,它们大量整合了计算机视觉的state-of-the-art技巧,例如在数据增强、锚定框、骨架网络、训练方式等维度进行优化,从而达到大幅提升YOLO目标检测性能的效果。

  飞桨目标检测套件PaddleDetection研发团队为了让YOLOv3模型在工业实际应用场景拥有更优异的精度与推理速度,以尽量不增加模型计算量和推理开销为前提,探索出了一整套更深度的算法优化秘籍,将原先YOLOv3模型的精度,在COCO test-dev2017数据集中,从33.0%提升了12.9个绝对百分点,达到45.9%,处于业界领先行列!而在该精度下,其推理速度在V100上达到了72.9 FPS。也就是说,它在精度和预测速度都超越原生的YOLOv4,并且体积更小,实打实的成为工业应用场景最实用目标检测模型。而这次华丽变身后的YOLOv3,也被正式命名为——PP-YOLO!

图片[3]-百度飞桨PP-YOLO刷新工业级目标检测新高度!精度提升12.9个绝对百分点-4747i站长资讯

  如下表所示,在不同输入尺度下PP-YOLO模型与YOLOv4模型在COCO数据集精度和V100推理速度的交手结果。

图片[4]-百度飞桨PP-YOLO刷新工业级目标检测新高度!精度提升12.9个绝对百分点-4747i站长资讯

  (表中数据均为在单卡Tesla V100上batch size=1测试结果,TRT-FP16为使用TensorRT且在FP16上的测试结果,TensorRT版本为5.1.2.2)

  而PP-YOLO所应用的的这套优化策略,也可以被尝试应用到该系列的其它模型上,产业开发者或者科研人员可借鉴这套优化算法展开进一步的探索。而这整套PP-YOLO的优化秘籍也被飞桨同学总结梳理成了论文,感兴趣的开发者可以参见飞桨公众号。

  飞桨团队也在AI Studio为大家创建了 PP-YOLO实战项目,以供开发者快速体验模型效果。

  PP -YOLO的高精度和高推理速度对多快速运动目标检测的视频也可以达到很好的效果。

  那PP-YOLO到底采用了哪些优化策略呢?下面咱们带领大家一起来深入剖析一下飞桨团队算法优化的 “内功心法”。

  1. 基于YOLOv3-DarkNet53的初步优化

  原始的YOLOv3模型在COCO minival数据集上精度为33.0%,PaddleDetection首先加入了Bag of Freebies for Training Object Detection Neural Networks论文中提及的优化策略,在不引入额外计算量的情况下,精度提升了3.9个百分点,达到38.9%。具体策略如下:

  Image Mixup(图像混合):以随机权重将两张图片混合起来,提高网络在空间上的抗干扰能力。以下图为例,将任意两张图片加权叠加作为输入,训练过程中使用的损失为两张图片的损失乘以各自权重的加和。

图片[5]-百度飞桨PP-YOLO刷新工业级目标检测新高度!精度提升12.9个绝对百分点-4747i站长资讯

  (来自论文《Bag of Freebies for Training Object Detection Neural Networks》)

  Label Smooth(标签平滑):通过在真实的分类标签one-hot编码中真实类别的1上减去一个小量,非真实标签的0上加上一个小量,将硬标签变成一个软的标签,起到正则化的作用,防止过拟合,提升模型泛化能力。

  Synchronize Batch Normalization(同步批归一化):多卡训练时,一般实现的批归一化只统计单卡上均值和方差,而检测任务中,受显存的限制,batch size比较小,多卡同步,会使得均值和方差统计的更加准确。

  2. 更优的骨干网络: ResNet50vd-DCN

  骨干网络可以说是一个模型的基础,一个优秀的骨干网络会给模型的性能带来极大的提升。针对YOLOv3,飞桨研发人员使用更加优异的ResNet50vd-DCN 作为模型的骨干网络。它可以被分为ResNet50vd和DCN两部分来看。

  ResNet50vd是指拥有50个卷积层的ResNet-D网络。ResNet系列模型是在2015年提出后,在学术界和工业届得到了广泛的应用,其模型结构也在被业界开发者持续改进,在经过了B、C、D三个版本的改进后,最新的ResNet-D结构能在基本不增加计算量的情况下先住提高模型精度。经飞桨团队的多重实验发现,使用ResNet50vd结构作为骨干网络,相比于原始的ResNet,可以提高1%-2%的目标检测精度,且推理速度基本保持不变。

C:\Users\chikai\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\AE1836FE.tmp

  而DCN(Deformable Convolution)可变形卷积的特点在于:其卷积核在每一个元素上额外增加了一个可学习的偏移参数。这样的卷积核在学习过程中可以调整卷积的感受野,从而能够更好的提取图像特征,以达到提升目标检测精度的目的。但它会在一定程度上引入额外的计算开销。经过多翻尝试,PaddleDetection团队发现只在ResNet的最后一个stage(C5)增加可变形卷积,是实现引入极少计算量并提升模型精度的最佳策略。

  在使用ResNet50vd-DCN作为骨干网络后,YOLOv3模型的检测精度从原先的38.9% 达到39.1%,而推理速度得到了36%的大幅提高(58.2FPS -> 79.2FPS)。

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享