YOLOv10:Real-Time End-to-End Object Detection
通过 one-to-many 和 one-to-one 双头学习,解决模型学习速度和去除 NMS,实现实时的目标检测
什么是 YOLOv10 ?
- 基于 YOLOv 8 设计的一个全新目标检测模型,主要改进点有:(1)通过 one-to-many 和 one-to-one 双头学习,解决模型学习速度和去除 NMS;(2)通过从性能和效果上两方面提升,使得模型达到 sota
YOLOv10 的网络结构?
- 在 YOLOv 8 的基础上修改的模型,主干网络使用 CPSDarkNet 53,特征融合使用 PAN,创新在于双预测头设计
- 训练时使用双头设计,推理时只使用 one-to-one,这就要求训练时的 one-to-one 具有很高准确度,所以需要将 one-to-one 和 one-to-many 进行对齐,这里设计 Consistent Match 对齐方法
YOLOv 10 面向效率设计思路?
- (1)使用轻分类头:分类任务相对于回归任务相对简单,使用同样的 head 做预测,浪费模型性能,这里使用更轻量的检测头。实验显示,使用该方法,模型参数量、FLOPs 、推理速度下降,AP 基本不变
- (2)使用通道分离的下采样策略:传统的方法是使用 stride=2 的 3 x 3 卷积,这里首先使用点卷积调整通道数,然后使用深度卷积下采样,参数更少,实验证明了该思路
- (3)使用秩引导的块设计:
YOLOv 10 面向效果设计思路?
- (1)大卷积核:在网络的深层使用大卷积核,配合深度可分离卷积,在计算量提升很少的情况下增大感受野,实验显示在推理稍微增加情况下提升模型效果
- (2)部分字注意力:不在所有通道上执行自注意力机制,而是通过 1 x 1 卷积调整通道后,再对部分通道执行自注意力机制,实验显示推理稍微增加情况下提升模型效果
YOLOv 10 如何直线秩引导 Block 设计?
- 在 S 的集合中挑选秩最小的块,加入网络训练,如果其 AP 值变大,则说明模块有效,从集合中去掉该块,然后循环以上过程,直到无法提升 AP 值或者集合 S 为空