[SS]语义分割_转置卷积

news/2025/4/1 3:36:38/

转置卷积(Transposed Convolution)

抽丝剥茧,带你理解转置卷积(反卷积) 

目录

一、概念

1、定义 

2、运算步骤

二、常见参数


一、概念

1、定义 

        转置卷积(Transposed Convolution),也被称为反卷积(Deconvolution)或逆卷积(Inverse Convolution),是一种卷积神经网络中常用的操作。转置卷积可以用于图像生成、图像分割、语义分割等任务中。

        转置卷积的操作实际上是卷积操作的逆过程。在标准的卷积操作中,输入数据经过卷积核的滑动窗口运算,生成输出特征图。而在转置卷积中,输出特征图经过转置卷积核的滑动窗口运算,生成输入数据的近似重构。

        转置卷积的操作可以用矩阵乘法的方式来实现,也可以用卷积的方式来实现。在实际应用中,常常使用卷积的方式来实现转置卷积,而不是直接进行矩阵乘法运算。

转置卷积的计算过程可以简化为以下几个步骤:

  1. 在输入特征图上进行填充操作,将输入特征图的尺寸扩大一定倍数(根据转置卷积核的大小和步长确定)。
  2. 将填充后的输入特征图与转置卷积核进行卷积操作,得到中间特征图。
  3. 对中间特征图进行剪裁操作,使其尺寸与输入特征图相同。
  4. 得到转置卷积的输出特征图。

        通过转置卷积操作,可以将低维的输入特征图扩张为高维的输出特征图,从而实现图像的生成和重构。转置卷积在卷积神经网络中得到广泛应用,如生成对抗网络(GANs)、语义分割网络等。

notes:

  • 转置卷积不是卷积的逆运算,只是将特征图大小还原回卷积之前的大小,数值与输入特征层的数值不相同
  • 转置卷积也是卷积
  • 转置卷积的作用是上采样

2、运算步骤

转置卷积运算步骤:

  • 在输入特征图元素间填充s-1行、列0
  • 在输入特征图四周填充k-p-1行、列0
  • 将卷积核参数上下、左右翻转
  • 做正常卷积运算(填充0,步距1)

        输入的特征图大小为2x2(假设输入输出都为单通道),通过转置卷积后得到4x4大小的特征图。这里使用的转置卷积核大小为k=3,stride=1,padding=0的情况(忽略偏执bias)。

notes:

        做正常卷积运算中的步距与第一步中的参数s不一样,参数s对应的是转置卷积中的参数s,即输入的特征图是经过步距为s、padding为p,卷积核大小为k的卷积之后得到的。 

二、常见参数

torch.nn.ConvTranspose2d参数

H_{out}=(H_{in}-1)\times stride[0]-2\times padding[0]+dilation[0]\times (kernelSize[0]-1)+outputPadding[0]+1

W_{out}=(W_{in}-1)\times stride[1]-2\times padding[1]+dilation[1]\times (kernelSize[1]-1)+outputPadding[1]+1 

  • in_channels(int)-输入特征图通道数
  • out_channels(int)-输出特征图通道数
  • kernel_size(int or tuple)-卷积核大小
  • stride(int or tuple,optional)-步距大小
  • padding(int or tuple,optional)-填充
  • output_padding(int or tuple,optional)-输出填充,通常默认为0
  • groups(int,optional)-是否采用主卷积,默认为1
  • bias(bool,optional)-偏置,默认为True
  • dilation(int or tuple,optional)-是否使用膨胀卷积或空洞卷积,默认为1

http://www.ppmy.cn/news/1328758.html

相关文章

【Qt】—— Qt的基本介绍

目录 (一)什么是Qt (二) Qt的发展史 (三)Qt⽀持的平台 (四) Qt版本 (五)Qt的优点 (六)Qt的应⽤场景 (七&#xff09…

QQ数据包解密

Windows版qq数据包格式&#xff1a; android版qq数据包格式&#xff1a; 密钥&#xff1a;16个0 算法&#xff1a;tea_crypt算法 pc版qq 0825数据包解密源码&#xff1a; #include "qq.h" #include "qqcrypt.h" #include <WinSock2.h> #include…

JavaSE核心基础-一维数组-笔记

1.数组概念 相同类型数据的集合&#xff0c;它在内存空间的存储是连续的。数组其实也是一个容器,用来存储固定个数相同类型的数据&#xff0c;数组中存储的数据叫做元素。 2.数组定义 方式1&#xff1a; 数据类型[] 数组名 new 数据类型[数组长度]; 数据类型 数组…

面试题-MySQL如何定位慢查询

慢查询出现的情况就这些&#xff1a;聚合查询、多表查询、表数据量过大查询、深度分页查询。 表象&#xff1a;页面加载过慢、接口压测响应时间过长&#xff08;超过1S&#xff09;。 假如你的业务接口就是比较慢&#xff0c;你怎么知道是SQL的问题呢&#xff1f;就算是SQL的…

卷积和滤波对图像操作的区别

目录 问题引入 解释 卷积 滤波 问题引入 卷积和滤波是很相似的&#xff0c;都是利用了卷积核进行操作 那么他们之间有什么区别呢&#xff1f; 卷积&#xff1a;会影响原图大小 滤波&#xff1a;不会影响原图大小 解释 卷积 我们用这样一段代码来看 import torch.nn as …

反序列化字符串逃逸(上篇)

首先&#xff0c;必须先明白&#xff0c;这个点并不难&#xff0c;我给大家梳理一遍就会明白。 反序列化字符串逃逸就是序列化过程中逃逸出来字符&#xff0c;是不是很简单&#xff0c;哈哈哈&#xff01; 好了&#xff0c;不闹了&#xff0c;其实&#xff1a; 这里你们只要懂…

猎户星空大模型发布:700亿以下参数基座模型中文第一

前言 在人工智能领域&#xff0c;猎户星空大模型的发布无疑是一个里程碑。作为一个具有140亿参数的多语种大模型&#xff0c;猎户星空在一个包含2.5万亿token的多样化数据集上进行了训练&#xff0c;涵盖了中文、英语、日语、韩语等多种语言。在多语言环境下的一系列任务中&am…

详解FreeRTOS:如何查询任务状态(拓展篇—6)

FreeRTOS 中有很多查询任务状态或者信息的API函数,比如函数uxTaskGetSystemState()、vTaskGetInfo()、eTaskGetState()和vTaskList()。 本篇博文通过代码实战学习这些函数的使用方法。 拓展学习:任务相关API函数介绍(拓展篇—5)。 本实验设计三个任务:start_task、led0_ta…