Deformable Convolution Networks 代码思路及解析

本文解析了2017年CVPR论文中的Deformable Convolution,介绍如何在PyTorch中实现可变形卷积,涉及偏置量处理、双线性插值算法及其在特征图上的应用。重点在于理解卷积操作中添加可学习偏移量以增强模型的几何变换适应性。

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

最近在看一篇CV任务中的Attention机制综述时,觉得其中一篇于2017年发表在CVPR上的Deformable ConvNets很有意思,觉得文章中思路及公式都是清晰明了,在Github上找了份PyTorch代码时,嗯……发现事情并不简单。终于在拜读大佬的deformable convolution可变形卷积(4uiiurz1-pytorch版)源码分析一篇文章为你讲透双线性插值后,清楚了一二。这里按照自己理解学习的思路写下作为这篇论文的学习总结。
在这里插入图片描述
plain convolution operation:
y ( p 0 ) = ∑ p n ∈ R w ( p n ) ∗ x ( p 0 + p n ) y(p_{0}) = \sum_{p_{n \in R}}{w(p_{n})*x(p_{0}+p_{n})} y(p0)=pnRw(pn)x(p0+pn)

deformable convolution operation:
y ( p 0 ) = ∑ p n ∈ R w ( p n ) ∗ x ( p 0 + p n + Δ p n ) y(p_{0}) = \sum_{p_{n \in R}}{w(p_{n})*x(p_{0}+p_{n}+ \Delta p_{n})} y(p0)=pnRw(pn)x(p0+pn+Δpn)

一:背景

作者认为由于普通卷积中感受野是规则且固定的,这导致模型的几何变换建模能力受限。因此,作者提出可变形卷积模块。在卷积核对应的位置上都添加上可学习的偏移量参数,使得在可变性卷积的感受野不再固定。

二:做法

论文中交代,在CNN中的卷积和特征图都是3D的。可变形卷积模块是在2D的空间域上进行操作,在各通道维度上保持一致。

三:代码思路

y ( p 0 ) = ∑ p n ∈ R w ( p n ) ∗ x ( p 0 + p n + Δ p n ) y(p_{0}) = \sum_{p_{n \in R}}{w(p_{n})*x(p_{0}+p_{n}+ \Delta p_{n})} y(p0)=pnRw(pn)x(p0+pn+Δpn)

如公式所示,重要的是表示出带有偏置量 x ( p 0 + p n + Δ p n ) x(p_{0}+p_{n}+ \Delta p_{n}) x(p0+pn+Δpn)的特征值。其中, p 0 p_{0} p0代表卷积的中心点坐标, p n p_{n} pn表示邻域位置{(-1,-1),(-1,0),(-1,1),(0,-1)……}, Δ p n \Delta p_{n} Δpn表示偏置量,下文将用 o f f s e t s offsets offsets来代替 Δ p n \Delta p_n Δpn

1. p 0 + p n + o f f s e t s p_0+p_n+offsets p0+pn+offsets表示包含了坐标偏置量的卷积操作的坐标。
借大佬的图
1.1.根据 k e r n e l _ s i z e kernel\_size kernel_size s t r i d e stride stride,可以表示出卷积操作的卷积核中心坐标 ( x n , y n ) (x_n, y_n) (xn,yn)。若输出特征图 ( b , c , h , w ) (b, c, h, w) (b,c,h,w),则输入特征图中有 h ∗ w h*w hw个卷积核中心 p 0 p_0 p0

1.2.再根据式中的 p n = { ( − 1 , − 1 ) , ( − 1 , 0 ) , ( − 1 , 1 ) … … } p_{n}=\{(-1,-1),(-1,0),(-1,1)……\} pn={ (1,1),(1,0),(1,1)},依次表示出每个卷积核的邻域坐标 p n p_n pn。【注意】输出特征图中每个点在2D空间域上,每个点有 x {x} x方向和 y {y} y方向上各一个可学习的偏移量参数,故每个位置上都有2个可学习参数 o f f s e t s offsets offsets

2. p 0 + p n + o f f s e t s p_0+p_n+offsets p0+pn+offsets中的 o f f s e t s offsets o

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值