热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

反卷积(TransposedConvolution)详细推导

0、简介问题:计算机视觉中的反卷积(deconvolution)是使用了独立的可训练参数还是把前面的卷积核转置?关于计算机视觉中的反卷积(

0、简介

问题:计算机视觉中的反卷积(deconvolution)是使用了独立的可训练参数还是把前面的卷积核转置?关于计算机视觉中的反卷积(deconvolution)还是没太弄懂,我原以为反卷积的卷积核中的参数也是训练出来的,只是因为放大了输出所以叫反卷积,可今天看到讲关于卷积神经网络可视化的文章,卷积神经网络的对特征图卷积核的可视化可以采用deconvolution的方法,而且是把前面的卷积核转置一下就直接用,而不是独立的训练其中参数,如下图:
在这里插入图片描述
答:
框架里实现的是独立的可训练参数,自己看一下pytorch代码,或者Keras代码就清楚了。但是CNN可视化这篇论文里的反卷积是前面卷积核的转置,仅仅是为了可视化而已

1、什么是反卷积?

上采样(Upsample)

在应用在计算机视觉的深度学习领域,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(e.g.:图像的语义分割),这个采用扩大图像尺寸,实现图像由小分辨率到大分辨率的映射的操作,叫做上采样(Upsample)。

反卷积(Transposed Convolution)
上采样有3种常见的方法:双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling),我们这里只讨论反卷积。这里指的反卷积,也叫转置卷积,它并不是正向卷积的完全逆过程,用一句话来解释:

反卷积是一种特殊的正向卷积,先按照一定的比例通过补 [公式] 来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。


2、反卷积的数学推导

正向卷积的实现过程
假设输入图像input尺寸为4x4,元素矩阵为:
在这里插入图片描述
卷积核kernel尺寸为3x3,元素矩阵为:
在这里插入图片描述
步长strides=1,填充padding=0,即i=4,k=3,s=1,p=0,则按照卷积计算公式
在这里插入图片描述
输出的图像output的尺寸为2x2

用矩阵乘法描述卷积

input的元素矩阵展开成一个列向量X
在这里插入图片描述
把输出图像output的元素矩阵展开成一个列向量Y:
在这里插入图片描述
对于输入的元素矩阵X和 输出的元素矩阵 Y,用矩阵运算描述这个过程:
在这里插入图片描述
通过推导,我们可以得到稀疏矩阵 C :

在这里插入图片描述
反卷积的操作就是要对这个矩阵运算过程进行逆运算,即通过 CY 得到 X ,根据各个矩阵的尺寸大小,我们能很轻易的得到计算的过程,即为反卷积的操作:

在这里插入图片描述
但是,如果你代入数字计算会发现,反卷积的操作只是恢复了矩阵 X 的尺寸大小,并不能恢复 X 的每个元素值,本文最后会在 tensorflow 平台进行这个实验

在此之前,我们先给出反卷积图像尺寸变化的公式。

反卷积的输入输出尺寸关系

在进行反卷积时,简单来说,大体上可分为以下两种情况:
在这里插入图片描述
Relationship 1:
在这里插入图片描述
此时反卷积的输入输出尺寸关系为:
在这里插入图片描述
在这里插入图片描述
如上图所示,我们选择一个输入 input 尺寸为 3x3 ,卷积核 kernel 尺寸为 3x3 ,步长 strides=2,填充 padding=1,即 i=3,k=3,s=2,p=1 ,则输出 output 的尺寸为 o=2x(3-1)-2+3=5

Relationship 2:
在这里插入图片描述
此时反卷积的输入输出尺寸关系为:
在这里插入图片描述
在这里插入图片描述
如上图所示,我们选择一个输入 input 的尺寸为 3x3 ,卷积核 kernel 的尺寸为 3x3,步长 strides=2,填充 padding=1 ,即 i=3,k=3,s=2,p=1 ,则输出 output 的尺寸为o=2x(3-1)-2+3+1=6

反卷积在 FCN 中的应用

在图像语义分割网络 FCN-32s 中,上采样反卷积操作的输入每张 {\E heatmap} 的尺寸是 7x7
,我们希望进行一次上采样后能恢复成原始图像的尺寸 224x224 ,代入公式:
在这里插入图片描述

根据上式,我们可以得到一个关于 s,k,p 三者之间关系的等式:
在这里插入图片描述
通过实验,最终找出了最合适的一组数据:
在这里插入图片描述


推荐阅读
  • TensorFlow基础知识深化讲解
    批标准化批标准化(batchnormalization,BN)是为了克服神经网络层数加深导致难以训练而诞生的。深度神经网络随着深度加深,收 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 浅层神经网络解析:本文详细探讨了两层神经网络(即一个输入层、一个隐藏层和一个输出层)的结构与工作原理。通过吴恩达教授的课程,读者将深入了解浅层神经网络的基本概念、参数初始化方法以及前向传播和反向传播的具体实现步骤。此外,文章还介绍了如何利用这些基础知识解决实际问题,并提供了丰富的实例和代码示例。 ... [详细]
  • 利用TensorFlow.js在网页浏览器中实现高效的人脸识别JavaScript接口
    作者|VincentMühle编译|姗姗出品|人工智能头条(公众号ID:AI_Thinker)【导读】随着深度学习方法的应用,浏览器调用人脸识别技术已经得到了更广泛的应用与提升。在 ... [详细]
  • 基于TensorFlow的鸢尾花数据集神经网络模型深度解析
    基于TensorFlow的鸢尾花数据集神经网络模型深度解析 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 深入解析经典卷积神经网络及其实现代码
    深入解析经典卷积神经网络及其实现代码 ... [详细]
  • 视觉图像的生成机制与英文术语解析
    近期,Google Brain、牛津大学和清华大学等多家研究机构相继发布了关于多层感知机(MLP)在视觉图像分类中的应用成果。这些研究深入探讨了MLP在视觉任务中的工作机制,并解析了相关技术术语,为理解视觉图像生成提供了新的视角和方法。 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 本文提供了PyTorch框架中常用的预训练模型的下载链接及详细使用指南,涵盖ResNet、Inception、DenseNet、AlexNet、VGGNet等六大分类模型。每种模型的预训练参数均经过精心调优,适用于多种计算机视觉任务。文章不仅介绍了模型的下载方式,还详细说明了如何在实际项目中高效地加载和使用这些模型,为开发者提供全面的技术支持。 ... [详细]
  • 在Matlab中,我尝试构建了一个神经网络模型,用于预测函数 y = x^2。为此,我设计并实现了一个拟合神经网络,并对其进行了详细的仿真和验证。通过调整网络结构和参数,成功实现了对目标函数的准确估计。此外,还对模型的性能进行了全面评估,确保其在不同输入条件下的稳定性和可靠性。 ... [详细]
author-avatar
潇潇-77
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有