转置卷积 transposed convolution

news2024/9/22 21:35:17

1. 转置卷积

转置卷积(Transposed Convolution)也叫Fractionally-strided Convolution和Deconvolution,但用的最多的是Transposed Convolution。

注意:

  • 转置卷积不是卷积的逆运算,只会大小恢复为原本大小。
  • 转置卷积也卷积,也需要卷积核

1.1 转置卷积的作用

转置卷积的作用是进行上采样upsampling,增大图像。

2. 转置卷积的执行过程

输入为2x2的特征图,但会在周围填充0,卷积核的大小为3x3,最终得到一个4x4的特征图,这是一个上采样的过程
stride=1,padding=0
在这里插入图片描述

2.1转置卷积的运算步骤

首先一些参数的介绍:

  • stride( s s s):步长
  • kernel size( k k k):卷积核大小
  • padding( p p p):填充大小

下面是运算的步骤:

  1. 首先在元素间填充 s − 1 s-1 s1 行和列的0
  2. 然后在特征图四周填充 k − p − 1 k-p-1 kp1行和列的0
  3. 然后对卷积核进行转置,也就是上下左右翻转。注意:转置的卷积核一般是进行之前进行卷积操作(下采样)的卷积核
  4. 最后进行正常的卷积一般不进行填充,步长为1

输出的特征图的大小的计算方式如公式所示,其中索引 [ 0 ] [0] [0]代表高度方向的数值,索引 [ 1 ] [1] [1]代表宽度方向的数值。
在这里插入图片描述

下图是例子(忽略偏移),其中s=1,p=0,k=3。因此:元素间不填充,特征图四周填充3-0-1=2行与列
最后使用经过转置的卷积核进行卷积,步长为1。
输出特征图的高=(2-1)x1-2x0+3=4;宽=(2-1)x1-2x0+3=4
在这里插入图片描述

2.2 运算例子

s = 2 , p = 0 , k = 3 s=2,p=0,k=3 s=2,p=0,k=3
在元素间填充2-1=1个0;然后在特征图之间填充3-0-1=2 行和列的0
输出的特征图高=(2-1)x2-2x0+3=5;宽=(2-1)x2-2x0+3=5
在这里插入图片描述
s = 2 , p = 1 , k = 3 s=2,p=1,k=3 s=2,p=1,k=3
在元素间填充2-1=1个0;然后在特征图之间填充3-1-1=1 行和列的0
输出的特征图高=(3-1)x2-2x1+3=5;宽=(3-1)x2-2x1+3=5
在这里插入图片描述

3. 转置卷积的运行原理

要理解转置卷积的原理,首先要理解普通卷积的执行过程。下面将以一个4x4的特征图与3x3的卷积核为例进行介绍。

3.1普通卷积

这里 s=1,p=0,k=3对特征图进行卷积,得到一个2x2的特征图。
在这里插入图片描述
在之前的介绍中,普通卷积的执行过程是一个窗口在不断滑动来得到结果。
在这里插入图片描述
但在实际执行中,这种方法是低效。下面介绍另一种计算方法:
方法如图所示,

  1. 先根据输入特征图、步长、填充与卷积核得到卷积核的等效矩阵。
    这些等效矩阵可以通过类似上面的滑动窗口的方法得到,每个等效矩阵对应一次滑动窗口里的值使用卷积核的值进行替代
    在当前例子中,可以得到4个等效矩阵
  2. 针对每个等效矩阵,都与输入特征图进行运算:先进行对应位置的相乘,再将所有位置的值进行求和,得到输出特征图中的值。

在这里插入图片描述

3.2 转置卷积

上面进行普通卷积时的计算过程可以变为两个矩阵的乘法运算
首先将输入特征图展开为一行,构成矩阵 I I I;而每个等效矩阵都展开为一列,然后拼在一起,构成矩阵 C C C
在这里插入图片描述
在这里插入图片描述
然后计算 I ∗ C I*C IC,就得到了输出特征图展开成行的矩阵 O O O
在这里插入图片描述
要注意的是矩阵 C C C不可逆的,因此转置卷积不是普通卷积的逆运算,只能得到一个与输入特征图同等大小的一个结果。

要得到一个与矩阵 I I I同等大小的矩阵 P P P,有两种方法:

只需让矩阵 O O O右乘矩阵 C C C的转置 C T C^T CT即可。矩阵 P P P就是将转置卷积的结果展开。
在这里插入图片描述
将矩阵 O O O还原为普通卷积的输出特征图的形式。
而对于 C T C^T CT,由于其最初是将等效矩阵以列方向进行展开并拼接,因此这里 C T C^T CT的每行还原成矩阵
而从 C T C^T CT得到的每个矩阵与输出特征图进行对应位相乘并结果相加,得到矩阵 P P P的值。

在这里插入图片描述
而这个过程中出现了一个有趣的现象:

① 使用等效矩阵 C T C^T CT的第一个矩阵来与矩阵 O O O进行运算,其结果为0,也就是矩阵 P P P的第一个值。
而图像中的右下角,对输入特征图进行填充后,如果使用绿色矩阵对输入特征图进行卷积操作的话,会得到与前面相同的结果0。
在这里插入图片描述
② 接着使用 C T C^T CT的第二个矩阵进行运算,结果为2,也就是矩阵 P P P的第二个值。
而绿色矩阵右移一格后再次进行运算,同样得到矩阵 P P P的第二个值。
在这里插入图片描述
③ 就这样不断计算矩阵 C T C^T CT的矩阵与滑动绿色矩阵,最终发现使用输入特征图 I I I与绿色矩阵可以得到矩阵 P P P
而绿色矩阵在输入特征图 I I I上进行滑动与运算的过程,其实让绿色矩阵作为卷积核在步长为1的情况对输入特征图 I I I进行普通卷积

而且继续观察绿色矩阵,可以发现绿色矩阵就是普通卷积中所使用的卷积核的转置
在这里插入图片描述

4. 总结

通过上面分析,就可以知道为什么通过对输入特征图进行填充使用转置的卷积核并且使用转置卷积核与输入特征图进行步长=1的普通卷积操作就可以得到结果

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

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

相关文章

网络安全领域五大注入攻击类型介绍

在网络安全领域,注入攻击是一种常见的攻击方式,攻击者通过向应用程序发送恶意数据来操控应用程序的行为。以下跟随博主通过具体样例一起来掌握以下五种知名的注入攻击类型。 1. SQL注入(SQL Injection) 1.1. 概述 SQL注入是最常见…

pdf自动生成书签

PDF 自动生成书签,使用软件【PDF补丁丁】 软件官网: https://www.cnblogs.com/pdfpatcher/Github:https://github.com/wmjordan/PDFPatcher参考视频内容:使用PDFPatcher自动生成PDF书签 直接从软件官网下载压缩包,运…

Qt遇到qt自身组件找不到

比如在使用qtcharts的时候,找不到 解决方法: 在cmakelist中添加 find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Charts REQUIRED) 是一个 CMake 命令,用于查找并配置 Qt 库中的特定组件。这条命令的作用是找到 Qt 的主要版本(…

高性能 Java 本地缓存 Caffeine 框架介绍及在 SpringBoot 中的使用

在现代应用程序中,缓存是一种重要的性能优化技术,它可以显著减少数据访问延迟,降低服务器负载,提高系统的响应速度。特别是在高并发的场景下,合理地使用缓存能够有效提升系统的稳定性和效率。 Caffeine 是一个高性能的…

Java基础巩固——JDK 8、9新增接口的特性(接口中定义非抽象方法、静态方法和私有方法)

#Java学了这么久,项目也做了?基础知识还不巩固?快来关注我的这篇系列博客——Java基础复习巩固吧# 目录 引言 一、JDK8新特性:允许在接口中定义非抽象方法和静态方法。 注意事项 二、JDK9新特性:允许在接口中定义p…

【推研小灶】复旦与南大之间:一次独特的计算机保研之旅

写在前面 上午10点填完志愿等待复试通知,利用这段时间记录一下我简短的夏令营和预推免。今年变为线下之后,部分学校的入营情况、考核方式有明显变化。加上CS方向保研名额总体变多,形势有点小乱,甚至填报系统都在9.29中秋节当天&a…

AMQP-核心概念-3

本文参考以下链接摘录翻译: https://www.rabbitmq.com/tutorials/amqp-concepts 队列(Queues) AMQP 0-9-1模型中的队列和其他消息任务队列系统中的队列非常相似:它们用于存储被应用消费的消息。队列和交换机有一些相同的属性&…

2024.7.28周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、创新点 四、文献解读 一、Introduction 二、Saint-Venant方程 三、应用于水道建模的PINN 四、真实场景 五、结论 摘要 本周阅读了一篇题目为Physics-Informed Neural Networks for Modeling Water Flows …

免费【2024】springboot 毕业生学历证明系统

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

vite5+vue3开发阅读APP实战笔记20240725

目前界面长成这样: 配置别名 修改vite.config.js import {defineConfig} from vite import vue from vitejs/plugin-vue import path from "path"// https://vitejs.dev/config/ export default defineConfig({server: {open: true,port: 8088,},plug…

Can we Deploy Web Application in Azure OpenAI of Production Level

题意:我们可以在Azure OpenAI中部署生产级别的Web应用程序吗 问题背景: I have created azure ai search service and used Text split skillset and made index. I also deployed a web Application but have a question that If I want to create to …

嵌入式Linux学习: 设备树实验

设备树(DeviceTree)是一种硬件描述机制,用于在嵌入式系统和操作系统中描述硬件设备的特性、连接关系和配置信息。它提供了一种与平台无关的方式来描述硬件,使得内核与硬件之间的耦合度降低,提高了系统的可移植性和可维…

实战解读:Llama Guard 3 Prompt Guard

前序研究:实战解读:Llama 3 安全性对抗分析 近日,腾讯朱雀实验室又针对 Llama 3.1 安全性做了进一步解读。 2024年7月23日晚,随着Llama3.1的发布,Meta正式提出了“Llama系统”的概念,通过系统级的安全组件对…

黄景仁,笔墨间的一抹清寒

黄景仁,字汉镛,一字仲则,号鹿菲子,生于乾隆十四年(公元1749年),卒于乾隆四十八年(公元1783年),享年仅35岁。他是宋代大诗人黄庭坚的后裔,出生于常…

Feign-微服务通信(Feign远程调⽤ Feign简介 基本使⽤ ⾃定义配置 Feign使⽤优化)

目录 一、Feign远程调⽤ 二、Feign简介 三、基本使⽤ 1. 加⼊Fegin的依赖 2. 在主类上添加Fegin的注解 3. 创建⼀个service, 并使⽤Fegin实现微服务调⽤ 4. 修改controller代码,并启动验证 5. 重启order微服务,查看效果 四、⾃定义配置…

java.lang.ThreadLocal

ThreadLocal万字总结https://blog.csdn.net/sinat_33921105/article/details/103295070 key的唯一性 一个线程中的多个ThreadLocal变量如何存储、如何保证唯一性&#xff1f; 每一个 ThreadLocal<T> tl new ThreadLocal<>(); 创建出来都有一个不变且唯一的thre…

Codeforces Round 949 (Div. 2) B. Turtle and an Infinite Sequence (找规律,位运算)

不知道为什么会有找规律这种nt题型。 首先每一秒都会发生 a i a i − 1 ∣ a i ∣ a i 1 a_i a_{i-1} | a_i | a_{i1} ai​ai−1​∣ai​∣ai1​&#xff0c;如果我们多写几步&#xff1a; a i 2 a i − 1 1 ∣ a i 1 ∣ a i 1 1 a i − 2 ∣ a i − 1 ∣ a i ∣ a i −…

力扣高频SQL 50 题(基础版)第三题

文章目录 力扣高频SQL 50 题&#xff08;基础版&#xff09;第三题1148.文章浏览题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50 题&#xff08;基础版&#xff09;第三题 1148.文章浏览 题目说明 Views 表&#xff1a; ---------------------- | Colu…

用 python 求拥塞控制模型欧拉数值解

昨天使用 scipy 的 odeint 模拟了 E_best 的微分方程组模型(参见 用 python scipy 库模拟拥塞控制模型)&#xff0c;但我觉得那个模型中处理 z 时不够优雅&#xff0c;只是一个负反馈&#xff0c;并未体现 “排队时延与 buffer 占用率成比例增长” 的事实&#xff0c;所以今天我…

基于NE555制作雾化加湿器

基于NE555制作雾化加湿器 &#x1f33c;实物制作图&#xff1a;&#xff08;只焊接了2路&#xff0c;进行功能验证&#xff09; &#x1f4fa;演示效果&#xff1a; &#x1f341;原理图&#xff1a; &#x1f389;其他方案&#xff1a;基于专用加湿器芯片&#xff1a;富…