目录

  • 一、源码对比
  • 二、结构图对比

一、源码对比

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

class C2f(nn.Module):# CSP Bottleneck with 2 convolutionsdef __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5):  # ch_in, ch_out, number, shortcut, groups, expansionsuper().__init__()self.c = int(c2 * e)  # hidden channelsself.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 convolutionsdef __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):  # ch_in, ch_out, number, shortcut, groups, expansionsuper().__init__()c_ = int(c2 * e)  # hidden channelsself.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可以在保证轻量化的同时获得更加丰富的梯度流信息。

YOLOv8之C2f模块——与YOLOv5的C3模块对比相关推荐

  1. 用opencv的dnn模块做yolov5目标检测

    最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的.于是,我就想着编写一套用opencv的dnn模块做yol ...

  2. javascript模块_JavaScript模块第2部分:模块捆绑

    javascript模块 by Preethi Kasireddy 通过Preethi Kasireddy JavaScript模块第2部分:模块捆绑 (JavaScript Modules Part ...

  3. pythonos模块使用方法_Python OS模块常用方法总结

    Python OS模块常用方法总结 Python OS模块方法: 操作 说明 os.getcwd() 得到当前工作目录,即当前Python脚本工作的目录路径 os.listdir() 返回指定目录下的 ...

  4. MVC4做网站后台:模块管理1、修改模块信息

    网站可能会包含一些模块:像文章.产品.图片.留言等. 栏目模块主要实现功能,启用或禁用模块,模块权限设置,模块上传设置等. 权限设置和上传设置以后专门考虑,先来显示或禁用模块. 1.在顶部导航栏添加管 ...

  5. 处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    HTTP 错误 500.21 - Internal Server Error 处理程序"WebServiceHandlerFactory-Integrated"在其模块列表中有一个 ...

  6. python logging模块的作用_Python 日志模块logging分析及使用-2

    本文作为Python日志模块的补充,主要介绍日志回滚RotatingFileHandler和TimedRotatingFileHandler的使用,以及其所带来的问题.Logger对象的日志等级是如何 ...

  7. 错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    开发web项目时需要安装IIS,在安装好IIS的Windows7本上发布asp.net网站时,web程序已经映射到了本地IIS上,但运行如下错误提示"处理程序"PageHandle ...

  8. python怎么导入包-python模块之导入包及模块发布

    1.导入包(不常用的方法) 在使用python的包时,有时候想直接导入包名,然后通过包名来调用模块,例如: temp为我们创建的一个包,如果我们想通过下面的方式进行导入模块中的方法,将会出错 impo ...

  9. python 如何查看模块所有方法-Python查看模块函数,查看函数方法的详细信息

    Python查看方法的详情 1.通用的帮助函数help() 使用help()函数来查看函数的帮助信息. 如: 1 importrequests2 3 help(requests) 会有类似如下输出: ...

  10. python常用模块大全总结-常用python模块

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. python常用模块什么是模块? 常见的场景:一个模块就是一个包含了py ...

最新文章

  1. JavaScript 中运算符的优先级
  2. Ubuntu Server对OpenStack的支持
  3. s3c6410 uboot代码分析《一》
  4. PHP面向对象之旅:抽象类继承抽象类(转)
  5. 惠普打印机怎么无线连接电脑_惠普打印机连不上无线?怎么解!
  6. 【Java】PMD规则学习(1) --字符串比较
  7. 什么是交互设计?交互设计是用来干什么的?
  8. 被罚 50 亿美元,Android 究竟招谁惹谁了?
  9. C++中使用MediaInfo库获取视频信息
  10. 机器学习(2)——K-近邻算法讲解
  11. c语言生成 pdf文件,使用PDFLib生成PDF文档(C语言版)--使用指导
  12. Java核心技术 卷1基础知识 原书第10版.pdf
  13. javascript常用正则
  14. 犹太人的智慧书《塔木德》(Talmud)
  15. IntelliJ IDEA中文汉化教程
  16. 校园二手交易平台毕设 校园二手商城毕业设计 毕设二手校园商品交易 二手商城系统 java二手交易市场 springboot商城 ssm二手交易平台下载 源代码+数据库+调试运行+讲解代码
  17. 基于 8051单片机的线跟随小车
  18. Photoshop脚本 锁定图层组所有图层
  19. dart异步编程_如何通过期货将一些异步编程引入Dart
  20. 昆明世博园装mysql_昆明世博园太美丽了

热门文章

  1. 亚马逊 JDK下载地址
  2. React基础笔记--5
  3. 不同类型的球幕影院对观影体验有何影响?
  4. 数据架构最新趋势:Data Fabric 和 Data Mesh (值得收藏)
  5. 985计算机硕士和985硕士土木,土木硕士,普通211,两篇SCI 和5篇EI,可以审核985博士吗?...
  6. yageo车规系列电阻选型
  7. 硅谷创业之父Paul Graham
  8. java xml验证_Java XML验证数字签名
  9. 正则表达式知识汇总以及练习网站
  10. c语言编程万历表,用c语言编写万历程序.doc