卷积神经网络进阶:转置卷积与棋盘效应详解

【内容摘要】
本文深入解析卷积神经网络中的转置卷积(反卷积)技术,重点阐述标准卷积转置卷积的计算过程、转置卷积上采样作用,以及其常见问题——棋盘效应的产生原因与解决方法,为图像分割、超分辨率等任务提供理论支持。

关键词: 转置卷积 反卷积 棋盘效应 标准卷积 上采样 卷积神经网络


卷积神经网络(CNN)中,转置卷积(Transposed Convolution,又称反卷积Deconvolution)是实现特征图上采样的关键技术,广泛应用于语义分割、超分辨率等需要恢复空间分辨率的任务中。本文将从标准卷积的计算原理出发,详细解析转置卷积的操作过程,并重点讨论其常见问题——棋盘效应的产生机制与解决方法。

一、标准卷积的计算过程

要理解转置卷积,首先需要明确标准卷积的运算方式。标准卷积是通过卷积核对输入特征图进行滑窗点乘求和的过程,其核心步骤包括卷积核旋转(通常为180°)、中心对齐与局部区域计算。

以图1所示的标准卷积输出计算为例,输入为一个3×3的像素矩阵,卷积核为3×3的矩阵(值为[-1,-2,-1;0,0, 0;1,2, 1])。计算左上角(第1行第1列)像素的卷积值时,需将卷积核旋转180°后与输入矩阵的左上角3×3区域对齐,逐元素相乘后求和:

  1. (x)矩阵和(h)矩阵

    • (x)矩阵:

      X = [ x [ − 1 , − 1 ] x [ 0 , − 1 ] x [ 1 , − 1 ] x [ − 1 , 0 ] x [ 0 , 0 ] x [ 1 , 0 ] x [ − 1 , 1 ] x [ 0 , 1 ] x [ 1 , 1 ] ] = [ 0 0 0 0 1 2 0 4 5 ] X=\begin{bmatrix} x[-1,-1]&x[0,-1]&x[1,-1]\\ x[-1,0]&x[0,0]&x[1,0]\\ x[-1,1]&x[0,1]&x[1,1] \end{bmatrix}=\begin{bmatrix} 0&0&0\\ 0&1&2\\ 0&4&5 \end{bmatrix} X= x[1,1]x[1,0]x[1,1]x[0,1]x[0,0]x[0,1]x[1,1]x[1,0]x[1,1] = 000014025

    • (h)矩阵:

      H = [ h [ 1 , 1 ] h [ 1 , 0 ] h [ 1 , − 1 ] h [ 0 , 1 ] h [ 0 , 0 ] h [ 0 , − 1 ] h [ − 1 , 1 ] h [ − 1 , 0 ] h [ − 1 , − 1 ] ] = [ 1 0 − 1 2 0 − 2 1 0 − 1 ] H=\begin{bmatrix} h[1,1]&h[1,0]&h[1,-1]\\ h[0,1]&h[0,0]&h[0,-1]\\ h[-1,1]&h[-1,0]&h[-1,-1] \end{bmatrix}=\begin{bmatrix} 1&0& - 1\\ 2&0& - 2\\ 1&0& - 1 \end{bmatrix} H= h[1,1]h[0,1]h[1,1]h[1,0]h[0,0]h[1,0]h[1,1]h[0,1]h[1,1] = 121000121

  2. 矩阵运算过程

    • 这里计算(y[0,0])相当于计算矩阵(X)和(H)的一种特殊卷积形式(在这种小矩阵情况下类似矩阵乘法的元素对应相乘再求和),从矩阵乘法角度看,可看作是对矩阵元素对应相乘后求和。
    • 按照矩阵乘法规则( C i j = ∑ k = 1 n A i k B k j C_{ij}=\sum_{k = 1}^{n}A_{ik}B_{kj} Cij=k=1nAikBkj)(这里(n = 3) ),对于(y[0,0]),它等于(X)和(H)对应元素乘积之和。
    • 具体计算:

y [ 0 , 0 ] = X ⋅ H T = x [ − 1 , − 1 ] ⋅ h [ 1 , 1 ] + x [ 0 , − 1 ] ⋅ h [ 0 , 1 ] + x [ 1 , − 1 ] ⋅ h [ − 1 , 1 ] + x [ − 1 , 0 ] ⋅ h [ 1 , 0 ] + x [ 0 , 0 ] ⋅ h [ 0 , 0 ] + x [ 1 , 0 ] ⋅ h [ − 1 , 0 ] + x [ − 1 , 1 ] ⋅ h [ 1 , − 1 ] + x [ 0 , 1 ] ⋅ h [ 0 , − 1 ] + x [ 1 , 1 ] ⋅ h [ − 1 , − 1 ] = 0 × 1 + 0 × 2 + 0 × 1 + 0 × 0 + 1 × 0 + 2 × 0 + 0 × ( − 1 ) + 4 × ( − 2 ) + 5 × ( − 1 ) \begin{align*} y[0,0]=X \cdot\ H^T&=x[-1,-1]\cdot h[1,1]+x[0,-1]\cdot h[0,1]+x[1,-1]\cdot h[-1,1]\\ &+x[-1,0]\cdot h[1,0]+x[0,0]\cdot h[0,0]+x[1,0]\cdot h[-1,0]\\ &+x[-1,1]\cdot h[1,-1]+x[0,1]\cdot h[0,-1]+x[1,1]\cdot h[-1,-1]\\ &=0\times1 + 0\times2+0\times1+0\times0 + 1\times0+2\times0+0\times(-1)+4\times(-2)+5\times(-1) \end{align*} y[0,0]=X HT=x[1,1]h[1,1]+x[0,1]h[0,1]+x[1,1]h[1,1]+x[1,0]h[1,0]+x[0,0]h[0,0]+x[1,0]h[1,0]+x[1,1]h[1,1]+x[0,1]h[0,1]+x[1,1]h[1,1]=0×1+0×2+0×1+0×0+1×0+2×0+0×(1)+4×(2)+5×(1)

通过滑动卷积核(步长为1),最终得到3×3的输出特征图(图2为更直观的卷积值计算过程示意图)。

在这里插入图片描述
在这里插入图片描述

图1:标准卷积输出计算

在这里插入图片描述

图2:更直观的卷积值计算过程示意图

二、转置卷积的操作原理

转置卷积的核心目标是将小尺寸的特征图上采样为大尺寸特征图,其名称源于其数学本质是标准卷积转置操作(即矩阵运算中的转置)。以下通过具体示例说明其计算过程。

假设输入特征图大小为2×2,卷积核大小为4×4,滑动步长为3,输出特征图大小可通过公式计算:
o u t = ( i n − 1 ) × s + k out = (in-1)×s + k out=(in1)×s+k
其中,in为输入大小,s为步长,k为卷积核大小。代入数值得:
o u t = ( 2 − 1 ) × 3 + 4 = 7 out = (2-1)×3 + 4 = 7 out=(21)×3+4=7
即输出特征图为7×7。

转置卷积的具体步骤如下(图3为图像的转置卷积过程示意图):

  1. 全卷积展开:输入特征图的每个像素独立进行全卷积(即填充后卷积),每个像素生成一个4×4的特征图(大小为1+4-1=4)。输入有4个像素,因此生成4个4×4的特征图。
  2. 步长叠加:将4个特征图按步长3进行叠加,重叠区域的像素值相加。例如,输出的第1行第4列像素由第一个特征图的第1行第4列与第二个特征图的第1行第1列相加得到。

在这里插入图片描述

图3:图像的转置卷积过程

三、棋盘效应的产生与解决

转置卷积虽能有效上采样常伴随“棋盘效应”(Checkerboard Artifacts),即输出图像中出现类似棋盘格的不均匀色块(图4为棋盘效应示意图)。

在这里插入图片描述

图4:棋盘效应示意图

(一)产生原因

棋盘效应的本质是卷积核大小无法被步长整除时的不均匀重叠。以图5为例,当卷积步长为2,卷积核尺寸为3或5时,输出像素接收到的输入信息量不一致:

  • 若卷积核尺寸能被步长整除(如步长2、核尺寸4),输出像素的信息重叠均匀,无棋盘效应
  • 若无法整除(如步长2、核尺寸3),相邻像素的信息重叠量不同,导致局部颜色深浅不一。

在这里插入图片描述

图5:卷积步长改为2时的棋盘效应示意图

(二)解决方法

为减轻或避免棋盘效应,可采用以下策略:

  1. 匹配核尺寸与步长:确保卷积核大小能被步长整除,例如步长2时选择核尺寸4,避免不均匀重叠;
  2. 使用步长1的转置卷积:步长为1时,卷积核的重叠区域均匀,可有效减少棋盘效应
  3. 替代上采样方法:如采用双线性插值、最近邻插值等传统上采样方法,或结合转置卷积与像素重组(Pixel Shuffle)技术。

四、总结

转置卷积是CNN中实现上采样的重要工具,但其引入的棋盘效应需特别关注。通过理解标准卷积转置卷积的数学本质,合理设计卷积核尺寸与步长,可有效规避棋盘效应,提升模型在语义分割、超分辨率等任务中的性能。

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

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

相关文章

Redis进阶知识

Redis 1.事务2. 主从复制2.1 如何启动多个Redis服务器2.2 监控主从节点的状态2.3 断开主从复制关系2.4 额外注意2.5拓扑结构2.6 复制过程2.6.1 数据同步 3.哨兵选举原理注意事项 4.集群4.1 数据分片算法4.2 故障检测 5. 缓存5.1 缓存问题 6. 分布式锁 1.事务 Redis的事务只能保…

SDC命令详解:使用get_libs命令进行查询

相关阅读 SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482 get_libs命令用于创建一个库对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。需要注意的是,在有些工具中还存在…

idea2024 不知道安装了什么插件,界面都是中文的了,不习惯,怎么修改各个选项改回英文

如果你的 IntelliJ IDEA 2024 突然变成中文界面,很可能是安装了中文语言包插件(如 “Chinese (Simplified) Language Pack”)。以下是 彻底恢复英文界面 的方法: 方法 1:直接卸载中文插件(推荐)…

物流项目第二期(用户端登录与双token三验证)

第一期内容: 物流项目第一期(登录业务)-CSDN博客 用户端登录 实现分析 登录功能 Data public class UserLoginRequestVO {ApiModelProperty("登录临时凭证")private String code;ApiModelProperty("手机号临时凭证"…

精准掌控张力动态,重构卷对卷工艺设计

一、MapleSim Web Handling Library仿真和虚拟调试解决方案 在柔性材料加工领域,卷对卷(Roll-to-Roll)工艺的效率与质量直接决定了产品竞争力。如何在高动态生产场景中实现张力稳定、减少断裂风险、优化加工速度,是行业长期面临的…

Voxblox算法

文章目录 1. 算法简介2. 由 TSDF 构建 ESDF 的方法2.1. 论文解读2.2. 伪代码实现 1. 算法简介 Voxblox 算法出现于文献《Voxblox: Incremental 3D Euclidean Signed Distance Fields for On-Board MAV Planning》,PDF 链接:https://arxiv.org/pdf/1611.…

计算机图形学基础--Games101笔记(一)数学基础与光栅化

文章目录 数学基础向量插值三角形插值双线性插值 平面定义法线-点表示 第一部分:光栅化坐标变换二维变换3D变换视图变换(MVP)投影变换 光栅化采样抗锯齿(反走样)可见性(遮挡) 着色与纹理Blinn-P…

@RequestParam 和 @RequestBody、HttpServletrequest 与HttpServletResponse

在Java Web开发中,RequestParam、RequestBody、HttpServletRequest 和 HttpServletResponse 是常用的组件,它们用于处理HTTP请求和响应。下面分别介绍它们的使用场景和使用方法: 1. RequestParam RequestParam 是Spring MVC框架中的注解&am…

【硬核数学】2. AI如何“学习”?微积分揭秘模型优化的奥秘《从零构建机器学习、深度学习到LLM的数学认知》

在上一篇中,我们探索了线性代数如何帮助AI表示数据(向量、矩阵)和变换数据(矩阵乘法)。但AI的魅力远不止于此,它最核心的能力是“学习”——从数据中自动调整自身,以做出越来越准确的预测或决策…

10.15 LangChain v0.3重磅升级:Tool Calling技术颠覆大模型工具调用,效率飙升300%!

LangChain v0.3 技术生态与未来发展:支持 Tool Calling 的大模型 关键词:LangChain Tool Calling, 大模型工具调用, @tool 装饰器, ToolMessage 管理, Few-shot Prompting 1. Tool Calling 的技术革新 LangChain v0.3 的工具调用(Tool Calling)功能标志着大模型应用开发进…

[架构之美]从PDMan一键生成数据库设计文档:Word导出全流程详解(二十)

[架构之美]从PDMan一键生成数据库设计文档:Word导出全流程详解(二十) 一、痛点 你是否经历过这些场景? 数据库字段频繁变更,维护文档耗时费力用Excel维护表结构,版本混乱难以追溯手动编写Word文档&#…

Image and depth from a conventional camera with a coded aperture论文阅读

Image and depth from a conventional camera with a coded aperture 1. 研究目标与实际意义1.1 研究目标1.2 实际问题与产业意义2. 创新方法:编码光圈设计与统计模型2.1 核心思路2.2 关键公式与模型架构2.2.1 图像形成模型2.2.2 深度可区分性准则2.2.3 统计模型与优化框架2.2…

JMeter 教程:使用 HTTP 请求的参数列表发送 POST 请求(form 表单格式)

目录 ✅ 教程目的 🛠️ 准备工作 📄 操作步骤 第一步:新建测试计划 第二步:添加 HTTP 请求 第三步:添加参数列表(表单参数) 第四步:添加结果查看器 第五步:运行测…

交易所开发:构建功能完备的金融基础设施全流程指南

交易所开发:构建功能完备的金融基础设施全流程指南 ——从技术架构到合规安全的系统性解决方案 一、开发流程:从需求分析到运维优化 开发一款功能完备的交易所需要遵循全生命周期管理理念,涵盖市场定位、技术实现、安全防护和持续迭代四大阶…

【数据结构篇】排序1(插入排序与选择排序)

注:本文以排升序为例 常见的排序算法: 目录: 一 直接插入排序: 1.1 基本思想: 1.2 代码: 1.3 复杂度: 二 希尔排序(直接插入排序的优化): 2.1 基本思想…

Cursor日常配置指南

文章目录 整体说明一、简单介绍1.1、简介1.2、功能 二、日常配置2.1、Profiles 简介2.2、Cursor 配置2.2.1、通用设置(General)2.2.2、功能设置(Features)2.2.2.1、长上下文(Large context)2.2.2.2、代码索…

客户体验数据使用的三种视角——旅程视角

企业收集到大量的客户体验数据之后,应该如何应用?有哪些主要的使用场景和分析视角呢?接下来,体验家团队将通过三篇文章陆续介绍体验数据的三种应用场景,以帮助企业更有效地利用体验数据进行改进。 这三个场景分别是…

大语言模型怎么进行记忆的

大语言模型怎么进行记忆的 大语言模型(LLM)本身是无状态的,每次输入独立处理,但可通过以下方式实现对话记忆及长期记忆能力: 模型架构改进 显式记忆模块: 记忆网络(Memory Networks) :在模型里嵌入可读写的记忆单元,像键值存储 (Key - Value Memory)或动态记忆矩…

Spring Boot 与 RabbitMQ 的深度集成实践(三)

高级特性实现 消息持久化 在实际的生产环境中,消息的可靠性是至关重要的。消息持久化是确保 RabbitMQ 在发生故障或重启后,消息不会丢失的关键机制。它涉及到消息、队列和交换机的持久化配置。 首先,配置队列持久化。在创建队列时&#xf…

成功案例丨GEZE与Altair合作推动智能建筑系统开发

Altair 作为计算智能领域的全球领导者,将分别在北京、上海、成都、深圳举办 “AI驱动,仿真未来”Altair 区域技术交流会。届时将汇聚行业专家与先锋企业,共同探讨仿真智能化如何赋能工业创新,分享最新仿真与 AI 技术的应用实践。欢…