普通卷积
普通卷积(dilation=1)
普通卷积就是特征图与卷积核的权重W相乘再求和
- y(p0) 表示输出特征图在位置 p0 的值。
- 𝑥(𝑝0+𝑝𝑛)表示输入特征图在位置 pn 的值。
- 𝑤(𝑝𝑛)表示卷积核在位置 𝑝𝑛 的权重。
- 𝑅 是卷积核的感受野,表示卷积核覆盖的区域
空洞卷积(dilation>1)
空洞卷积相当于pn不再是一个一个的变化,而是根据dilation进行变化
可变形卷积
相当于在普通卷积上多加了一个△pn,使得特征图不在原始固定的矩阵位置与卷积核的w相乘,而是在另外一个学习到的位置与w相乘。剩余操作(求和)和普通卷积一样。
△ Pn怎么学?
它是通过一个额外的普通卷积学习出来的,这个普通卷积:
- in-channel = 输入图像的 channel
- out-channel = 2 * kernel-size * kernel-size【这里的out_channel是为了生成偏移的坐标,3*3网格,每个网格有x、y 两个坐标值】
- stride / padding是由P0决定的
需要学习多少参数?
由于在可变形卷积中,卷积核不再是固定,而是可以根据输入特征图的内容进行调整。这种调整是通过学习每个位置的偏移量来实现的。对于一个K*K的卷积核:
- 需要学习K*K个位置的偏移。
- 每个位置有两个方向的偏移(x和y)。
因此,每个卷积核总共需要学习2*K*K个偏移参数。
对于dilation=1的情况,因为图像的大小是H*W,所以一共要学习2*K*K*H*W个参数。
相乘求和
可变形卷积(Deformable Conv)原理解析与torch代码实现-CSDN博客
论文及代码详解——可变形卷积(DCNv1)_可变形卷积v1-CSDN博客
Deformable Convolution |可变形卷积_哔哩哔哩_bilibili