「YOLOv5本来的样子还记得嘛」
话不多说,先总结一下历史上的YOLOv5吧:
- 「Backbone」:CSPDarkNet(没有Fusion Last模块)
- 「Neck」:PAFPN
- 「Head」:Coupled Head
- 「Assignment」:Line IOU Assignment
- 「Loss」:分类==>BCE Loss,回归==>CIoU Loss
这样大家应该比较清楚YOLOv5的大概知识脉络了;
这里借用其他小伙伴绘制的YOLOv5的结构图,可以看到YOLOv5的Backbone和Neck部分主要使用的是CBS模块和C3模块进行网络架构的搭建,而Head部分则是使用的耦合在一起的Head,即Coupled-Head,我们都知道,这样做可以进一步提升模型的执行效率,降低模型的推理时间和参数量:
「YOLOv5u是怎么回事呢」
我们先对比一下YOLOv8的YAML和YOLOv5u的YAML,你就全明白了!!!
是的,所谓的Anchor-Free版本的YOLOv5u,就是原始版本的YOLOv5+YOLOv8的Detect Head,当然肯定也继承了YOLOv8的种除了基于梯度流的网络聚合设计思想以外的所有优点,比如DFL Loss、TAL匹配以及Decoupled Head等。
最后看看YOLOv8的Detect Head的样子吧!!!依旧是借用网络小伙伴的一张图:
是不是很时髦的样子,是的,Decoupled Head+Anchor-Free就是潮流与时尚!所以YOLOv5就是继承了YOLOv8的检测头(上图中的红色框内的Head)和匹配方法以及损失函数。
记得一定去学习YOLOv5u哦!!!
参考
[1].https://github.com/ultralytics/ultralytics.