反卷积理解和推导

反卷积理解和推导反卷积理解和推导 反卷积

大家好,欢迎来到IT知识分享网。

参考 怎样通俗易懂地解释反卷积? – 知乎,【基础知识学习】卷积与反卷积学习笔记 – 知乎

1.概念

反卷积是一种特殊的正向卷积,先按照一定的比例通过补 0 来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。

反卷积理解和推导

图1 反卷积原理图(stride=1)

反卷积理解和推导

 图1 反卷积原理图(stride=2)

2.数学推导

假设输入图像 input 尺寸为 4×4 ,元素矩阵为:

反卷积理解和推导

卷积核 kernel 尺寸为 3×3 ,元素矩阵为:

反卷积理解和推导

步长 strides=1,填充 padding=0,即 i=4,k=3,s=1,p=0,按照卷积公式,反卷积理解和推导 ,输出图像 output 的尺寸为 2×2。

反卷积理解和推导

其中,\small y1=w_{0,0}x_{1}+w_{0,1}x_{2}+w_{0,2}x_{3}+w_{1,0}x_{5}+w_{1,1}x_{6}+w_{1,2}x_{7}+w_{2,0}x_{9}+w_{2,1}x_{10}+w_{2,2}x_{11}

把 input 的元素矩阵展开成一个列向量 X:

反卷积理解和推导

把输出图像 output 的元素矩阵展开成一个列向量 Y:

反卷积理解和推导

对于输入的元素矩阵 X 和 输出的元素矩阵 Y ,用矩阵运算描述这个过程:\small Y=CX

通过推导,我们可以得到稀疏矩阵 C :

反卷积理解和推导

用C的第一行和input相乘,得到y1; 第二行和input相乘,得到y2……

反卷积的操作就是要对这个矩阵运算过程进行逆运算,即 \small X=C^{T}Y


下面这个图直观地体现出整个过程:

将输入input 平展成 16∗1 矩阵,将卷积核转换为一个 4×16 的稀疏矩阵。然后,进行矩阵乘法。将所得到的 4×1 矩阵reshape为 2×2 输出。

反卷积理解和推导

此时,若用卷积核对应稀疏矩阵的转置\small C^{T}(16∗4)乘以输出的平展(4∗1),得到的结果(16∗1)的形状和输入的形状(16∗1)相同。 

反卷积理解和推导

 注:上述两次操作并不是可逆关系,对于同一个卷积核,转置卷积的操作并不能恢复到原始的数值,而仅仅保留原始的形状。

反卷积理解和推导

如上图所示,我们用一个3×3的卷积核卷积一个4×4的输入,得到一个2×2的输出后,再进行反卷积,发现并不是原来的输入。其实很简单,第一个数相当于9个数相加等于4.5,用一个方程怎么可能解出9个未知数。所以反卷积不能还原原来的输入,只能保证shape相同。 

3.padding

1.卷积中padding

①full模式下从卷积核与图像相交点处开始做卷积:

反卷积理解和推导

②same模式下为卷积核中心点与图像重合时开始卷积,也叫half填充:

反卷积理解和推导

③valid 下为卷积核完全在图像中的卷积:

反卷积理解和推导

2.反卷积中的padding

一种说法是:直观上填充0的层数 padding。

一种说法是:卷积核初始时卷积图像的尺寸,当padding’=0时,初始卷积核可卷积到图像的单位等于1,参考官网 ConvTranspose2d — PyTorch 1.13 documentation ,看图理解:

反卷积理解和推导

反卷积理解和推导

它们的关系是 padding’=kernel-1-padding。

4.stride

1.卷积中的stride: 卷积核卷积的步长

2.反卷积中的stride: 图像的每个像素之间的距离,即给像素之间添加stride-1个元素0。

反卷积理解和推导

5.输出图像尺寸公式

1.卷积的输出图像大小

反卷积理解和推导

反卷积理解和推导

以上图为例,设input=6,kernel=3,stride=2,padding=1,则output=[(6+2-3)/2+1]=[3.5]=3

2.反卷积的输出图像大小

注:此公式中的padding是外层填充0的层数。

反卷积理解和推导

反卷积中,stride就是在相邻元素之间添加stride-1个0元素。 变换后,实际的input大小反卷积理解和推导

反卷积理解和推导

假设输入图片大小为3×3,其他参数和之前一样kernel=3,padding=1,stride=2。

注:反卷积的stride是用在扩展输入图像上的,而不是kernel移动的步长,所以反卷积中kernel步长永远是1。

计算得,o=[(3+1*2+2-3)/1+1]=5,即输出尺寸等于5。


注:如果padding定义成卷积核初始时卷积图像的尺寸,那反卷积的公式应该为

\small o=\frac{i_{s}+2(k-1-p)-k}{s}+1

相当于把 p 用 p’=k-1-p 替换掉。


3.例题

注:此公式中的padding是外层填充0的层数。

1.输入尺寸input=2,kernel_size=3,stride=1,padding=2,计算反卷积的输出尺寸?

反卷积理解和推导

is=i+(s-1)(i-1)=i=2

output= (is+2p-k)/1+1=(2+4-3)/1+1=4


2.输入尺寸input=3,kernel=3,stride=2,padding=1,计算反卷积的输出尺寸?

反卷积理解和推导

is=i+(s-1)(i-1)=3+1*2=5

output= (is+2p-k)/1+1=(5+2-3)/1+1=5

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126900.html

(0)
上一篇 2025-09-14 22:20
下一篇 2025-09-14 22:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信