YOLOv5白皮书-第Y4周:common.py文件解读

一、环境

  • 语言:Python3、Pytorch
  • 开发环境
  • 电脑系统:Windows 10
  • 语言环境:Python 3.9.2
  • 编译器:VS Code
  • 显卡:3060
  • CUDA版本:Release 11.4, V11.4.48
  • 本周任务:将yolov5s网络模型中C3模块修改,并跑通YOLOv5。

二、了解common.py文件

  • 该文件其实就是构建yolov5模型具体的代码
  • 其中包含了基本组件及各种类(class),例如:
    • 自动计算所需填充:autopad
    • 卷积:Conv
    • 将图像进行切片:Focus
    • 组成模块:Bottleneck、C3、SPP

三、修改C3

  • C3原代码:
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))
  • 修改后的C3:
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.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))
        return torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1)

四、运行结果

在这里插入图片描述
在这里插入图片描述

五、总结

  • 本周对C3的修改其实就是去掉了concat之后的一层卷积层
  • 需要对YOLOV5的模型结构进行修改时,就在common.py文件中修改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值