基本的 Winograd 卷积仅支持 r=3 和 r=2 的二维卷积算子,且切片大小不超
过 6, 无 法 满 足 现 代 CNN 中 丰 富 的 卷 积 算 子 类 型 , 需 要 对 其 进 行 一 般 化 。
Winograd 卷积的一般化主要分为四个方向,分别是支持任意维度、支持任意切
片大小、支持任意常规卷积、支持特殊卷积。
三维卷积是三维 CNN 的主要组件,常用于处理空间相关的信息。通过对一
维 Winograd 卷积进行嵌套,可以得到其二维形式,重复进行嵌套则可以得到任
意维度的 Winograd 卷积。Budden 等
[7]
给出了 N 维 Winograd 卷积的一般形式,
并将二维 Winograd 卷积视为特殊情况在 CPU 上实现,但并未实现三维的情况。
其 他 研 究 者
[8 ⇓ ⇓ ⇓ -12]
使 用 了 同 样 的 嵌 套 方 法 , 并 针 对 特 定 平 台 完 成 了 三 维
Winograd 卷积的实现。由于不同维度上算法的实现有统一性,Shen 等
[13-14]
提出
了 二 维 、 三 维 统 一 的 现 场 可 编 程 逻 辑 门 阵 列 ( field pro-grammable gate
array,FPGA)模板实现。Deng 等
[15]
提出了可变分解方法,支持三维卷积的同时
也支持了非单位步长的卷积。
更大的切片大小会减少切片之间的重叠部分,但同时也会带来更大的数值
误差,因此在对精度要求不太严格的场合会直接使用更大的切片尺寸以提升性
能。大尺寸的卷积核也在卷积网络模型中经常出现,通常为了保持 Winograd 卷
积的精度,这里卷积也会被替换为小尺寸的卷积。Lu 等
[16]
在 FPGA 上评估了大
尺寸切片分别在 r=3 和 r=5 下的精度情况,实验表明小的切片尺寸在 r=3 时可以
保持模型的高精度。Huang 等
[17]
也完成了类似的工作。Mazaheri 等
[18]
则基于
符号编程构建了支持不同硬件后端的实现,同时也支持不同尺寸的切片。
此类直接实现的方法会在大尺寸切片和大尺寸卷积核上显著损失精度,因
此将这类卷积分解为更小的卷积成为了研究者常用的方法。Yang 等
[19]
使用分
解方法统一了常规卷积、depth-wise 卷积以及分组卷积,而大切片尺寸
[20]
、大
卷积核卷积
[21⇓ ⇓ ⇓ -25]
和非单位步长卷积
[15,20,22⇓ -24,26⇓ -28]
也都可以通过分解方法转换
为基本的 Winograd 卷积。常用的分解单元实现包括等。Liu 等
[29]
同样基于分
解方法,在 FPGA 上实现了使用相同资源支持任意卷积核大小的 Winograd 卷
积。利用大卷积核上计算的对称性,Sabir 等
[30]
使用近似计算技术支持了 r=5 大
小的卷积核。
包括空洞卷积和转置卷积在内的特殊卷积常用于图像分割、超分辨率等领
域。空洞卷积的 Winograd 形式被提出用于支持扩张为 2 和 4 的情况
[31]
,原理是