mmdetection(2): DeformableConvNets(DCN)

博客介绍了基于pytorch的DCN代码资源,阐述DCN打破传统CNN的原理。DCN v1通过添加位移变量解决原始只能提取特定区域的问题;v2则针对v1易提取冗余值的缺点,通过设置点权重、结合RCNN等方法改进,还提及mmdet相关情况。

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

先来点干货,基于pytorch的代码: https://github.com/4uiiurz1
DCN可以说是打破了传统的CNN,那到底是怎么搞的呢
v1: https://arxiv.org/abs/1703.06211

既然原始的只能提取特定区域,那我们给其加上个位移不就ok了
在这里插入图片描述
那位移应该怎么加呢,简单啊,每个kernel不是3x3吗(常见),那就在添加9个位移变量,分别对应3x3的每个权重值所乘的点的偏移值,但是要表示坐标偏移的话,得加2个不是,ok那就233,分别表示x,y的偏移值。

在这里插入图片描述
所以结合上图就非常好理解了,先conv一下,生成2N个特征图,N为33=9。然后根据特征图在原图上取值,然后再进行卷积操作,就是这么简单。
至于roi pooling,解释不好,不说了。
在这里插入图片描述

v2:https://arxiv.org/pdf/1811.11168.pdf
主要解决个啥呢
v1不是非常规的形状吗?但是这样有个缺点啊,容易提取冗余值,比如说,一个人牵着个狗,我要检测狗,DCN某几个节点给偏到人上去了,是不是很对,解决很简单,把人上的那几个点权重设为0 就好了啊、
在这里插入图片描述
这样也是,每个卷积核上的每个点得来个权重,用来表示该点有没有什么软用。那就得3*N了
还有Faster-Rcnn怎么办,mdcn提取特征的时候提取了一大堆冗余的数据,怎么搞呢,结合RCNN啊,
RCNN输入的仅仅局部图片,不会产生冗余数据,ok,怎么结合呢,最后产生的不是1024维度的向量吗?做个相似度比较啊,cos上一下,就能尽量让Fast-RCNN趋向RCNN,这样来保证不产生冗余数据。
在这里插入图片描述

mmdet怎么搞呢,具体咋搞的就不说了,杂用的还可以,看18和27 的channels,是不是就是29和39,就是2个只有x,y。3个加了个m(权重),至于deformable_groups,那就是组卷积了。不说了,看代码去

deformable_groups = dcn.get('deformable_groups', 1)
            if not self.with_modulated_dcn:
                conv_op = DeformConv
                offset_channels = 18
            else:
                conv_op = ModulatedDeformConv
                offset_channels = 27
            self.conv2_offset = nn.Conv2d(
                planes,
                deformable_groups * offset_channels,
                kernel_size=3,
                stride=self.conv2_stride,
                padding=dilation,
                dilation=dilation)
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值