作者:初一,凯恒等准确率和推理效率。在研发过程中,视觉智能部不断探索和优化,同时吸收了学术界和工业界的一些前沿进展和科研成果。在权威目标检测数据集COCO上的实验结果表明,YOLOv6在检测精度和速度上均超越同规模的其他算法,并且支持多种不同平台的部署,大大简化了项目部署时的适配工作。特此开源,希望能帮助到更多同学。一、概述YOLOv6是美团视觉智能部研发的目标检测框架,致力于行业应用。该框架同时关注检测准确性和推理效率。业界常用尺寸模型中:YOLOv6-nano在COCO上的准确率为35.0%AP,在T4上的推理速度为1242FPS;YOLOv6-s在COCO上准确率可达43.1%AP,推理速度在T4上可达520FPS。在部署方面,YOLOv6支持GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、NCNN)等不同平台的部署,大大简化了项目部署时的适配工作。目前项目已经开源到Github,传送门:YOLOv6。欢迎有需要的朋友收藏,随时使用。新框架的准确率和速度远超YOLOv5和YOLOX。目标检测作为计算机视觉领域的一项基础技术,在业界得到了广泛的应用。其中,YOLO系列算法因其更好的综合性能逐渐成为大多数行业的热门。申请时的首选框架。迄今为止,业界已经衍生出很多YOLO检测框架,其中YOLOv5[1]、YOLOX[2]和PP-YOLOE[3]最具代表性,但在实际使用中,我们发现上述框架仍然在速度和准确性方面。有很大的改进空间。基于此,我们通过研究和借鉴业界已有的先进技术,开发了一种全新的目标检测框架——YOLOv6。该框架支持模型训练、推理、多平台部署等全链条行业应用需求,并在网络结构、训练策略等算法层面进行了多项改进和优化。在COCO数据集上,YOLOv6兼具准确性和速度。超越了同等体积的其他算法,相关结果如下图1所示:图1-1YOLOv6各种尺寸模型与其他模型的性能对比图1-2YOLOv6与其他模型在不同分辨率下的性能对比图图1-1展示了不同规模网络的性能各检测算法的性能对比。曲线上的点代表检测算法在不同网络规模(s/tiny/nano)下的模型性能。从图中可以看出,YOLOv6在精度和速度上都超越了其他YOLO系列的同体积算法。图1-2展示了输入分辨率变化时各检测网络模型的性能对比。曲线上的点代表图像分辨率从左到右依次增加(384/448/512/576/640)时模型的性能。Performance,从图中可以看出,YOLOv6在不同分辨率下依然保持着较大的性能优势。2.YOLOv6关键技术介绍YOLOv6在Backbone,Neck,Head和trainingstrategies上做了很多改进:我们统一设计了更高效的Backbone和Neck:灵感来自hardware-awareneural的设计思想网络,基于RepVGG风格[4],设计了可重新参数化、更高效的骨干网络EfficientRepBackbone和Rep-PANNeck。优化了更简洁有效的EfficientDecoupledHead的设计,在保持精度的同时,进一步降低了一般decoupledhead带来的额外延迟开销。在训练策略上,我们采用Anchor-free无锚范式,辅以SimOTA[2]标签分配策略和SIoU[9]边界框回归损失,进一步提高检测精度。2.1Hardware-friendlybackbonenetworkdesignYOLOv5/YOLOX使用的Backbone和Neck都是基于CSPNet[5],采用多分支方法和残差结构。对于GPU等硬件,这种结构会在一定程度上增加延迟,同时降低内存带宽利用率。下图2是计算机体系结构领域对Roofline模型[8]的介绍,展示了硬件中计算能力和内存带宽之间的关系。图2Roofline模型简介因此,我们基于硬件感知神经网络设计的思想,对Backbone和Neck进行了重新设计和优化。这种思路是基于硬件的特点,推理框架/编译框架的特点,以硬件和编译器友好的结构为设计原则。在构建网络时,综合考虑硬件计算能力、内存带宽、编译优化特性、网络表示能力等,进而得到一个又快又好的网络结构。对于上述重新设计的两个检测组件,我们在YOLOv6中分别称之为EfficientRepBackbone和Rep-PANNeck,它们的主要贡献在于引入了RepVGG[4]style结构。基于硬件感知的思想重新设计了Backbone和Neck。RepVGG[4]Style结构是一种可重参数化结构,在训练时具有多分支拓扑结构,在实际部署时可以等效地融合成单个3x3卷积(融合过程如下图3所示)。通过融合的3x3卷积结构,可以有效利用密集型硬件(如GPU)的计算能力,同时也得到了GPU/CPU上高度优化的NVIDIAcuDNN和IntelMKL编译框架的帮助。实验表明,通过上述策略,YOLOv6减少了硬件上的延迟,显着提高了算法的准确率,使得检测网络更快更强。以纳米尺寸模型为例,与YOLOv5-nano采用的网络结构相比,该方法速度提升21%,准确率提升3.6%AP。图3Rep算子的融合过程[4]EfficientRepBackbone:在Backbone设计方面,我们基于上述Rep算子设计了一个高效的Backbone。与YOLOv5使用的CSP-Backbone相比,Backbone可以高效利用硬件(如GPU)的计算能力,同时具有很强的表示能力。下图4是EfficientRepBackbone的具体设计结构图。我们将Backbone中stride=2的普通Conv层替换为stride=2的RepConv层。同时,将原来的CSP-Block重新设计为RepBlock,其中RepBlock的第一个RepConv会做通道维度的变换和对齐。此外,我们将原始SPPF优化为更高效的SimSPPF。图4EfficientRepBackbone结构图Rep-PAN:在Neck设计方面,为了使其在硬件上的推理更加高效,在准确率和速度上取得更好的平衡,我们为YOLOv6设计了硬件感知的神经网络设计思路。更有效的特征融合网络结构。Rep-PAN是在PAN[6]拓扑的基础上,将YOLOv5中使用的CSP-Block替换为RepBlock,同时调整了整体Neck中的算子,目的是在硬件上实现高效推理的同时保持更好的多尺度特征融合能力(Rep-PAN结构图如下图5所示)。图5Rep-PAN结构图2.2更简洁高效的DecoupledHead在YOLOv6中,我们采用了DecoupledHead结构,简化了其设计。原来YOLOv5的检测头是通过分类和回归分支的融合和共享来实现的,而YOLOX的检测头将分类和回归分支解耦,额外增加了两个3x3的卷积层,虽然提高了检测精度,但是一定程度上增加了网络延迟。因此,我们简化了decouplinghead的设计,同时兼顾相关算子的表示能力和硬件上的计算开销之间的平衡,利用HybridChannels策略重新设计了一种更高效的decouplinghead结构。同时降低了精度,减轻了去耦头中3x3卷积带来的额外延迟开销。通过在纳米尺寸模型上的烧蚀实验,与相同通道数的解耦头结构相比,精度提高了0.2%AP,速度提高了6.8%。图6EfficientDecoupledHead结构图2.3更有效的训练策略为了进一步提高检测精度,我们吸收了学术界和工业界其他检测框架的先进研究进展:Anchor-free非锚范式、SimOTA标签分配策略和SIoU边界框回归损失。Anchor-freeAnchor-freeparadigmYOLOv6采用了更加简洁的Anchor-free检测方式。由于Anchor-baseddetector在训练前需要进行聚类分析以确定最优的Anchor集,这会在一定程度上增加检测器的复杂度;同时,在一些边缘端应用中,需要在硬件之间承载大量的检测结果步骤,也会带来额外的延迟。Anchor-free范式由于泛化能力强,解码逻辑更简单,近年来得到广泛应用。经过对Anchor-free的实验研究,我们发现与Anchor-based检测器的复杂性导致的额外延迟相比,Anchor-free检测器的速度提高了51%。SimOTA标签分配策略为了获得更多高质量的正样本,YOLOv6引入SimOTA[4]算法动态分配正样本,进一步提高检测精度。YOLOv5的标签分配策略是基于Shapematching的,通过交叉网格匹配策略增加正样本的数量,使网络能够快速收敛。但是这种方法是一种静态的分配方法,在网络训练过程中不会进行调整。近年来,出现了许多基于动态标签分配的方法。此类方法会在训练时根据网络输出分配正样本,从而产生更多高质量的正样本,进而促进网络的正向优化。例如,OTA[7]通过将样本匹配建模为最优传输问题来获得全局信息下的最优样本匹配策略以提高精度,但OTA使用Sinkhorn-Knopp算法延长了训练时间,而SimOTA[7]4]该算法采用Top-K逼近策略得到样本的最佳匹配,大大加快了训练速度。因此,YOLOv6采用SimOTA动态分配策略,结合anchor-free范式,在纳米尺寸模型上的平均检测精度提高了1.3%AP。SIoU边界框回归损失为了进一步提高回归精度,YOLOv6使用SIoU[9]边界框回归损失函数来监督网络的学习。目标检测网络的训练一般需要定义至少两种损失函数:分类损失和边界框回归损失,而损失函数的定义往往对检测精度和训练速度有很大的影响。近年来常用的边界框回归损失包括IoU、GIoU、CIoU、DIoU损失等,这些损失函数通过考虑预测框与目标框的重叠程度等因素来衡量预测框与目标框的关系。目标框、中心点之间的距离和纵横比。为了引导网络最小化损失以提高回归精度,但是这些方法没有考虑预测框和目标框之间的方向匹配。SIoU损失函数通过引入所需回归之间的矢量夹角重新定义了距离损失,有效降低了回归的自由度,加快了网络收敛速度,进一步提高了回归精度。通过在YOLOv6s上使用SIoUloss进行实验,与CIoUloss相比,平均检测精度提高了0.3%AP。3.实验结果经过以上优化策略和改进,YOLOv6在不同尺寸的模型中都取得了优异的性能。下表1为YOLOv6-nano的消融实验结果。从实验结果可以看出,我们自行设计的检测网络在准确率和速度上都带来了很大的提升。表1YOLOv6-nanoablation实验结果下表2为YOLOv6与目前其他主流YOLO系列算法对比的实验结果。从表中可以看出:表2YOLOv6各尺寸模型与其他模型的性能对比YOLOv6-nano在COCOval上达到了35.0%的AP精度,同时在T4上使用TRTFP16batchsize=32进行inference,可以达到1242FPS,相比YOLOv5-nano,精度提升7%AP,速度提升85%。YOLOv6-tiny在COCOval上实现了41.3%的AP准确率。同时在T4上使用TRTFP16batchsize=32进行推理,可以达到602FPS的性能。与YOLOv5-s相比,准确率提升了3.9%AP,速度提升了29.4%。YOLOv6-s在COCOval上达到了43.1%的AP准确率。同时在T4上使用TRTFP16batchsize=32进行推理,可以达到520FPS的性能。与YOLOX-s相比,准确率提升2.6%AP,速度提升38.6%;与PP-YOLOE-s相比,在PP-YOLOE-s准确率提高0.4%AP的情况下,在T4上使用TRTFP16进行单批推理的速度提高了71.3%。4.总结与展望本文介绍了美团视觉智能部在目标检测框架上的优化和实践经验。我们在训练策略、主干网络、多尺度特征融合、检测头等方面对YOLO系列框架进行了考量和优化,设计了一个新的检测框架——YOLOv6,初衷来源于解决工业应用落地中遇到的实际问题。我们在构建YOLOv6框架的同时,探索和优化了一些新的方法,例如基于硬件感知神经网络设计思想自主研发的EfficientRepBackbone、Rep-Neck和EfficientDecoupledHead,同时也吸收和借鉴了学术界和工业界的一些新方法。一些前沿的进展和成果,比如Anchor-free、SimOTA和SIoUregressionloss。在COCO数据集上的实验结果表明,YOLOv6在检测精度和速度上是最好的。未来,我们将继续建设和完善YOLOv6生态系统。主要工作包括以下几个方面:完善YOLOv6模型全系列,持续提升检测性能。在多个硬件平台上设计硬件友好型模型。支持ARM平台部署、量化蒸馏等全链适配。横向扩展,引入相关技术,如半监督、自监督学习等,探索YOLOv6在更多未知业务场景下的泛化性能。
