YOLOv8之C2f模块——与YOLOv5的C3模块对比

YOLOv8中的C2f模块代码详解 在YOLOv8网络结构中,C2f模块(CSP Bottleneck with 2 Convolutions)是一个关键组件,用于实现跨阶段部分聚合 阅读详情
AI摘要

文章对比了YOLOv8中的C2f模块和YOLOv5中的C3模块,两者在初始化参数、源码实现及结构上的差异。C2f模块默认不使用shortcut,而C3模块则默认使用,但两者的shortcut位置在网络结构中相同。C2f设计灵感来源于C3和ELAN,旨在轻量级网络中增强梯度流信息。

一、源码对比

  YOLOv8完整工程代码下载:ultralytics/ultralytic
  C2f模块源码在ultralytics/nn/modules.py下,源码如下:

class C2f(nn.Module):
    # CSP Bottleneck with 2 convolutions
    def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5):  # ch_in, ch_out, number, shortcut, groups, expansion
        super().__init__()
        self.c = int(c2 * e)  # hidden channels
        self.cv1 = Conv(c1, 2 * self.c, 1, 1)
        self.cv2 = Conv((2 + n) * self.c, c2, 1)  # optional act=FReLU(c2)
        self.m = nn.ModuleList(Bottleneck(self.c, self.c, shortcut, g, e=1.0) for _ in range(n))

    def forward(self, x):
        y = list(self.cv1(x).chunk(2, 1))
        y.extend(m(y[-1]) for m in self.m)
        return self.cv2(torch.cat(y, 1))

    def forward_split(self, x):
        y = list(self.cv1(x).split((self.c, self.c), 1))
        y.extend(m(y[-1]) for m in self.m)
        return self.cv2(torch.cat(y, 1))

  YOLOv5的完整工程代码下载:ultralytic/yolov5
  C3模块源码在models/common.py下,源码如下:

class C3(nn.Module):
    # CSP Bottleneck with 3 convolutions
    def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):  # ch_in, ch_out, number, shortcut, groups, expansion
        super().__init__()
        c_ = int(c2 * e)  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c1, c_, 1, 1)
        self.cv3 = Conv(2 * c_, c2, 1)  # optional act=FReLU(c2)
        self.m = nn.Sequential(*(Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)))

    def forward(self, x):
        return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1))
  • C2f模块和C3模块的对外接口保持一致,都是(ch_in, ch_out, number, shortcut, groups, expansion),方便在yolov5中直接调用C2f模块。
  • C2f模块默认不使用shortcut连接,C3模块默认使用shortcut连接,但二者在网络结构中shortcut的位置无差别,即都是在Backbone中使用shortcut连接,在Head中不使用shortcut连接,代码的调用格式有差别。

二、结构图对比

在这里插入图片描述

图2-1 C3模块结构图

在这里插入图片描述

图2-2 C2f模块结构图
  • C2f模块参考了C3模块以及ELAN的思想进行的设计,让YOLOv8可以在保证轻量化的同时获得更加丰富的梯度流信息。
YOLOv8s的C2F结构到底新在哪?与YOLOv5的C3模块逐行代码对比 本文深入解析了YOLOv8s中C2F结构的核心创新,通过与YOLOv5的C3模块逐行代码对比,揭示了C2F在特征拆分、动态扩展和梯度流动方面的优化。C2F采用更灵活的特征融合策略,减少冗余卷积操作,提升计算效率和特征表达能力,特别适合工业场景中的小目标检测需求。 阅读详情

相关推荐

yolov5 VS yoloX VS yolov8

实验笔记

weiyuhaodashabi的博客 1万+

YOLO组件之C2f模块介绍

C2f模块在CSP Bottleneck结构中起到关键的作用,通过特征转换、分支处理和特征融合等操作,提取和转换输入数据的特征,生成更具表征能力的输出。这有助于提高网络的性能和表示能力,使得网络能够更好地适应复杂的数据任务。

yueguang8的博客 3万+

YOLOv8与YOLOv11网络结构对比:从yolov8.yaml到yolo11.yaml的演进与优化

本文深入对比了YOLOv8与YOLOv11的网络结构差异,通过分析yolov8.yaml和yolo11.yaml配置文件,揭示了两者在Backbone设计、特征融合策略及模块级创新上的演进路径。YOLOv8注重轻量化与推理速度,而YOLOv11通过引入注意力机制和复杂特征融合提升了多尺度检测精度,为不同场景下的目标检测任务提供了优化选择。

weixin_33686714的博客 493

Yolov5/Yolov7加入Yolov8 c2f模块,涨点

Yolov5/Yolov7加入Yolov8 c2f模块,涨点,提升小目标检测精度

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1万+

保姆级教程:在YOLOv5/v8中集成CBAM注意力模块,实测mAP提升3%

本文详细介绍了在YOLOv5和YOLOv8中集成CBAM注意力模块的工程实践指南,通过通道注意力和空间注意力的双重机制提升目标检测性能。实测结果显示,集成CBAM后mAP可提升3%,特别适用于复杂背景和小目标检测场景。文章提供了完整的代码实现和配置文件修改步骤,帮助开发者快速应用这一技术。

weixin_30855099的博客 210

深入浅出之C2F模块(YOLO)

综上所述,C2f模块是YOLOV8中一个重要的组成部分,它通过引入Bottleneck设计理念和多卷积层的处理流程,以及ELAN思想和Split操作等改进与优化措施,有效地提高了模型的目标检测性能和准确率。在实际应用中,可以利用C2f模块来改进目标检测模型的表现力,进一步优化模型的性能。YOLOv8之C2f模块——与YOLOv5的C3模块对比-优快云博客YOLO组件之C2f模块介绍-优快云博客。

浩瀚之水的专栏 1万+

对比yolov5的C3,yolov8的C2f,yolov11的C3k2

C3模块基于CSPNet(Cross Stage Partial Network)思想,由三个卷积层构成,分为两条分支:一条通过多个Bottleneck模块堆叠,另一条直接进行卷积操作,最终将两条分支的特征图拼接后输出。引入轻量化设计,如将第一个卷积的核大小从1x1改为3x3,恢复类似ResNet的Bottleneck结构。:在COCO数据集上,YOLOv11的模型参数比YOLOv8减少22%,同时保持更高的mAP。:通过动态结构和注意力机制,更适合复杂场景的高精度需求,但实现复杂度较高。

weixin_38991876的博客 3911

C2F模块中添加注意力机制:实现自适应特征融合

在C2F(从卷积到全连接)模块中添加注意力机制,可以增强模型对特征的感知能力,提高计算机视觉任务的性能。通过在C2F模块中添加注意力机制,我们可以使模型更好地学习特征之间的关系,并提高计算机视觉任务的性能。注意力机制可以根据输入的特征图动态地计算特征的权重,从而更聚焦于重要的特征。注意力机制的核心思想是根据输入的特征图,动态地计算特征的权重,以便在特征融合过程中对不同的特征进行加权。C2F模块是一种常用的网络结构,用于将卷积层的输出转换为全连接层的输入。在特征融合层中,我们将添加自注意力机制。

IpyVariable的博客 2716

yolov8对比yolov5有什么改进?

直接上YOLOv8的结构图吧,大家可以直接和YOLOv5进行对比,看看能找到或者猜到有什么不同的地方?

2503_90237586的博客 1132

YOLOv5改进系列(九) 更换Yolov8 C2f模块

是由开发的一个前沿的 SOTA 模型。它在以前成功的 YOLO 版本基础上,引入了新的功能和改进,进一步提升了其性能和灵活性。YOLOv8 基于快速、准确和易于使用的设计理念,使其成为广泛的目标检测、图像分割和图像分类任务的绝佳选择。下表为官方在 COCO Val 2017 数据集上测试的 mAP、参数量和 FLOPs 结果。可以看出 YOLOv8 相比 YOLOv5 精度提升非常多,但是 N/S/M 模型相应的参数量和 FLOPs 都增加了不少;模型尺寸 (像素)

专注于人工智能学习,总结 1647

【YOLOv8】Yolov5和Yolov8网络结构的分析与对比

Yolov5和Yolov8网络结构的分析与对比

静谧、淡雅 6726

YOLO v8详解

通过C3代码可以看出,对于cv1卷积和cv2卷积的通道数是一致的,而cv3的输入通道数是前者的2倍,因为cv3的输入是由主梯度流分支(BottleNeck分支)依旧次梯度流分支(CBS,cv2分支)cat得到的,因此是2倍的通道数,而输出则是一样的。C3模块,其主要是借助CSPNet提取分流的思想,同时结合残差结构的思想,设计了所谓的C3 Block,这里的CSP主分支梯度模块为BottleNeck模块,也就是所谓的残差模块。同时堆叠的个数由参数n来进行控制,也就是说不同规模的模型,n的值是有变化的。

qq_52053775的博客 1万+

第三章:ESP32零基础教学 - 3.4 蓝牙通信

本文详细介绍了如何在ESP32上实现经典蓝牙和BLE通信,并提供了代码解释和示例。通过这些示例,你可以轻松地将蓝牙功能集成到你的物联网项目中。无论是经典蓝牙的简单串口通信,还是BLE的灵活服务架构,ESP32都能满足你的需求。

Hi__gril的博客 4019

从YOLOv5到v8:手把手带你‘魔改’网络,把C3模块换成C2f到底有多香?

本文深入探讨了YOLOv8中将C3模块替换为C2f模块的工程实践与性能提升。通过对比分析C3与C2f的网络结构差异,详细介绍了如何在现有项目中实现这一替换,并提供了性能对比数据和调优技巧,帮助开发者充分利用YOLOv8的网络结构改进提升目标检测效果。

weixin_30633405的博客 398

机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾

f作者: 寒小阳 &&龙心尘 时间:2015年10月。 出处: 声明:版权所有,转载请注明出处,谢谢。手把手机器学习之逻辑回归应用——Kaggle泰坦尼克之灾1.引言先说一句,年末双十一什么的一来,真是非(mang)常(cheng)欢(gou)乐(le)!然后push自己抽出时间来写这篇blog的原因也非常简单: 写完前两篇逻辑回归的介绍和各个角度理解之后,小伙伴们纷纷表示『好像很高级的样纸,

寒小阳 43万+

FOFA奇技淫巧:从搜索语法到实战场景的深度挖掘

本文深入探讨了FOFA搜索语法在网络空间测绘中的高效应用,从基础语法到实战场景的深度挖掘。通过渗透测试、威胁狩猎、资产发现等实际案例,展示了如何利用FOFA精准定位目标系统、识别蜜罐、追踪威胁,并提供了合规使用指南和性能优化技巧,助力安全工作者提升效率。

weixin_32428571的博客 237

YOLOv8 C2f模块解析:从C3到C2f的架构演进与实战对比

在目标检测领域,骨干网络模块的设计直接影响模型的性能与效率。CSPNet(Cross Stage Partial Network)作为一种高效的网络设计思想,通过部分跨阶段连接减少计算冗余并改善梯度流,成为YOLO系列模型的核心基础。其核心原理在于将特征图分割为主分支和捷径分支,主分支进行深度特征提取,捷径分支保留浅层信息,最后进行特征融合,从而在计算效率和特征复用间取得平衡。这种设计显著提升了模型训练稳定性与多尺度目标检测能力。随着对模型性能的极致追求,更丰富的特征聚合与梯度路径优化成为技术演进方向。YO

weixin_33624741的博客 318

银河麒麟鲲鹏aarch64架构安装docker和K8s

鲲鹏云服务器上安装docker-云社区-华为云 (huaweicloud.com) 这里我下载的版本是docker-18.09.3.tag docker 安装包地址:https://download.docker.com/linux/static/stable 配置system服务 在github对应分支的contrib/init/systemd/ 下面,提供了对应的docker.service以及docker.socket文件,可以直接拷贝到本地文件使用: 对应链接:https://github.c

qq_50007696的博客 9056

YOLOv8 网络结构 C2f 模块详解:与 YOLOv5 C3 的 3 大核心差异与代码实现

本文深入解析YOLOv8网络结构中的C2f模块,详细对比其与YOLOv5 C3模块的三大核心差异:梯度流路径优化、计算效率提升和特征融合机制创新。通过代码实现和性能分析,展示C2f模块如何通过动态特征聚合和通道分割策略,在目标检测任务中实现更高的精度和效率。

weixin_29055137的博客 416

树莓派烧录验证失败:跳过验证步骤实现成功启动的实用技巧

本文针对树莓派烧录系统时常见的验证失败问题,提供了跳过验证步骤实现成功启动的实用技巧。通过分析Windows与Linux文件系统差异导致的SD卡验证报错,指导用户在烧录完成后立即关闭验证窗口,或使用BalenaEtcher等第三方工具规避问题,确保树莓派正常启动。

yyy34的博客 949

win10自动修复-无限循环【通用完美】超简单解决办法

2020.02.14今个我的笔记本电脑(Thinkpad Carbon 7 X1)(win10)早晨起来发现蓝屏,上面显示自动修复失败,重启后依然自动修复失败,不断手动重启,始终是修复失败。然后上网开始搜集资料找解决办法。 前边介绍关闭自动修复,如何找出错文件的方法;如果想看最终解决办法,直接看第三部分 上网就会发现这种现象很常见,同时是电脑自动安装系统更新,或者安装某些驱动出现。解决办法也大...

y15941300574的博客 19万+

YOLOv8 的 C2f 与 C3 差在哪?把 Codex 的 base_url 改到 TaoToken 之后逐行比

用 Codex 改 base_url 到 TaoToken 后逐行核对 YOLOv8 C2f 与 C3 差异:先在 ~/.codex/config.toml 新增 provider,按官网说明填入 base_url,再用提示词让 Codex 按 Backbone→Neck→Head→Loss 顺序并排输出 YOLOv5/YOLOv8 YAML,验证 C3 替换为 C2f、上采样前 1×1 卷积删除、Decoupled-Head 与 DFL 等改动。Key 从 https://taotoken.net/?ut

weixin_29138345的博客 6

RK3588 实战级 YOLOv5 Android 全解析:NPU 量化 + 多线程 + 跟踪算法,源码一次买齐

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

FJN110的博客 157

030、YOLOv8改进实战:SimAM无参注意力机制原理与C2f_SimAM模块代码实现

这篇文章介绍了如何在YOLOv8中集成SimAM无参注意力机制来提升小目标检测效果,特别是针对夜间行人检测场景。作者通过实验发现,在C2f模块的最后一个Bottleneck后加入SimAM,能在参数量几乎不变的情况下显著提升mAP@0.5(2.3个点)。文章详细讲解了SimAM的原理(基于神经元能量差异的3D注意力权重计算)、代码实现细节(包括关键注释和踩坑记录),以及集成到YOLOv8的注意事项。实验对比显示SimAM效果与CBAM相当但计算量更少,对小目标检测尤其有效。作者还分享了个人经验,如在不同网络

ai技术增长的博客 121

QT+Halcon实现螺纹检测

工业上要检测螺丝的内外直径、内外牙距、内外角度,现在比较好用的图像处理库,开源的opencv,收费的有halcon。为了实现螺纹检测,和对比螺纹检测拿个库比较好。分别用opencv和halcon实现了螺纹检测,通过对比发现用halcon实现的效果比较。现在用博客把实现过程记录下来: 1、需要检测的螺纹数据如下: 2、为了实现检测螺丝以上数据,螺纹内径、螺纹外径、螺纹外牙距、螺纹...

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 7050

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

YOLOv8 vs YOLOv5:目标检测模型的核心改进与实战对比

本文深入对比了YOLOv8与YOLOv5两大目标检测模型的核心差异。YOLOv8采用无锚框(Anchor-Free)策略和解耦头设计,并引入C2f模块优化特征提取,在检测精度和小目标识别上通常表现更优。文章从网络结构、实战性能到项目选型提供了全面分析,帮助开发者根据具体需求在速度、精度和易用性之间做出明智选择。

jenkins8butler的博客 220

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 阅读笔记9——DenseNet
下一篇: YOLOV5中添加CBAM模块详解——原理+代码
晓shuo
晓shuo 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄6年 4万+粉丝 113原创
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓shuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值