039、转置卷积

news2025/1/13 10:25:00

之——增大高宽

杂谈

        通常来说,卷积不会增大输入的高宽,通常要么不变,要么减半;如果想要直接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)等任务中。在图像生成中,转置卷积可以将低分辨率的特征图升采样为高分辨率的图像。在生成对抗网络中,生成器网络通常使用转置卷积来将潜在空间中的随机向量映射到生成图像的空间。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringCloud笔记】(8)服务网关之GateWay

GateWay 概述简介 官网地址&#xff1a; 上一代网关Zuul 1.x&#xff1a;https://github.com/Netflix/zuul/wiki&#xff08;有兴趣可以了解一下&#xff09; gateway&#xff1a;https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/…

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-1x011

如上表所示&#xff0c;MOE1&#xff0c;OSSR0&#xff0c;CCxE1&#xff0c;CCxNE1时&#xff0c;OCx与OCxN对应端口的输出状态取决于OCx_REF与极性选择&#xff08;CCxP&#xff0c;CCxNP&#xff09; 死区。 ------------------------------------------------------------…

浅析海博深造

文章目录 深造作用 留学种类 选专业 择校 申请流程 申请方式 深造作用 1、个人能力提升&#xff08;学术专业、语言、新文化或新生活方式&#xff09; 2、更好的职业发展&#xff08;起点更高、结交新朋友或扩大社交圈&#xff09; 3、北京上海落户优惠 4、海外居留福…

【VB测绘程序设计】案例4——简单的四则运算练习Select Case语句的使用(附源码)

【VB测绘程序设计】案例4——简单的四则运算练习(附源码) 文章目录 前言一、界面预览二、程序介绍总结前言 在新手学习VB程序设计中,四则运算是基础,通过设计的TexT、按钮、label等控件,定义变量,实现简单程序的编写,提高对VB程序的入门训练。 一、界面预览 二、程序介…

openGauss学习笔记-171 openGauss 数据库运维-备份与恢复-导入数据-深层复制

文章目录 openGauss学习笔记-171 openGauss 数据库运维-备份与恢复-导入数据-深层复制171.1 使用CREATE TABLE执行深层复制171.1.1 操作步骤 171.2 使用CREATE TABLE LIKE执行深层复制171.2.1 操作步骤 171.3 通过创建临时表并截断原始表来执行深层复制171.3.1 操作步骤 openGa…

「Verilog学习笔记」并串转换

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 串并转换操作是非常灵活的操作&#xff0c;核心思想就是移位。串转并就是把1位的输入放到N位reg的最低位&#xff0c;然后N位reg左移一位&#xff0c;在把1位输入放到左移后…

用C求斐波那契数列-----(C每日一编程)

斐波那契数列: 斐波那契数列是指这样一个数列&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;34&#xff0c;55&#xff0c;89……这个数列从第3项开始 &#xff0c;每一项都等于前两项之和。 递推…

MFC 视图窗口

目录 视图窗口概述 视图窗口的使用 视图窗口创建流程 命令消息 WM_COMMAND 处理顺序 对象关系 视图窗口概述 作用&#xff1a;提供了一个用于显示数据的窗口 关于视图窗口 视图类是用来展示用户&#xff0c;文档类是用来存储和管理数据视图窗口是覆盖掉框架窗口的客户区…

【错误记录/js】保存octet-stream为文件后数据错乱

目录 说在前面场景解决方式其他 说在前面 后端&#xff1a;go、gin浏览器&#xff1a;Microsoft Edge 120.0.2210.77 (正式版本) (64 位) 场景 前端通过点击按钮来下载一些文件&#xff0c;但是文件内容是一些非文件形式存储的二进制数据。 后端代码 r : gin.Default()r.Stat…

算法学习——动态规划

动态规划 什么是动态规划动态规划的解题步骤动态规划应该如何debug 斐波那契数思路确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 代码 爬楼梯思路代码 使用最小花费爬楼梯思路代码 不同路径思路代码 不同路径 II思路代码 整数拆分思路代码…

【机器学习】决策树

参考课程视频&#xff1a;https://www.icourse163.org/course/NEU-1462101162?tid1471214452 1 概述 样子&#xff1a; 2 分裂 2.1 分裂原则 信息增益 信息增益比 基尼指数 3 终止 & 剪枝 3.1 终止条件 无需分裂 当前节点内样本同属一类 无法分裂 当前节点内…

vue3+element plus组件库中el-carousel组件走马灯特效,当图片变动时下面数字也随着图片动态变化

1.效果图 2.html <section style"height:30%"><div class"left-img1-title"><img src"../assets/img/title.png"alt""srcset""><div class"text">回收垃圾数量</div></div>…

Linux操作系统基础(二)系统的基础设置

结合上一节内容&#xff0c;这一节就对一些常见的linux操作设置进行讲解&#xff0c;内容有限&#xff0c;只做引导和抛砖引玉。 一、输入法的安装和设置 Linux 中安装中文输入法的方法有很多&#xff0c;常用的有以下几种&#xff1a; 使用软件包管理器安装 大多数 Linux …

NFC读卡------ci522

1、NFC及卡片 NFC是近距离无线通讯技术&#xff0c;是一种非接触式识别和互联技术&#xff0c;可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信。NFC提供了一种简单、触控式的解决方案&#xff0c;可以让消费者简单直观地交换信息、访问内容与服务。 …

Multi-Drone based Single Object Tracking with Agent Sharing Network阅读笔记

Multi-Drone based Single Object Tracking with Agent Sharing Network阅读笔记 Abstract 搭载摄像头的无人机可以从更广阔的视角在空中动态跟踪目标&#xff0c;与静态摄像头或地面移动传感器相比具有优势。然而&#xff0c;由于外观变化和严重遮挡等多种因素&#xff0c;使…

基于电商场景的高并发RocketMQ实战-Broker高并发消息写入、读写队列原理分析

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 【11来了】文章导读地址&#xff1a;点击查看文章导读&#xff01; &#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f3…

Java研学-Servlet 基础

一 概述 1 介绍 Servlet&#xff08;Server Applet&#xff09;是Java Servlet的简称&#xff0c;称为小服务程序或服务连接器&#xff0c;用Java编写的服务器端程序&#xff0c;具有独立于平台和协议的特性&#xff0c;主要功能在于交互式地浏览和生成数据&#xff0c;生成动…

SpringMVC:SSM(Spring+SpringMVC+MyBatis)代码整理

文章目录 SpringMVC - 07SSM 框架代码整理一、准备工作1. 分析需求、准备数据库2. 新建一个项目&#xff0c;导入依赖&#xff1a;pom.xml3. 用 IDEA 连接数据库 二、MyBatis 层1. 外部配置文件&#xff1a;db.properties2. MyBatis 核心配置文件&#xff1a;mybatis-config.xm…

超级量化第10期私募大咖——线上分享总结

《掘金之心公众号&#xff1a;gnu_isnot_unix》前Citadel现自营交易与量化管理&#xff0c;分享热点&#xff0c;主观&#xff0c;量化交易内容。活在当下&#xff0c;终身学习 - 给在职却对未来始终迷茫的人的公众号。借此想告诉不断努力&#xff0c;对生活充满热情的读者们&a…

ARM 汇编语言知识积累

博文参考&#xff1a; arm中SP&#xff0c;LR&#xff0c;PC寄存器以及其它所有寄存器以及处理器运行模式介绍 arm平台根据栈进行backtrace的方法-腾讯云开发者社区-腾讯云 (tencent.com) 特殊功能寄存器&#xff1a; SP&#xff1a; 即 R13&#xff0c;栈指针&#xff0c;…