返回顶部
首页 > 资讯 > 后端开发 > Python >YOLOv8之C2f模块——与YOLOv5的C3模块对比
  • 395
分享到

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

YOLOpython深度学习 2023-09-02 10:09:21 395人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录 一、源码对比二、结构图对比 一、源码对比   YOLOv8完整工程代码下载:ultralytics/ultralytic   C2f模块源码在ultralytics/nn/mod

目录

一、源码对比

  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可以在保证轻量化的同时获得更加丰富的梯度流信息。

来源地址:https://blog.csdn.net/python_plus/article/details/129223831

--结束END--

本文标题: YOLOv8之C2f模块——与YOLOv5的C3模块对比

本文链接: https://lsjlt.com/news/390607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作