Faster RCNN源码_换backbone

这里是记录如何更换backbone的笔记,是一个学习记录
内容来自于B站视频:霹雳吧啦Wz
主要包括两个部分,更换不带有FPN的backbone和更换带有FPN结构的backbone
更换backbone,不带FPN结构
难点:如何获取分类网络,中间某一个特征层的输出,在输出的基础上构建FasterRCNN
如下图的两个文件,要修改backbone,唯一不一样的地方就是creat_model
在这里插入图片描述
这里实现的方式主要是通过官网提供的create_feature_extractor,用这个函数提取模型中的中间层

在这里插入图片描述
在这里插入图片描述
下面是关于这个函数的解释,**根据所传入的return_nodes参数找到对应的输出节点,这个节点之前的网络保留,之后的部分给删除掉(仅仅保留截止到节点的特征图)**使用方法如下:
在这里插入图片描述
这个网络中的42对应着所需提取部分的卷积层的名称,为什么呢?
可以打印出来这个backbone如下:(如图所示是对应的关系)
那么新构建的backbone就是下图虚线前面的部分

在这里插入图片描述

然后,还需要看一下backbone输出特征矩阵的channel

在这里插入图片描述
后续设置的backbone.out_channels=512

在这里插入图片描述
这里的网络不需要自己搭建了,直接调用torchvision库实现的网络框架,如下图直接导入torchvision里models中的vgg16_bn,直接使用官方提供的网络,
并且导入预训练权重
在这里插入图片描述
一般来说,并不需要完整的模型,只需要某部分层提取出来的特征层,如下图所示,可以看到Vgg16经过每一层特征尺寸和通道数的变化:

在这里插入图片描述
更换backbone,带FPN结构
首先需要了解所需要的输出特征层,在所需要的特征层上面构建FPN结构,FPN结构如下,难点在于要知道获取网络哪个部分的特征层,获取特征层对应哪个模块的输出

在这里插入图片描述

这里创建了一个键值对,每个值对应一个特征层,如下所示抽取了网络中的3个特征层,key对应抽取特征层的模块,value默认从0开始,一直递增
在这里插入图片描述
Mobilenetv3网络如下,抽取的3层特征层分别是下采样了8倍,16倍和32倍如下框内所示:
在这里插入图片描述

这3个层在网络中,对应的名称可以把网络打印出来,可以找到这3层
从表中可以知道,输出的通道对应40,112和960
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值