【深度学习】
【深度学习】常见的卷积操作
前言
结合我自己学习深度学习的经历来看,卷积的变种实在太多,分类维度也五花八门,很容易学着学着就混了。所以这篇我特意从「采样几何」这一条主线来梳理总结,暂时不聊分组卷积、深度可分离卷积、动态卷积、图卷积这类其他分类方向。
所谓采样几何,其实就是看卷积核在什么位置读取输入、相邻输出的中心点怎么移动、哪些位置允许参与计算,还有采样坐标是不是固定的。
接下来我会依次整理标准卷积、步幅卷积、空洞卷积、转置卷积、可变形卷积、掩码/因果卷积、部分卷积和稀疏/子流形稀疏卷积,每一种都会配上独立的示意图和对应的计算公式,帮大家把它们在采样模式上的核心区别理清楚。
文章目录
统一符号
设二维输入为
X ∈ R H i n × W i n × C i n , X\in\mathbb R^{H_{in}\times W_{in}\times C_{in}}, X∈RHin×Win×Cin,
卷积核为
K ∈ R k h × k w × C i n × C o u t . K\in\mathbb R^{k_h\times k_w\times C_{in}\times C_{out}}. K∈Rkh×kw×Cin×Cout.
深度学习框架中的二维“卷积”通常实际执行互相关:
Y i , j , o = b o + ∑ c = 0 C i n − 1 ∑ u = 0 k h − 1 ∑ v = 0 k w − 1 K u , v , c , o X i s h + u d h − p h , j s w + v d w − p w , c . (1) Y_{i,j,o}=b_o+ \sum_{c=0}^{C_{in}-1} \sum_{u=0}^{k_h-1} \sum_{v=0}^{k_w-1} K_{u,v,c,o} X_{is_h+ud_h-p_h,\;js_w+vd_w-p_w,\;c}. \tag{1} Yi,j,o=bo+c=0∑Cin−1u=0∑kh−1v=0∑kw−1Ku,v,c,oXish+udh−ph,jsw+vdw−pw,c.(1)
其中 s s s 是步幅, d d d 是空洞率, p p p 是填充。输出高度为
H o u t = ⌊ H i n + 2 p h − d h ( k h − 1 ) − 1 s h + 1 ⌋ . (2) H_{out}=\left\lfloor \frac{H_{in}+2p_h-d_h(k_h-1)-1}{s_h}+1 \right\rfloor. \tag{2} Hout=⌊shHin+2ph−dh(kh−1)−1+1⌋.(2)
下面八类卷积,核心差别都在“从哪些位置读取输入”或“输入贡献写到哪些输出位置”。
1. 标准卷积(Standard Convolution)
标准卷积在连续、规则的局部网格上采样。以 3 × 3 3\times3 3×3 卷积为例,每个输出位置读取输入中的 9 个相邻位置;卷积核移动一个输出位置时,采样窗口通常也移动一个输入位置。

忽略步幅、空洞和填充的简化表达式为
Y ( i , j , o ) = b o + ∑ c ∑ u ∑ v K ( u , v , c , o ) X ( i + u , j + v , c ) . (3) Y(i,j,o)=b_o+ \sum_{c}\sum_{u}\sum_{v} K(u,v,c,o)X(i+u,j+v,c). \tag{3} Y(i,j,o)=bo+c∑u∑v∑K(u,v,c,o)X(i+u,j+v,c).(3)
标准卷积具有三个采样特征:
- 采样点形成连续的矩形网格;
- 不同空间位置共享同一套采样形状与卷积权重;
- 相邻输出窗口通常高度重叠。
它是其他采样几何的基准。后续的步幅、空洞、可变形和掩码卷积,都是对式(3)中采样坐标或可见位置的修改。
2. 步幅卷积(Strided Convolution)
步幅卷积不改变单个窗口内部的规则采样,而是改变相邻输出中心之间的距离。当 stride 为 2 时,卷积核每次跨过两个输入位置,输出的高和宽通常约减半。

其计算仍可写为
Y i , j , o = b o + ∑ c , u , v K u , v , c , o X i s h + u − p h , j s w + v − p w , c . (4) Y_{i,j,o}=b_o+ \sum_{c,u,v}K_{u,v,c,o} X_{is_h+u-p_h,\;js_w+v-p_w,\;c}. \tag{4} Yi,j,o=bo+c,u,v∑Ku,v,c,oXish+u−ph,jsw+v−pw,c.(4)
与标准卷积相比,变化集中在 i s h is_h ish 和 j s w js_w jsw。当 s h = s w = 2 s_h=s_w=2 sh=sw=2 时,输出中心在输入上每次移动两格。
主要用途:用可学习的卷积完成下采样。
主要风险:直接跨步抽样可能违反采样定理,引入混叠;对平移几个像素的输入,输出也可能出现明显变化。需要更强平移稳定性时,可在降采样前加入低通滤波。
3. 空洞卷积(Dilated / Atrous Convolution)
空洞卷积在卷积核相邻采样点之间留出固定间隔。它仍然使用相同数量的核权重,却能覆盖更大的输入范围。

对采样偏移集合 R \mathcal R R,空洞卷积为
Y ( p ) = ∑ q ∈ R K ( q ) X ( p + d q ) . (5) Y(p)=\sum_{q\in\mathcal R}K(q)X(p+dq). \tag{5} Y(p)=q∈R∑K(q)X(p+dq).(5)
大小为 k k k、空洞率为 d d d 的一维有效核尺寸是
k e f f = d ( k − 1 ) + 1. (6) k_{eff}=d(k-1)+1. \tag{6} keff=d(k−1)+1.(6)
因此, 3 × 3 3\times3 3×3、 d = 2 d=2 d=2 的二维卷积仍只有 9 个空间权重,但采样范围相当于 5 × 5 5\times5 5×5。
优点:不增加核参数量、不降低特征图分辨率即可扩大理论感受野。
缺点:连续多层采用相同的大空洞率会反复跳过部分输入位置,形成栅格效应;在图像边缘还会有更多采样点落入填充区域。
空洞卷积广泛用于语义分割和长序列建模。Yu 和 Koltun 在 2015 年系统展示了它对多尺度上下文聚合的作用[2]。
4. 转置卷积(Transposed Convolution)
转置卷积把低分辨率输入中的每个激活,通过卷积核“散射”到更大的输出网格,并在重叠位置累加,因此常被用于可学习上采样。

若普通卷积向量化后写为
y = C K x , y=C_Kx, y=CKx,
转置卷积计算
z = C K T y . (7) z=C_K^{\mathsf T}y. \tag{7} z=CKTy.(7)
它是卷积线性映射的转置或伴随,不是 C K − 1 C_K^{-1} CK−1,所以“反卷积”并不是严格名称。
一维输出尺寸为
H o u t = ( H i n − 1 ) s − 2 p + d ( k − 1 ) + o p + 1 , (8) H_{out}=(H_{in}-1)s-2p+d(k-1)+o_p+1, \tag{8} Hout=(Hin−1)s−2p+d(k−1)+op+1,(8)
其中 o p o_p op 是 output_padding。
当核大小和步幅的组合使不同输出位置获得不同数量的重叠贡献时,输出容易出现棋盘格伪影 [3]。常见替代方案是先做 nearest/bilinear 插值,再使用标准卷积。
5. 可变形卷积(Deformable Convolution)
标准卷积的采样形状固定;可变形卷积为每个规则采样点学习偏移,使卷积窗口能够贴合目标的形状、姿态和透视变化。

DCNv1 的计算为
Y ( p ) = ∑ q ∈ R K ( q ) X ( p + q + Δ q ) , (9) Y(p)=\sum_{q\in\mathcal R} K(q)X(p+q+\Delta q), \tag{9} Y(p)=q∈R∑K(q)X(p+q+Δq),(9)
其中 Δ q \Delta q Δq 由额外的偏移预测分支从输入特征中生成。偏移通常是小数,实际取值通过双线性插值完成。
DCNv2 再为每个采样点学习调制系数 Δ m ( q ) ∈ [ 0 , 1 ] \Delta m(q)\in[0,1] Δm(q)∈[0,1]:
Y ( p ) = ∑ q ∈ R K ( q ) X ( p + q + Δ q ) Δ m ( q ) . (10) Y(p)=\sum_{q\in\mathcal R} K(q)X(p+q+\Delta q)\Delta m(q). \tag{10} Y(p)=q∈R∑K(q)X(p+q+Δq)Δm(q).(10)
适用场景:目标检测、实例分割、姿态估计,以及非刚性物体或几何变化明显的任务。
工程代价:偏移预测、双线性插值和不规则内存访问都会增加真实延迟;只比较卷积核本身的 FLOPs 会低估成本 [4][5]。
6. 掩码卷积与因果卷积(Masked/Causal Convolution)
掩码卷积使用固定的可见性规则,强制卷积只能访问指定位置。因果卷积是其中最常见的一类:预测当前位置时不能读取未来信息。

给定二值掩码 M M M,有效卷积核为
K e f f = K ⊙ M , K_{eff}=K\odot M, Keff=K⊙M,
因此
Y = ( K ⊙ M ) ∗ X . (11) Y=(K\odot M)*X. \tag{11} Y=(K⊙M)∗X.(11)
在一维序列上,空洞因果卷积可写为
y t = ∑ i = 0 k − 1 w i x t − d i . (12) y_t=\sum_{i=0}^{k-1}w_i x_{t-di}. \tag{12} yt=i=0∑k−1wixt−di.(12)
式(12)只访问 t , t − d , t − 2 d , … t, t-d, t-2d, \ldots t,t−d,t−2d,…,不会读取 t + 1 t+1 t+1 之后的值。
二维 PixelCNN 使用固定掩码按照从上到下、从左到右的顺序生成像素 [6];WaveNet 则使用因果空洞卷积扩大音频序列上的历史范围 [7]。
7. 部分卷积(Partial Convolution,用于图像修复)
部分卷积根据输入掩码,只使用当前窗口中的有效像素。与固定因果掩码不同,它的可见位置由数据中的孔洞区域决定,而且掩码会随网络层数更新。

设 M M M 是当前窗口的二值有效掩码, ∣ M ∣ |M| ∣M∣ 表示窗口元素总数。部分卷积为
y = { W T ( X ⊙ M ) ∣ M ∣ ∑ M + b , ∑ M > 0 , 0 , ∑ M = 0. (13) y= \begin{cases} W^{\mathsf T}(X\odot M)\dfrac{|M|}{\sum M}+b, &\sum M>0,\\[6pt] 0,&\sum M=0. \end{cases} \tag{13} y=⎩ ⎨ ⎧WT(X⊙M)∑M∣M∣+b,0,∑M>0,∑M=0.(13)
输出掩码更新为
m ′ = 1 [ ∑ M > 0 ] . (14) m'=\mathbf 1[\sum M>0]. \tag{14} m′=1[∑M>0].(14)
∣ M ∣ / ∑ M |M|/\sum M ∣M∣/∑M 用于补偿有效像素数量变化。只要窗口中至少有一个有效位置,下一层对应位置就会变为有效,孔洞因此逐层缩小 [8]。
这里的 Partial Convolution 是图像修复算子,不是 FasterNet 中“只对部分通道做卷积”的 PConv。
8. 稀疏卷积与子流形稀疏卷积
稀疏卷积只在活动坐标上存储和计算特征,避免对大面积空位置执行乘加。其采样邻域仍是规则网格,但只有真实存在的坐标参与累加。

设活动坐标集合为 A \mathcal A A,则
Y ( p ) = ∑ q ∈ R : p + q ∈ A K ( q ) X ( p + q ) . (15) Y(p)=\sum_{q\in\mathcal R:\,p+q\in\mathcal A} K(q)X(p+q). \tag{15} Y(p)=q∈R:p+q∈A∑K(q)X(p+q).(15)
两者的区别在输出活动集合:
- 普通稀疏卷积:只要卷积核覆盖到某个输出位置,该位置就可能被激活,所以活动集合会逐层扩张;
- 子流形稀疏卷积:只在原输入已经活动的坐标产生输出,活动集合不因普通卷积而膨胀。
子流形稀疏卷积特别适合 LiDAR 点云体素化、稀疏三维场景和高维稀疏网格[9]。
9. 总结
按采样几何观察卷积,可以归纳为四种变化:
- 改变输出中心间距:步幅卷积;
- 改变窗口内部间距或坐标:空洞卷积、可变形卷积;
- 改变位置的可见性:掩码/因果卷积、部分卷积、稀疏卷积;
- 改变贡献写入输出的方式:转置卷积。
标准卷积提供连续规则基准。步幅卷积负责下采样,空洞卷积扩大覆盖范围,转置卷积进行可学习上采样,可变形卷积学习几何偏移,掩码与部分卷积限制可见位置,稀疏卷积则跳过不存在的坐标。这八类都可以用“采样坐标、可见集合和输出坐标”统一理解。
参考文献
[1] Dumoulin, V., & Visin, F. A Guide to Convolution Arithmetic for Deep Learning. 2016. https://arxiv.org/abs/1603.07285
[2] Yu, F., & Koltun, V. Multi-Scale Context Aggregation by Dilated Convolutions. 2015. https://arxiv.org/abs/1511.07122
[3] Odena, A., Dumoulin, V., & Olah, C. Deconvolution and Checkerboard Artifacts. Distill, 2016. https://distill.pub/2016/deconv-checkerboard/
[4] Dai, J., et al. Deformable Convolutional Networks. 2017. https://arxiv.org/abs/1703.06211
[5] Zhu, X., et al. Deformable ConvNets v2: More Deformable, Better Results. 2018. https://arxiv.org/abs/1811.11168
[6] van den Oord, A., Kalchbrenner, N., & Kavukcuoglu, K. Pixel Recurrent Neural Networks. 2016. https://arxiv.org/abs/1601.06759
[7] van den Oord, A., et al. WaveNet: A Generative Model for Raw Audio. 2016. https://arxiv.org/abs/1609.03499
[8] Liu, G., et al. Image Inpainting for Irregular Holes Using Partial Convolutions. 2018. https://arxiv.org/abs/1804.07723
[9] Graham, B., & van der Maaten, L. Submanifold Sparse Convolutional Networks. 2017. https://arxiv.org/abs/1706.01307
更多推荐



所有评论(0)