上采样主要用于图像需要放大的情况。一些最流行的上采样方法是插值,包括最近邻插值、双线性插值和双三次插值。但是涉及到深度学习时,这些传统的上采样技术会过于死板,没有留下“学习”的空间。本文讲解了转置卷积。
转置卷积又称反卷积 (Deconvolution)。与传统的上采样方法相比,转置卷积的上采样方式并非预设的插值方法,而是同标准卷积一样,具有可学习的参数,可通过网络学习来获取最优的上采样方式。
卷 积
标准卷积的运算操作是对卷积核中的元素与输入矩阵上对应位置的元素进行逐像素的乘积并求和。然后,卷积核在输入矩阵上以步长为单位进行滑动,直到遍历完输入矩阵的所有位置。
卷积原理:
- 将输入特征图进行展平,得到I,它是1行16列的矩阵
- 将构建的卷积核等效矩阵展平成列向量,构建出一个矩阵C,C是16行4列的矩阵
- I和C相乘得到矩阵O,O就是输出特征图展平之后的结果
那么已知矩阵C和矩阵O,是否可以求出矩阵I呢?答案是不行,一个矩阵存在逆矩阵的条件是:它必须是一个方阵。而这里的矩阵C,并不是一个方阵,所以无法还原矩阵I。也就是说,一般情况下深度学习中的卷积是不可逆的。
但是如果不要求还原原始输入矩阵I,只想得到与输入矩阵相同大小的矩阵P是可以的。只需要在等号两边的右侧同时乘上矩阵C的转置就可以了。很明显,矩阵I和矩阵P是不相等的。
转置卷积原理:
- 接下来进行逆向操作:
- 首先将矩阵O还原为2×2的输入特征图,将矩阵C的转置矩阵C^T的每一列写成一个个2×2的等效矩阵(共16个),将还原的2×2的特征图与C转置的等效矩阵进行对应位置元素相乘累加求和,得到矩阵P每一个位置上的数值。
看右下角,对于输入特征图I先进行最外层的填充,拿绿色的矩阵与其进行元素相乘累加求和,二者的结果也为0
4.接下来再拿矩阵C的转置矩阵的第二个矩阵与输入特征图I进行对应位置元素相乘累加求和,结果为2,也就是伪逆卷积的结果P中的第二个值。
看右下角,对于输入特征图I先进行最外层的填充,拿绿色的矩阵与其进行元素相乘累加求和,二者的结果也为2
5.依次使用每一个等效矩阵与输入特征图I进行运算。
6.可以发现,通过绿色矩阵在填充过后的输入特征图I上进行卷积,也可以求出伪逆卷积的结果P中的每一个值。
7.绿色卷积核和最开始的卷积的参数是上下左右翻转之后的结果。
转置卷积计算
运算步骤:
1.在输入特征图元素间填充s-1行、列的0元素
2.在输入特征图四周填充k-p-1行、列的0元素
3.将卷积核参数上下、左右翻转
4.做正常卷积运算(步长为1,填充为0)——此时不需要再对特征图进行填充了——直接进行步长为1,填 充为0的卷积运算
举例:s=1,p=0,k=3
1.在输入特征图元素间填充s-1=1-1=0行、列的0元素——不需要在特征图元素之间填充0元素
2.在输入特征图四周填充k-p-1=3-0-1=2行、列的0元素——在特征图四周填充2行2列的0元素
3.将卷积核参数上下、左右翻转
4.做正常卷积运算(步长为1,填充为0)