反卷积理解和推导

article/2025/9/19 22:38:33

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

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 矩阵,将卷积核转换为一个 4x16 的稀疏矩阵。然后,进行矩阵乘法。将所得到的 4x1 矩阵reshape为 2x2 输出。

此时,若用卷积核对应稀疏矩阵的转置\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大小

假设输入图片大小为3x3,其他参数和之前一样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

 


http://chatgpt.dhexx.cn/article/B5a4ZxZt.shtml

相关文章

生物信息学反卷积论文阅读

文章目录 反卷积的概念反卷积的具体方式反卷积预测RNA序列知识背景公式推导 亚硫酸氢盐测序知识背景公式推导 R包的使用RNA测序数据分析使用亚硫酸氢盐数据进行测序 反卷积的概念 由于许多组织样本不适合分解成单个细胞,因此不能利用单细胞RNA测序技术对它们的单个…

理解反卷积

先看看卷积,数字只是说明位置方便,不是具体数值,这里是valid卷积 ,stride1 由CNN基础我们知道 17 这个点是由前面1 2 5 6 和卷积核运算得到的,那么反卷积就是要从17 反推1,2,5,6 ,这是一个无穷解问题&#…

反卷积常用方法

反卷积 一个用于分类任务的深度神经网络通过卷积来不断抽象学习,实现分辨率的降低,最后得到一个较小的FeatureMap,即特征图,通常大小为 5 5 5\times5 55或者 7 7 7\times7 77。而图像分割任务需要恢复与原尺寸大小一样的图片&am…

声音反卷积matlab,用MATLAB做反卷积

关键词:反卷积 MATLAB fft 频移 分母中频谱零点 卷积核 % 代码如下: clear all;clc; h [1 1 1 1] % 要求 f [1 -2 3 -2] % 已知 g conv(h,f) % 已知 g h*f 这里卷积结果g知道,f知道,f视作卷积核,反卷积求h …

彻底搞懂CNN中的卷积和反卷积

前言 卷积和反卷积在CNN中经常被用到,想要彻底搞懂并不是那么容易。本文主要分三个部分来讲解卷积和反卷积,分别包括概念、工作过程、代码示例,其中代码实践部分主结合TensorFlow框架来进行实践。给大家介绍一个卷积过程的可视化工具&#x…

卷积与反卷积

1、卷积 上图展示了一个卷积的过程,其中蓝色的图片(4*4)表示的是进行卷积的图片,阴影的图片(3*3)表示的是卷积核,绿色的图片(2*2)表示是进行卷积计算之后的图片。在卷积操作中有几个比较重要的参数,输入图片的尺寸、步长、卷积核的…

反卷积原理

一 介绍 反卷积,可以理解为卷积操作的逆运算。这里千万不要当成反卷积操作可以复原卷积操作的输入值,反卷积并没有那个功能,它仅仅是将卷积变换过程中的步骤反向变换一次而已,通过将卷积核转置,与卷积后的结果再做一遍…

Tensorflow——反卷积

目标——主要用来进行上采样,使图像形状变大 函数:conv2d_transpose(value, filter, output_shape, strides, padding"SAME", data_format"NHWC", nameNone) Arg: value:指需要做反卷积的输入图像&#xff…

机器学习19:反卷积算法

机器学习19:反卷积算法(转载和整理) 在整理全卷积网络的过程中,被反卷积的概念困扰很久,于是将反卷积算法单独整理为一篇博客,本文主要转载和整理自知乎问题如何通俗易懂地解释反卷积?中的高票答案。 1.反…

卷积和反卷积详解

反卷积(deconvolution),也叫转置卷积,分部卷积(fractionally-strided convolution),在论文中也叫upconv。 1. Pytorch中2D卷积和反卷积的函数 class torch.nn.Conv2d(in_channels, out_channe…

什么是反卷积(快速理解)

什么是反卷积 参考博客 我们知道输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而又是我们需要将图像恢复到原来的尺寸以便进行进一步的计算,整个扩大图像尺寸,实现图像由小分辨率到大分辨…

反卷积(Transposed Convolution, Fractionally Strided Convolution or Deconvolution)

反卷积(Deconvolution)的概念第一次出现是Zeiler在2010年发表的论文 Deconvolutional networks 中,但是并没有指定反卷积这个名字,反卷积这个术语正式的使用是在其之后的工作中( Adaptive deconvolutional networks for mid an…

反卷积详解

一.概述 反卷积又称转秩卷积(Transposed Convolution),上采样(Upsampled )。 其作用举例如下: 1.当我们用神经网络生成图片的时候,经常需要将一些低分辨率的图片转换为高分辨率的图片。 2.在语义分割中,会使用卷积层在编码器中…

反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释

文章目录 反卷积的作用卷积中padding的几个概念No PaddingHalf(Same) PaddingFull Padding 反卷积反卷积中的Padding参数反卷积的stride参数反卷积的output_padding参数 反卷积总结参考资料 反卷积的作用 传统的卷积通常是将大图片卷积成一张小图片,而反卷积就是反…

反卷积(Transposed conv deconv)实现原理(通俗易懂)

什么是卷积 卷积就是把卷积核放在输入上进行滑窗,将当前卷积核覆盖范围内的输入与卷积核相乘,值进行累加,得到当前位置的输出,其本质在于融合多个像素值的信息输出一个像素值,本质上是下采样的,所以输出的…

Mysql的基本使用——Mysql教案(一)

文章目录 Mysql的基本使用1. Mysql的安装2. Mysql基本操作数据库操作表操作SQL操作练习资源课堂练习 查询(SELECT)去重(distinct)别名(AS)限制查询数(limit)排序(ORDER BY)条件查询(WHERE)普通查询多条件的查询语句模糊查询BETWEEN AND 内连接查询(inner join)外连接查询(outer…

链表-双链表

双向链表应用实例 双向链表的操作分析和实现 使用带 head 头的双向链表实现 管理单向链表的缺点分析: 单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点 ,而双向链表&…

八股文之mysql

1、MySQL性能优化解决思路 SQL优化 表结构优化 程序配置优化 架构设计优化 硬件和操作系统优化 SQL语句优化 索引失效情况 最左前缀匹配原则 索引下推 表结构优化 将字段很多的表分解成多个表 对于字段较多的表,如果有些字段的使用频率很低,可以将…

数据库-MySQL

1.数据库基础概念 1.查看数据库-SQLsever学习基础概念 2.MySQL数据类型 1.MySQL支持多种数据类型,大致可分为四类 1.数值类型2.日期和时间类型3.字符串(字符)类型4.二进制类型 1.数值类型 1.整数类型 1.TINYINT(小整型数&#xff…

【爆肝题解】❤️24❤️新手也能理解并学会的剑指offer题目❤️❤️剑指 Offer 24. 反转链表

本文章是❤️剑指 offer(第2版)❤️的内容,该专栏还有多篇优质内容在等待你观看,现在点击右上角点击这个————🚀订阅专栏🚀 🔆坚持刷算法 💎每天进步一点点 🚀冲冲冲冲…