YOLOV5 backbone框架图和代码一点不同之处的学习探索

最近准备先画个yolov5的结构图,为改结构作准备。

于是找到了官方结构图和V5 6.0的代码,在backbone代码部分遇到了一个小问题

——第0层的args和其它Conv层的参数数量不一样

所以去查了下common.py中的class Conv(nn.Module),第0层[64, 6, 2, 2]中,channel=64,kernel_size=6,第一个2应该是stride=2,第二个2是padding=2。也因为第1层的[128,3,2]中的2肯定是stride。

下面是第二个问题——代码中第一层卷积(P2)和结构图中不一样

P2:可以看到结构图中存在padding=1,而代码中没有,是哪个对呢,不妨算一下试试,输入320*320,如果没有padding,实际输出(320-3)/2+1=159.5,卷积要舍去,所以输出的是159*159,与期望不符,如果存在padding=1,那么输出(320-3+2*1)/2+1=160.5,输出160*160,这就对上了,说明结构图没问题,那是代码的问题吗。

再次找到common.py

 

nn.Conv2d中有个autopad(k,p),再ctrl到这个函数(其实就是这段代码上面一行) 

可以看出如果传入了padding参数,那就按传入参数,否则p=none时,根据kernel_size自动算出padding。对于P2卷积层的代码来看,p=None,k=3,所以在autopad中,p=k//2=3//2=1,所以自动padding=1,因此代码部分只是省略了padding,从而根据k自动算出的padding=1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值