自学内容网 自学内容网

CV Method:YOLOv10 vs YOLOv8


前言

YOLOv10已经开源一段时间了,经过我实际使用测试,也确实性能更好一些,YOLOv10基于v8代码框架改进,so 之前v8可用的大部分trick在v10上可直接代码移植过去(我自己尝试了下,大部分code不需要改动,直接实现装备继承)。本文主要比较一下v10 和 v8之间的区别和改进。


一、介绍

yolov10最重要的point就是它的 NMS-free 检测功能,我们知道NMS是检测发展中重要的一环,yolov10通过one-to-onehead实现了不需要NFS的检测模型,这可以有效提升模型的执行速度。此外提升性能的trick还有——
Key features as follow
1) 轻量分类head
2)空间-通道解藕下采样
3)rank-guided block design

二、YOLOv8 and YOLOv10 Comparison

1.模型结构

YOLOv8:

使用C2f模块完成多尺度特征交互,需要依赖NMS完成post process
请添加图片描述

YOLOv10:

neck部分采用简单的PAN模块,head部分使用两个一致的head,分别为One-to-many, 和 One-to-One。

One-to-many:在训练期间,多个预测框被分配给一个真实物体标签。这种策略提供了丰富的监督信号,优化效果更好。(此部分仍需使用NMS,比如取top100置信度的box)

One-to-One:仅一个预测框被分配给一个真实物体标签,避免了NMS,但由于监督信号较弱,容易导致收敛速度慢和性能欠佳。(该部分code实现中只需要取top1置信度的box即可(TAA分配算法中取top1),则不需要过NMS)

双头架构:模型在训练期间使用两个预测头,一个使用一对多分配,另一个使用一对一分配。这样,模型可以在训练期间利用一对多分配的丰富监督信号,而在推理期间则使用一对一分配的预测结果,从而实现无NMS的高效推理。

请添加图片描述
请添加图片描述

一致性度量: 为了在训练期间保持两个预测头的一致性,提出了一致匹配度量。通过调整匹配度量参数,使得一对一和一对多分配的监督信号一致,减少了训练期间的监督差距,提升了模型的预测质量。

整体优化:轻量级分类头和其他架构优化减少了计算冗余(such 使用depthwise & pointwise & 结构重参数化(类似repvgg)),另外一些很多结构化策略的设计还是很值得学习的,可以看看原文。

2. 推理和时延

请添加图片描述
在相同的COCO AP下,YOLOv10-S is 1.8× faster than RT-DETR-R18.

3. 检测表现

通过国外大佬的实际评测发现,V10在小目标检测上相比V8有着更好的效果在V8中,针对小目标检测,通常需要调整box置信度阈值。V10由于one-to-one特性,只需要使用较低的阈值即可。

4. 参数利用

YOLOv10-B 相比YOLOv9-C 降低了46%的latency, 和25%的参数量,且有着相同的性能。

5. 关键比较

Speed and Efficiency: YOLOv10 由于NMS-free方法在后处理速度上优于yolov8,更适合real-time检测。

Detection Accuracy: v8和v10检测精度都很不错,但v10在小目标上有着更直观的优势。

Parameter Optimization: YOLOv10 由于更多结构优化,其参数量相比v8更少,模型更紧凑。


总结

v10有效解决了YOLO系列一直以来的限制,比如NMS,小目标检测问题,确实是很大的启发。v10是基于v8框架进行修改的,v8的框架确实很强大,同样很值得学习!


原文地址:https://blog.csdn.net/WiSirius/article/details/140657869

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!