实时目标检测是计算机视觉中一个重要的研究课题。运行实时目标检测器的计算设备通常是一些移动端CPU、GPU或者近几年研发的神经处理单元NPU。不同的边缘设备针对不同的卷积结构有不同的加速效果,进而促进不同的实时目标检测器针对不同的边缘设备进行开发。例如,MCUNet和NanoDet的开发专注于生产低功耗单芯片并提高边缘CPU的推理速度;YOLOX、YOLOR等方法专注于提高各种GPU的推理速度。
近年来,实时探测器的发展主要集中在高效的结构设计上,并且模型结构重参化和动态标签分配已成为网络训练和目标检测中的重要优化方向。基于上述问题,YOLOV7不仅实现了架构的优化,能够同时支持移动GPU和从边缘到云端的GPU设备,同时主要从损失函数、标签分配方法和训练方法三方面入手设计性能更好的检测模型。
YOLOV7的贡献:在 5FPS 到160FPS范围内,无论是从速度还是精度上,YOLOV7都超过了目前已知的所有检测器!其最高的模型AP值达到56.8%,有30FPS。其团队详细对比了YOLOV7和其他变体的性能,从数据上来看,YOLOV7真正做到了吊打一切。其主要通过一下三个方式实现上述功能。
新的ELAN对原有架构的梯度传输路径并没有改变,只改变了计算模块中的结构。其中使用组卷积来增加添加特征的基数,并用shuffle和merge cardinality的方式组合不同组的特征。除了维护原始的ELAN架构外,E- ELAN还可以利用不同的分组模块来学习更加具有多样性的特征。基于此设计的方法无论梯度路径长度和计算模块数量如何,都达到了稳定的状态,提高了网络的学习能力,提高参数的计算和利用效率。
同时设计基于拼接的模型放缩模块。通过调整基础模型的放缩参数来获得满足不同推理速度需求的模型结构。之前的方法采用的模型由PlainNet或者ResNet,这些模型的特点是输入通道数和输出通道数是相同的,调整深度、宽度等因子不会对另一个因子产生影响,使用基于拼接的模型放缩模块后,拼接层的通道数会增加或者减少而不是保持不变,作者采用复合模型放缩方法,在修改深度因子后,计算转移层对应宽度变化的比例,然后对宽度施加同样的宽度缩放,使得模型可以保持最优的结构模型。
作者所提的模型为v7-X,实验结果表明调整不同的宽度、深度因子,该模型比单独调整1.25倍宽度因子和2.0倍深度因子拥有更少的参数和更高的精度。
尽管RepConv在VGG上取得了优异的性能,但将它直接应用于Resnet和DenseNet或其他网络架构时,他的精度会显著降低。基于此,作者使用梯度传播路径分析不同的重参化模块应该和哪些网络搭配使用。通过分析RepConv与不同架构的组合以及产生的性能,作者发现RepConv中的identity破坏了ResNet中的残差结构和DenseNet中的跨层连接,这为不同的特征图提供了梯度的多样性。
基于上述原因,作者没有使用identity连接的RepConv结构,使用梯度流传播路径来分析如何重参化参数,采用不带恒等连接的RepConv,即RepConvN,以与不同的网络相结合。
深度监督可以显著提高模型在许多任务上的性能,是一种常用于训练深度网络的技术,主要是在网路的中间层增加额外的辅助头,以及以辅助loss为指导的浅层网络权重。其中,主导头表示负责最终输出的特征图,辅助头表示用于辅助训练额外添加的训练分支的特征图。在深度网络的训练中,标签分配通常直接指的是真值(ground truth),并根据给定的规则生成硬标签(hard label)。然而近年来,以目标检测为例,研究者经常利用网络预测的质量分布来结合真值,使用一些计算和优化方法来生成可靠的软标签(soft label)。例如,YOLO使用预测框和真值的IoU作为软标签。在本文中,作者将网络预测结果与真值计算后再分配软标签的机制称为“标签分配器”(label assigner)。将辅助头和主导头分离,然后利用它们各自的预测结果和真值执行标签分配。作者提出了两种标签分配器:
1)主导头主导的标签分配器
将预测结果和真值进行计算,通过优化过程生成软标签,作为辅助头和主导头的训练目标来训练模型。这使主导头具有较强的学习能力,由此产生的软标签更能代表源数据与目标之间的分布差异和相关性,主导头能更加专注于尚未学习到的残余信息。
2)由粗到精的主导头标签分配器
使用自身的预测值和真值来生成两组不同的软标签,即粗标签和细标签,其中细标签与主导头在标签分配器上生成的软标签相同,粗标签是通过放松正样本限制条件,从而允许更多样本被分为正样本。如果粗标签的附加权重接近细标签的附加权重,可能会在最终预测时产生错误的先验结果,作者在这里设置限制使得粗标签永远大于细标签,使细标签成为粗标签上界。
作者为边缘GPU、普通GPU和云GPU设计了三种模型,分别被称为YOLOv7-Tiny、YOLOv7和YOLOv7-W6。同时,还使用基本模型针对不同的服务需求进行缩放,并得到不同大小的模型。对于YOLOv7使用所提出的复合缩放方法对整个模型的深度和宽度进行缩放,此方法获得了YOLOv7-X。对于YOLOv7-W6,使用提出的缩放方法得到了YOLOv7-E6和YOLOv7-D6。此外,在YOLOv7-E6使用了提出的E-ELAN,从而完成了YOLOv7-E6E。由于YOLOv7-tiny是一个面向边缘GPU架构的模型,因此它将使用ReLU作为激活函数,对于其他模型,使用SiLU作为激活函数。
作者仅采用了COCO数据集从头训练,未采用额外数据集。与其他最新的目标检测算法相似,通过调整IoU阈值,可以获得测试集上的更高检测精度结果。
(2022-11-26 12:16:17)
- 政府
- 上级指导单位