百度发布了PP-YOLO,并通过建立在YOLOv3(PaddlePaddle深度学习框架)和尖端计算机视觉研究的基础上,推动了目标检测研究的最先进水平。
PP-YOLO评估指标显示,与当前最先进的目标检测模型YOLOv4相比,性能有所提高。然而,百度的作者写道:
本文并不是要介绍一种新型的物体探测器。它更像是一份食谱,告诉您如何一步一步地构建更好的检测器。
YOLO最初由约瑟夫·雷蒙德(Joseph Redmond)创作,目的是探测物体。对象检测是一种计算机视觉技术,它通过在对象周围画一个边界框并识别给定框所属的类别标签来定位和标记对象。与大型NLP变压器不同,YOLO的设计非常小巧,可实现设备上部署的实时推理速度。
YOLO-9000是约瑟夫·雷蒙德(Joseph Redmond)发表的第二个物体探测器,改进了探测器,强调了探测器对世界上任何物体的泛化能力。
YOLOv3对检测网络做了进一步的改进,开始将目标检测流程纳入主流。我们开始发布教程,介绍如何在PyTorch中训练YOLOv3,如何在Kera中训练YOLOv3,并将YOLOv3的性能与EfficientDet(另一个最先进的检测器)进行比较。
自然,开源社区接过接力棒,继续推动YOLO技术向前发展。
YOLOv4最近是今年春天由Alexey AB在他的For of the YOLO Darknet库中发表的。YOLOv4主要是其他已知计算机视觉技术的集合,通过研究过程进行组合和验证。请看这里,在YOLOv4上进行深度潜水。YOLOv4论文读起来类似于PP-YOLO论文,我们将在下面看到。我们整理了一些关于如何在暗网中训练YOLOv4的很棒的培训教程。
然后,就在几个月前,YOLOv5发布了。YOLOv5采用了Darknet(基于C的)培训环境,并将网络转换为PyTorch。改进的训练技术进一步提高了模型的性能,并创建了一个很好的、易于使用的开箱即用的目标检测模型。从那以后,我们一直鼓励使用Roboflow的开发人员通过这个YOLOv5培训教程将他们的注意力集中到YOLOv5上,以形成他们的自定义对象检测器。
如果PaddlePaddle对您来说是新的,那么我们是在同一条船上。PaddlePaddle最初是用Python编写的,看起来类似于PyTorch和TensorFlow。深入研究PaddlePaddle框架很有趣,但超出了本文的范围。
PP-YOLO的论文读起来很像YOLOv4的论文,因为它是已知在计算机视觉中工作的技术的汇编。新的贡献是证明这些技术的集成提高了性能,并提供了一项关于每一步在整个过程中对模型有多大帮助的消融研究。
在我们深入研究PP-YOLO的贡献之前,回顾一下YOLO检测器体系结构将是有用的。
YOLO主干-YOLO主干是一种卷积神经网络,它汇集图像像素以形成不同粒度的特征。主干通常在分类数据集(通常是ImageNet)上进行预训练。
YOLO Neck-YOLO Neck(上面选择的FPN)在传递到预测头部之前组合和混合ConvNet层表示。
YOLO Head-这是网络中进行边界框和类预测的部分。它以类、盒、对象性三个YOLO损失函数为指导。
第一种PP YOLO技术是将YOLOv3 Darknet53主干替换为Resnet50-vd-DCN ConvNet主干。RESNET是一个更流行的主干,有更多的框架针对其执行进行了优化,并且它比Darknet53具有更少的参数。对于PP YOLO来说,通过交换这个主干看到MAP的改进是一个巨大的胜利。
PP YOLO跟踪网络参数的指数移动平均值,以保持预测时间内模型权重的阴影。这已被证明可以提高推理的准确性。
PP-YOLO将批量从64提高到192。当然,如果您有GPU内存限制,这很难实现。
PP YOLO在FPN颈部实现DropBlock正则化(过去,这通常发生在主干上)。DropBlock在网络中的给定步骤随机移除训练特征块,以教导模型不依赖关键特征进行检测。
YOLO损失函数不能很好地转换为MAP度量,后者在计算中大量使用UNION上的交集。因此,考虑到这一端预测来编辑训练损失函数是有用的。此编辑也出现在YOLOv4中。
PP-YOLO网络增加了一个预测分支来预测模型对给定对象的估计借条。在做出预测对象或不预测对象的决策时,将这种欠条意识包括在内可以提高性能。
旧的YOLO模型不能很好地预测锚箱区域的边界。以稍微不同的方式定义长方体坐标可以避免此问题。这项技术也出现在YOLOv4中。
非最大抑制是一种去除候选对象的建议以进行分类的技术。矩阵NMS是一种并行地对这些候选预测进行排序的技术,从而加快了计算速度。
CoordConv的动机是ConvNet在简单地将(x,y)坐标映射到一个热点像素空间时遇到的问题。CoordConv解决方案使卷积网络能够访问其自己的输入坐标。CoordConv干预在上面用黄色菱形标记。更多细节可以在CordConv的论文中找到。
空间金字塔池是骨干层之后的一个额外块,用于混合和汇集空间要素。也在YOLOv4和YOLOv5中实现。
PP YOLO的作者提炼出一个更大的ResNet模型作为主干。较好的预训练模型也能改善下游迁移学习。
事实上,作者指出,这是一个错误的问题。作者的意图不是介绍一种新的新探测器,而是展示仔细调整对象探测器以最大化性能的过程。这里引用了这篇论文的引言:
本文的重点是如何将一些几乎不影响效率的有效技巧叠加起来,以获得更好的性能。本文并不是要介绍一种新型的物体探测器。它更像是一份食谱,告诉您如何一步一步地构建更好的检测器。我们发现了一些对YOLOv3探测器有效的技巧,可以节省开发人员的试错时间。最终的PP-YOLO模型将COCO上的MAP从43.5%提高到45.2%,速度比YOLOv4快。
上面的PP-YOLO贡献参考将YOLOv3模型从38.9提高到44.6,并将推理FPS从58提高到73。白皮书中显示的这些指标超过了YOLOv4和EfficientDet目前公布的结果。
在将PP-YOLO与YOLOv5进行基准比较时,YOLOv5似乎在V100上仍具有最快的推断精度时间性能(AP与FPS)折衷。然而,YOLOv5的论文仍有待发布。此外,已经表明,在YOLOv5 Ultralytics存储库上培训YOLOv4体系结构的性能优于YOLOv5,并且,过渡地,使用YOLOv5贡献进行培训的YOLOv4将优于这里发布的PP-YOLO结果。这些结果仍有待正式公布,但可以追溯到GitHub的这次讨论。
值得注意的是,许多在YOLOv4中使用的技术(如架构搜索和数据增强)在PP YOLO中没有使用。这意味着,随着更多的这些技术组合和集成在一起,目标检测领域的最新水平仍有增长的空间。
PP-YOLO模型展示了最先进的目标检测的前景,但相对于其他目标检测器来说,改进是渐进的,并且它是在一个新的框架中编写的。在这个阶段,最好的做法是通过在您自己的数据集上训练PP-YOLO来开发您自己的经验结果。(要在您的数据集上轻松使用PP-YOLO时收到通知,请订阅我们的时事通讯。)
同时,我建议您查看以下YOLO教程,以便让您的对象检测器脱离地面: