在YOLOv8中,C2f模块的作用是提升模型的性能和准确率。通过引入C2f模块,模型能够更好地捕捉到图像中的复杂特征,从而在目标检测任务中取得更好的效果。此外,C2f模块还具有较好的扩展性,可以在不显著增加计算成本的情况下,进一步提高模型的性能。为了更深入地理解C2f模块的工作原理,我们可以从代码层面进行分析。在YOLOv...
C2f模块的残差冗余问题源于“输入特征重复用了两次",每个带有residual connection的C2f模块的最后一个bottleneck的输入会通过concat和residual connection的方式出现了两次。一次是完整的输入,另一次是通过残差和bottleneck的输出相加以分量形式存在。 为简单起见,提取出最后一个bottleneck和concat的微结构加以分析。假设输入通...
将YOLOv5 的C3结构换成了梯度流更丰富的C2f结构,并对不同尺度模型调整了不同的通道数 C3模块的结构图,然后再对比与C2f的具体的区别。针对C3模块,其主要是借助CSPNet提取分流的思想,同时结合残差结构的思想,设计了C3 Block,CSP主分支梯度模块为BottleNeck模块。同时堆叠的个数由参数n来进行控制,也就是说不同规模...
Backbone部分采用的结构为Darknet53,其中包括基本卷积单元(Conv)、实现局部特征和全局特征的featherMap级别的融合的空间金字塔池化模块(SPPF),以及增加网络的深度和感受野、提高特征提取能力的C2f模块。C2f模块结构如图1所示。 图1 C2f模块结构 Neck部分采用PAN-FPN结构实现多个不同尺寸特征图的特征融合,其中同样使用了C...
骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调,不再是无脑一套参数应用所有模型,大幅提升了模型性能。不过这个 C2f 模块中存在 Split 等操作对特定硬件部署没有之前那么友好了 ...
2)c2f 模块 这个其实也就是仿照YOLOv7 的ELAN 结构,通过更多的分支夸层链接,丰富了模型的梯度流。注意这里作者的结构没有问题,确实split 一共等价出了3个分支,只能归根于源代码为什么这么写:相当于前一半+后一半(等价全部)的原始特征图都跳层链接到了最后的concat,然后后一半的特征图又经过了后面一系列的操作。
从模型结构看V8主要有两个大的模块构成,就是backbone和head模块,因此降低参数量我们就从这两模块开始 二、bakebone模块轻量化参数 1.CSPPC替换c2f卷积块 论文地址:https://arxiv.org/pdf/2303.03667.pdf 如上图,其中利用了PConv模块大量降低参数量 其中 ...
YOLOV8是YOLO系列另一个SOTA模型,该模型是相对于YOLOV5进行更新的。其主要结构如下图所示: 从图中可以看出,网络还是分为三个部分: 主干网络(backbone),特征增强网络(neck),检测头(head) 三个部分。 主干网络: 依然使用CSP的思想,改进之处主要有:1、YOLOV5中的C3模块被替换成了C2f模块;其余大体和YOLOV5的主干...
在我自制的数据集上,yolov5所有的c3替换为c2f后会振荡,loss也更难收敛,之前用yolov8也会出现收敛难的问题,可能是c2f这个结构带来的影响。最终提升效果不是很明显,在0.5%以内,但参数量提高了四倍。 之后我分别替换了backbone和neck上的c3,得到的效果也都不是很好。 个人猜测可能是数据集只有3.2k张太小了,后续...