039、转置卷积

之——增大高宽

杂谈

        通常来说,卷积不会增大输入的高宽,通常要么不变,要么减半;如果想要直接padding来增加高宽,在不断的卷积过程中,padding的0越来越多,最后要做像素级的判断时候,由于有效图像变得太小,将难以进行分割。

        所以引入转置卷积来增大输入的高宽。


正文

1.转置卷积

        如下操作:

        转置卷积,为什么叫转置,其实就是一个逆过程,在原来的代码实现中依靠转置实现。

        实际的转置卷积操作过程,先填充,然后转置核,然后正常卷积,可以观察到输出和上面操作是一样的:

        实在想不通就反过来想,再想不通就别想了,会用就行。 


2.实现

        不同的步幅,在转置卷积中,步幅是输出的步幅,也就是间隔多少加起来:

X, K = X.reshape(1, 1, 2, 2), K.reshape(1, 1, 2, 2)
tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, bias=False)
tconv.weight.data = K
tconv(X)

        

tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, stride=2, bias=False)
tconv.weight.data = K
tconv(X)

         填充在转置卷积中变成了删除,例如,当将高和宽两侧的填充数指定为1时,转置卷积的输出中将删除第一和最后的行与列。

tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, padding=1, bias=False)
tconv.weight.data = K
tconv(X)
#tensor([[[[4.]]]], grad_fn=<ConvolutionBackward0>)

        下面代码证明了卷积与转置卷积的形状可逆:

X = torch.rand(size=(1, 10, 16, 16))
conv = nn.Conv2d(10, 20, kernel_size=5, padding=2, stride=3)
tconv = nn.ConvTranspose2d(20, 10, kernel_size=5, padding=2, stride=3)
tconv(conv(X)).shape == X.shape
#True


3.意义

        转置卷积最直观的意义是可以把图像灵活变大,但实际上,对应于卷积的从图像中提取出特性模式的作用,转置卷积的作用就是从特定模式恢复到原图像的分类聚类这样一个操作,可以理解为原图像在语义分割中被分为了不同类别的像素点聚类,一个常见的寓意分割模型要做的就是先从原图中得到特征模式,而后从特征模式恢复到与原图大小相当的这些类别的分割聚类图像,也就是还原到标签掩膜图。

        这在网络中通常被称为一个上采样过程,不同于简单分类的目标只是个类别,语义分割的监督的目标是原图大小的一个向量,但特征提取是个下采样过程,原图会变小,所以需要上采样回去才能进行监督。上采样的传统方法是线性插值,但做不到很好的拟合,所以线性插值一般用于初始化。

        语义分割的下采样后上采样的过程看似丢掉了空间的细节信息,实际上是将空间信息在通道维度进行一个扩散,在特征维度进行信息增加,所以从体量来看是没有损失信息的。


4.补充

        转置卷积(Transpose Convolution),也被称为反卷积(Deconvolution)或分数步长卷积(Fractionally Strided Convolution),是深度学习中的一种操作,常用于图像处理、语音处理和自然语言处理等领域。虽然名字中包含"卷积",但它实际上是与标准卷积操作相反的一种操作。

        在深度学习中,卷积神经网络(CNN)被广泛用于图像识别、语音处理等任务。卷积操作通过卷积核(filter)在输入数据上滑动,计算一系列局部区域的加权和,从而提取特征。而转置卷积则是将这个过程反过来,从输入中生成更大的输出。

转置卷积的过程如下:

  1. 扩展输入空间: 转置卷积首先在输入的每个元素之间插入一些新的元素,使得输入的大小变得更大。

  2. 使用卷积核: 接下来,与标准卷积操作相似,通过一个可学习的卷积核对扩展后的输入进行卷积操作。这个卷积核的权重是可以被训练的,就像在标准卷积中一样。

  3. 调整步幅: 转置卷积允许指定输出的步幅,这是通过在输入之间插入零元素来实现的。这使得输出的大小可以灵活地调整。

  4. 调整填充: 转置卷积也可以包含填充操作,以控制输出的大小。填充在输入的周围添加了一些额外的元素,以确保输出的大小满足特定的需求。

        转置卷积广泛应用于图像分割、物体检测、生成对抗网络(GANs)等任务中。在图像生成中,转置卷积可以将低分辨率的特征图升采样为高分辨率的图像。在生成对抗网络中,生成器网络通常使用转置卷积来将潜在空间中的随机向量映射到生成图像的空间。

需要注意的是,"反卷积"这个术语可能会引起混淆,因为在数学上,真正的反卷积与转置卷积并不相同。在实际应用中,人们通常使用"反卷积"这个术语来描述转置卷积操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/267442.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式核心技术之分布式共识

文章目录 什么是分布式共识&#xff1f;分布式共识方法PoWPoSDPoS 三种分布式共识算法对比分析 选主过程就是一个分布式共识问题&#xff0c;因为每个节点在选出主节点之前都可以认为自己会成为主节点&#xff0c;也就是说集群节点“存异”&#xff1b;而通过选举的过程选出主节…

基于Java SSM框架实现医院挂号上班打卡系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现医院挂号上班打卡系统演示 摘要 在网络发展的时代&#xff0c;国家对人们的健康越来越重视&#xff0c;医院的医疗设备更加先进&#xff0c;医生的医术、服务水平也不断在提高&#xff0c;给用户带来了很大的选择余地&#xff0c;而且人们越来越追求更个…

【leetcode100-019】【矩阵】螺旋矩阵

【题干】 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 【思路】 不难注意到&#xff0c;每进行一次转向&#xff0c;都有一行/列被输出&#xff08;并失效&#xff09;&#xff1b;既然已经失效&#xff0c;那我…

MyBatis-Plus中默认方法对应的SQL到底长啥样?

我希望成为&#xff1a;自媒体圈中技术最好、实战经验最丰富的达人&#xff0c;技术圈中最会分享的架构师。加油&#xff01; 我的公众号&#xff1a;Hoeller 过段时间要给公司同事做Mybatis-Plus相关的培训&#xff0c;所以抓紧时间看看Mybatis-Plus的源码&#xff0c;顺便也分…

RT-Thread 内核对象管理框架

内核对象管理框架 RT-Thread采用内核对象管理系统来访问/管理所有内核对象&#xff0c;内核对象包含了内核中绝大部分设施&#xff0c;这些内核对象可以是静态分配的静态对象&#xff0c;也可以是从系统内存堆中分配的动态对象。 RT-Thread内核对象包括&#xff1a;线程&…

使用VisualStutio2022开发第一个C++程序

使用VisualStudio2022创建C项目 第一步&#xff1a;新建C的控制台应用 第二步&#xff1a;填写项目名称和代码存放位置&#xff0c;代码的存放目录不要有中文名 第三步:点击创建&#xff0c;VisualStudio会自动开始帮我们创建项目 第四步&#xff1a;项目创建好以后&…

2023,测试开发人的年终总结

根据TesterHome社区发帖整理。从该年终总结可以看出当前测试行业&#xff0c;哪怕是测试开发也是竞争很厉害。作为测试同仁&#xff0c;不但要掌握功能测试、接口测试、性能测试&#xff0c;掌握各种工具使用&#xff0c;还得懂开发&#xff0c;懂Java/Python&#xff0c;懂VUE…

洛谷——P3884 [JLOI2009] 二叉树问题(最近公共祖先,LCA)c++

文章目录 一、题目[JLOI2009] 二叉树问题题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示基本思路&#xff1a; 一、题目 [JLOI2009] 二叉树问题 题目描述 如下图所示的一棵二叉树的深度、宽度及结点间距离分别为&#xff1a; 深度&#xff1a; 4 4 4宽度&…

【AI提示词故事】《启示之星:寻找神殿的探险之旅》

故事叙述 在未来的某一天&#xff0c;人类发现了一个神秘的星球&#xff0c;被称为“启示之星”。传说在这颗星球上&#xff0c;有一座可以实现人类最大愿望的神殿。 启示之星 一支探险队被派往这颗星球&#xff0c;他们的目标是寻找神殿并实现自己的最大愿望。 在星球上&…

关于 curl 常用命令的使用整理【不定期更新】

目录 1. HTTP 请求2. 文件操作2.1 文件下载2.2 文件上传2.3 FTP 操作 3. 代理和网络设置4. 身份验证5. 调试和信息显示6. more and more curl 是一个用于在命令行下进行数据传输的工具&#xff0c;支持多种协议&#xff0c;包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等。它通常用…

结合ChatGPT和MINDSHOW自动生成PPT

总结/朱季谦 一、首先&#xff0c;通过chatGPT说明你的需求&#xff0c;学会提问是Ai时代最关键的一步。你需要提供一些关键信息&#xff0c;如果没有关键信息&#xff0c;就按照大纲方式让它设计&#xff0c;例如&#xff0c;我让它帮我写一份《2023年年中述职报告》的模版—…

项目管理进阶之序言

背景 可能任何一个程序猿/媛都有一个梦想&#xff0c;立志成为一个技术Leader&#xff0c;带领一个Team&#xff0c;完成一个组织中重要的Project。 有些人天赋异禀&#xff0c;光彩夺目&#xff0c;从小已形成的某些特质&#xff0c;足以让他/她胜任这个领域&#xff0c;我们…

第11章 GUI Page428 步骤七 设置圆,矩形,文字的前景色

运行效果&#xff1a; 关键代码&#xff1a; 分别设置圆&#xff0c;矩形&#xff0c;和文字的画笔颜色&#xff0c;其中文字的设置方法稍有不同 圆&#xff1a; 矩形&#xff1a; 文字&#xff1a;

CV算法面试题学习

本文记录了CV算法题的学习。 CV算法面试题学习 1 点在多边形内&#xff08;point in polygon&#xff09;2 高斯滤波器3 ViTPatch EmbeddingPosition EmbeddingTransformer Encoder完整的ViT模型 4 SE模块5 Dense Block6 Batch Normalization 1 点在多边形内&#xff08;point …

2000-2021年全国各省三农指标数据(700+指标)

2000-2021年全国各省三农指标数据合集&#xff08;700指标&#xff09; 1、时间&#xff1a;2000-2021年 2、来源&#xff1a;整理自2001-2022年农村年鉴 3、范围&#xff1a;31省市 4、指标&#xff1a;、农村经济在国民经济中的地位、社会消费品零售额_亿元、社会消费品零…

持续集成交付CICD:Jira 发布流水线

目录 一、实验 1.环境 2.GitLab 查看项目 3.Jira 远程触发 Jenkins 实现合并 GitLab 分支 4.K8S master节点操作 5.Jira 发布流水线 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注master1K8S master节点1.20.6192.168.204.180 jenkins…

Linux环境变量剖析

一、什么是环境变量 概念&#xff1a;环境变量&#xff08;environment variables&#xff09;一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;是在操作系统中一个具有特定名字的对象&#xff0c;它包含了一个或多个应用程序所将使用到的信息&#xff0c…

Open3D 点云数据处理基础(Python版)

Open3D 点云数据处理基础&#xff08;Python版&#xff09; 文章目录 1 概述 2 安装 2.1 PyCharm 与 Python 安装 2.3 Anaconda 安装 2.4 Open3D 0.13.0 安装 2.5 新建一个 Python 项目 3 点云读写 4 点云可视化 2.1 可视化单个点云 2.2 同一窗口可视化多个点云 2.3…

蓝桥村的神秘农田

蓝桥村的神秘农田 问题描述 小蓝是蓝桥村的村长&#xff0c;他拥有一块神秘的农田。这块农田的奇特之处在于&#xff0c;每年可以种植两种作物&#xff0c;分别称为 "瑶瑶豆" 和 "坤坤果"。小蓝需要为每种作物选择一个整数的生长指数&#xff0c;瑶瑶豆的…

HEA---code

import matplotlib.pyplot as pltimport numpy as npfrom matplotlib.animation import FuncAnimationfrom matplotlib.offsetbox import OffsetImage, AnnotationBbox# 创建一个画布和坐标轴对象 fig, ax plt.subplots() # 创建一个参数t&#xff0c;范围是0到2π t np.lins…