上采样、转置卷积、反卷积、反池化,傻傻分不清

下采样downsample:是图像处理上的概念,即将分辨率大的图像转换为分辨率小的图像,即将图像缩小。可以采用的方法为线性差值、卷积、池化等。

上采样updown:则与下采样相反,是将分辨率小的图像转换为分辨率大的图像,即将图像放大。可以采用的方法有线性插值、转置卷积、反池化等。

卷积convolution:也是来自于图像处理上的概念,在深度学习邻域就是指卷积神经网络了。它可以提取图像的特征,通过合理配置kernel size、padding和stride也可以实现图像分辨率的缩小。

池化pooling:与卷积相似,不过kernel上没有参数,也可以用来缩小图像的分辨率。

转置卷积transposed convolution:这个操作也常被称为反卷积/去卷积,即deconvolution,该反卷积与数学上的反卷积有所区别,所以不要混淆了。这个操作实际上称为转置卷积是更为合适的,下面会解释。转置卷积与卷积相反,合理配置超参数可以放大图像的分辨率。

反池化unpooling是与池化相反,与转置卷积对应的概念,也可以用来放大图像的分辨率。

深入转置卷积
视角一:转置卷积是卷积的逆操作
在这里插入图片描述
在转置卷积过程中,会把输入图像上的每个元素分别与转置卷积核相乘,分别获得多个输出特征图,然后把特征图叠加起来,可以看到输出特征图的尺寸要比输入图像大。长得比较帅的同学会问了,那么为什么输出的特征图尺寸为3呢?因为设置步幅为1,因此可以看到第二个特征图中2x2的数字矩阵的位置是第一个特征图的2x2数字矩阵往右移动一列;而第三个特征图则是在第一个特征图基础上往下移动一行。

我们看看步幅为2的情况,可以看到移动的行列数变成2了。
在这里插入图片描述
考虑一下padding的情况,卷积的时候,padding会在输入图像的最上下左右分别添加空白行列;而在转置卷积时正好相反,会被输出的特征图的最上下左右行列删除。

视角二:转置卷积也可以作为卷积操作

转置卷积可以看做填充+上下左右翻转卷积核+卷积
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

视角三:矩阵变换-数学本质
定义一个全连接层的输入输出分别为行向量 x x x和列向量 y y y,权重矩阵为 W W W,则全连接层的计算可以写为
y = X x y = Xx y=Xx
而卷积实际上就是局部连接权值共享的全连接层,如果我们将输入图像和输出特征图都写成列向量的形式,即 x x x y y y,那么也可以把卷积核扩写成权重矩阵 W W W

假设卷积核为
在这里插入图片描述

我们可以推出对应的权重矩阵为
在这里插入图片描述
可以观察到,权值矩阵其中有很多零,因为卷积层是局部连接的,事实上每一行只有四个非零参数,刚好对应卷积核的四个参数。

在早期深度学习框架中,卷积的计算正是转换为这种 y = W x y=Wx y=Wx的形式。

而对于转置卷积,我们假设转置卷积核和上面的卷积核是一致的,那么它写出来的权值矩阵为
在这里插入图片描述
很幸运地,它刚好是 W W W的转置。也就是说在同样的卷积核的情况下,转置卷积的权值矩阵是卷积的权值矩阵的逆。这里我们把卷积的输出作为转置卷积的输入,得到
x ′ = W T y x'=W^Ty x=WTy
长得比较帅的同学会问了,这里的 x ′ x' x是不是刚好等于 x x x,也就说卷积和转置卷积是可以互逆的。答案是否定的,很明显, x = W T y x=W^Ty x=WTy y = W x y=Wx y=Wx并不等价,除非 W W W是正交矩阵,这个条件太严苛了。

反池化
用的很少,主要分为反最大池化反平均池化

反最大池化
在这里插入图片描述
反平均池化
相当于卷积核全是1的转置卷积。

补充一下卷积和转置卷积之后的尺寸变换
卷积时,假设输入图片变成为 ( n , n ) (n,n) (n,n),padding为 2 p 2p 2p,stride为 s s s,kernel size为 k k k,输出特征图边长 ( m , m ) (m,m) (m,m),则
m = ( n − k + 2 p + s ) / s = ( n − k + 2 p ) / s + 1 m = (n-k+2p+s)/s=(n-k+2p)/s+1 m=(nk+2p+s)/s=(nk+2p)/s+1
可以看出 m m m不一定为正数,一般会往小里取整,相当于把 n n n减掉最后几行几列。
在转置卷积时,刚好相反,我们把 m m m当做输入, n n n当做输出就可以了,非要换一下形式的话就是
n = s m + k − 2 p − s n=sm+k-2p-s n=sm+k2ps
这里就不存在整除问题了。而且一般为了方便,如果我们想要转置卷积后图像分辨率增大 n n n倍,我们就让 s = n s=n s=n,并且使得 k − 2 p = s k-2p=s k2p=s就可以了,因为这可以使得上述公式变成 n = s m n=sm n=sm

参考链接:
【1】https://zh.d2l.ai/chapter_computer-vision/transposed-conv.html#subsec-connection-to-mat-transposition
【2】https://www.bilibili.com/video/BV1CM4y1K7r7?spm_id_from=333.999.0.0

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
转置卷积在YOLOv8中的应用具有以下特点:转置卷积可以实现上采样的功能,用于将低分辨率的特征图恢复到原始输入尺寸。在YOLOv8中,转置卷积用于增加小目标的检测精度。转置卷积的过程是通过对输入的特征图进行padding操作,然后使用随机初始化的一定尺寸的卷积核对新的特征图进行卷积操作。转置卷积的输出结果与反卷积核的每个元素进行相乘,并将结果映射到输出的相应位置。在转置卷积的过程中,由于重叠的地方直接相加,可能会出现棋盘化的现象。YOLOv8结合转置卷积的优化方法可以提高对小目标的检测效果。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [上采样(最近邻插值、双线性插值法、池化转置卷积)](https://blog.csdn.net/YuanLei96/article/details/124237627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [改进YOLO系列:YOLOv5结合转置卷积,实现小目标涨点](https://blog.csdn.net/qq_44224801/article/details/129998174)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值