当前位置:   article > 正文

yolov5改进---添加YOLOV8中的C2F模块_yolov5 c2f

yolov5 c2f

1、克隆一个全新的yolov5代码

官方代码github地址:

https://github.com/ultralytics/yolov5

使用pycharm打开该代码。

2、在yolov8里找到c2f模块的代码:

yolov8官方代码:https://github.com/ultralytics/ultralytics/blob/main/ultralytics/nn/modules.py

在上图路径modules.py中找到下列C2f模块的代码,或者直接复制下方代码:

  1. class C2f(nn.Module):
  2. """CSP Bottleneck with 2 convolutions."""
  3. def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion
  4. super().__init__()
  5. self.c = int(c2 * e) # hidden channels
  6. self.cv1 = Conv(c1, 2 * self.c, 1, 1)
  7. self.cv2 = Conv((2 + n) * self.c, c2, 1) # optional act=FReLU(c2)
  8. self.m = nn.ModuleList(Bottleneck(self.c, self.c, shortcut, g, k=((3, 3), (3, 3)), e=1.0) for _ in range(n))
  9. def forward(self, x):
  10. """Forward pass of a YOLOv5 CSPDarknet backbone layer."""
  11. y = list(self.cv1(x).chunk(2, 1))
  12. y.extend(m(y[-1]) for m in self.m)
  13. return self.cv2(torch.cat(y, 1))
  14. def forward_split(self, x):
  15. """Applies spatial attention to module's input."""
  16. y = list(self.cv1(x).split((self.c, self.c), 1))
  17. y.extend(m(y[-1]) for m in self.m)
  18. return self.cv2(torch.cat(y, 1))

3、打开yolov5中common.py文件

将上方复制的代码,添加到common.py文件中,如下图所示:

 

4、找到yolov8中对应的Bottleneck模块

将该模块的代码复制到yolov5 commom.py文件中,如下图:

修改过的 common.py 全部代码如下,可直接复制。

  1. # YOLOv5
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/251231
    推荐阅读
    相关标签