pytorch搭建YOLOv5网络

本文详细介绍了CSPDarknet网络结构,包括Focus、Conv、Bottleneck、C3、SPP和SPPF等核心模块,以及它们在构建主干网络中的作用。CSPDarknet通过残差连接、通道调整和多尺度特征融合提升模型性能,适用于目标检测等任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.基本组成模块

​​​​​​​

 

 1.1 Foucs模块

# --------------------------Foucs模块-------------——-

class Foucs(nn.Module):
    def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True):  # ch_in, ch_out, kernel, stride, padding, groups =1普通卷积  >1深度可分离卷积
        super(Foucs, self).__init__()

        self.conv = Conv(c1*4, c2, k, s, p, g, act)

    def forward(self, x):
        # focus层:每隔一个像素取一个,然后进行堆叠,每个通道转变为四个特征层
        # torch.cat((a,b,c),dim) dim为几按第几为拼接
        # (batch,3,640,640)——》(batch,12,320,320)
        img = torch.cat(
            [
                x[..., ::2, ::2],
                x[..., 1::2, ::2],
                x[..., ::2, 1::2],
                x[..., 1::2, 1::2]
            ], 1
        )
        # 第一层卷积
        img = self.conv(img)
        return img

 1.2 Conv模块

# -------------------------Conv模块------------------

# Conv这个函数是整个网络中最基础的组件,由卷积层 + BN层 + 激活函数 组成
class Conv(nn.Module):
    def __init__(self, c1, c2, k, s, p=None, g=1, act=True):
        super(Conv, self).__init__()

        self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False)  # 卷积层
        self.bn = nn.BatchNorm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值