YOLO系列的Backbone改进历史

YOLO(You Only Look Once)系列模型在目标检测领域不断发展,其Backbone网络从YOLOv1的VGG13到YOLOv2的Darknet19,再到后续版本的更复杂结构,不断提升特征提取能力。YOLOv2引入了DarkNet,通过多个3x3卷积替代7x7卷积,减少参数并增加非线性操作。此外,它采用全局平均池化取代全连接层,允许输入尺寸变化,利于小目标检测。训练过程分为先训练分类模型,再训练检测模型。YOLOv2的检测头包括层融合和Passthrough层,用于更好地捕捉不同尺度的目标。同时,YOLOv2引入了Anchors机制,改进了坐标预测方式。

Backbone决定了模型的特征提取精度,backbone后面一般接的就是检测头Head。
YOLO v1只是把最后的特征分成了 7x7 个grid,到了YOLO v2就变成了13x13 个grid,再到YOLO v3 v4 v5就变成了多尺度的(strides=8,16,32),更加复杂了。那为什么一代比一代检测头更加复杂呢?
答案是:因为它们的提特征网络更加强大了,能够支撑起检测头做更加复杂的操作。换句话说,如果没有backbone方面的优化,你即使用这么复杂的检测头,可能性能还会更弱。所以引出了今天的话题:yolo系列中的backbone的改进历史。

Yolov1

图一
图1
可以看到首先是7x7的卷积核,后面是3x3的卷积核,中间穿插1x1的卷积来节约参数,最后2层是全连接层。
画图的规律是安装feature map的分辨率来,两个分辨率之间的卷积操作数目不同,但是在代码里面他们都会被放在一起进行运算。比如从28x28到14x14的操作,实际上是经过了四次gap层,举例对于vgg13来说:

# vgg13 不加bn 的配置
cfg =[64, 64, 'M', 128, 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M']
def make_layers(cfg, batch_norm=False):
    layers = []
    in_channels = 3
    s = 1
    first_flag=True 
    for v in cfg:
        s=1
        if (v==64 and first_flag):
            s=2 
            #第一层的时候,stride是2,同时进行一次maxpooling,所以feature map从448到了112
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值