Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何理解深度学习中的deconvolution networks?

如何理解深度学习中的deconvolution networks?

作者头像
CreateAMind
发布于 2018-07-24 08:11:33
发布于 2018-07-24 08:11:33
1.4K0
举报
文章被收录于专栏:CreateAMindCreateAMind

谭旭 https://www.zhihu.com/question/43609045/answer/132235276

研究各种涮法,清汤的,麻辣的

杨军

等 76 人赞同了该回答

最近详细看了一下deconvolutional network相关文章,其实deconv的用处还挺广的,涉及到visualization/pixel-wise prediction/unsupervised learning/image generation都会用到deconv的结构。比如Deconvolutional Network[1][2]做图片的unsupervised feature learning,ZF-Net论文中的卷积网络可视化[3],FCN网络中的upsampling[4],GAN中的Generative图片生成[5]。

如果只是单纯想了解conv和deconv操作本身,建议直接查看[8],后面是关于deconv相关应用的详细介绍。

Deconvolution大致可以分为以下几个方面:

(1)unsupervised learning,其实就是covolutional sparse coding[1][2]:这里的deconv只是观念上和传统的conv反向,传统的conv是从图片生成feature map,而deconv是用unsupervised的方法找到一组kernel和feature map,让它们重建图片。

(2)CNN可视化[3]:通过deconv将CNN中conv得到的feature map还原到像素空间,以观察特定的feature map对哪些pattern的图片敏感,这里的deconv其实不是conv的可逆运算,只是conv的transpose,所以tensorflow里一般取名叫transpose_conv。

(3)upsampling[4][5]:在pixel-wise prediction比如image segmentation[4]以及image generation[5]中,由于需要做原始图片尺寸空间的预测,而卷积由于stride往往会降低图片size, 所以往往需要通过upsampling的方法来还原到原始图片尺寸,deconv就充当了一个upsampling的角色。

下面分别介绍这三个方面的文章:

1. covolutional sparse coding

首先介绍第一个方面covolutional sparse coding,主要介绍Deconvolutional

Network的两篇文章[1][2],都是由New York University的Matthew D. Zeiler, Rob Fergus等人提出来的(他们提出的ZF-net也是ILSVRC 2013的冠军,Matthew D. Zeiler是Rob Fergus的PhD,毕业后去了自己的人工智能初创公司clarifai,而Rob Fergus也加入了Facebook AI Research),最后再简单介绍deconv的一些应用。

第一篇文章Deconvolutional Networks[1]主要用于学习图片的中低层级的特征表示,属于unsupervised feature learning,和传统的auto-encoder,RBM比较类似,和它最像的还是sparse coding,这里先简单介绍一下sparse coding[6],便于后续理解Deconvolutional Network。

Sparse coding是学习一个输入向量x在basis空间phi下的系数a,这个a即是输入向量在phi空间的向量表示:

其中phi是全局变量,对所有输入x都一样,a是局部隐变量,每个x都不一样。这种隐变量模式和K-means,GMM,LDA中的隐变量模式一模一样,所以可以看出这种unsupervised带隐变量的学习都有类似的套路。

Sparse coding和PCA变换最大的不同是PCA找的这个basis空间是complete set,而sparse coding找的这个basis空间是over-complete set,解释是over-complete set能更好的表达输入数据的潜在pattern。由于basis空间是over-complete的,所以系数a就不是唯一的了(一个不太恰当的类比就是方程组求解中,求解三个未知数,但只有两个方程,所以求得的未知数不唯一),所以要引入sparsity,方法就是加正则。Sparse coding的loss function如下:

第一项是reconstruction误差,第二项是正则,一般L1。还有个问题是,如果要保证a足够小,那么让basis vector phi足够大也能达到正则sparsity的目的,这是我们不想要的,所以再加一个约束,

让phi小于某个常数。

学习求解这个loss function就是隐变量学习的通用技巧,有点像alternating least squares(ALS)交替优化。Sparse coding一个不足就是在learning阶段需要学习a和phi,在inference阶段还是需要学习a,runtime cost比较高。

接下来开始介绍Deconvolutional Network,和sparse coding的思路比较类似,是学输入图片y的latent feature map z,同时也要学卷积核f。如果非要用sparse coding那套来类比解释的话,就是学习图片在basis空间f的系数表示z。只是操作由点乘变成了卷积,如下图所示,

其中y是输入图片,c是图片的feature map(color channel)数量,z是feature map,k是feature map数量,f是卷积核。f和z分别对应sparse coding里的phi和a。Loss function是

上述结构只是单层的deconvolutional layer,可以继续按照这个方法叠加layer,第一层的z就作为第二层的图片输入。Loss function如式3:

其中

就是上一层的feature map表示,作为当前层的输入,

是一个0-1矩阵,相当于一个mask,用来决定哪些位置的输入需要连接,有点denoising auto-encoder的味道,附上denoising auto-encoder的关于denoising的解释[7]:

上图说明基于一部分变量去预测另一部分变量的能力是学习变量的联合分布的关键,这也是Gibbs sampling能work的原因。

下面分别介绍Deconcolutional Network的learning和inference

(1) learning

Deconcolutional Network的学习也是alterlative交替优化,先优化feature map z,再优化filter f,如果有多层的话也是逐层训练。

首先第一步是学习feature map。学习Deconcolutional Network的loss function有些困难,原因是feature map中的不同位置的点因为filter互相耦合比较严重。作者尝试了GD,SGD,IRLS(Iterative Reweighted Least Squares)这些优化方法,效果都不理想。因此作者使用了另外一个优化方法,不是直接优化式3中的z,而是选择了一个代理变量x,让z接近x,同时正则化x达到和式3中loss function同样的效果:

优化上式也是采用交替优化z和x的方法。

第二步是学习filter,正常的梯度下降即可。

整个Deconvolutional Network的学习算法如下图所示,其中红色框是学习feature map,其实也相当于做inference,蓝色框是学习filter,相当于模型本身的参数学习。

(2) inference

Inference包括两个层面,一个是根据输入图片和学到的filter inference latent feature map,第二是根据latent feature map reconstruct图片。以两层Deconcolutional Network为例,首先学习第一层z1,然后学习第二层的z2,注意第二层的学习有两个loss,一个是重建z1的loss,

即project 1次学习和z1的误差

另一个是继续重建原图片的loss,即project两次学习和原始图片y的误差

z1和z2学习到后,就可以重建原图片了

下图是Deconcolutional Network学习到的filter示例,可以看到通过unsupervised的方法一样能学到线条以及线条组合等中低层特征,具体分析可见论文。

第二篇文章Adaptive Deconvolutional Networks for Mid and High Level Feature Learning[2]也是通过deconvolutional network学习图片的特征表示,和上一篇不同的是加入了pooling,unpooling,deconv(transpose conv,deconv的参数只是原卷积的转置,并不原卷积的可逆运算)。这篇文章才是可视化常用的反卷积,上篇文章的deconv只是说conv的方向从feature map到图片,也还是feedforward的概念,不是这篇里用的conv和transpose conv。

这篇文章就是要学习图片的所有层级的特征,还是用unsupervised的方法。以往的其它方法在逐层学习的时候图片原始像素丢掉了,学习的target只是上一层的feature map,所以高层的filter和输入图片的连接就没那么强了,导致学得不好,所以它要end to end的学习,学习都是以原始像素作为target学习。

网络结构还是一样有deconvolution

然后引入了pooling,采用的是3D pooling,both in a 2D map and between maps,然后记录max pooling value and switch idx,也就是pooling的receptive field中最大值的位置。 unpooling的时候最大值的位置还原,其它位置填0,如下图所示:

整个网络结构(两层)如下图所示:

首先看右边的卷积通道:y--conv1--z1--pool1--p1--conv2--z2--pool2--p2

然后是左边的反卷积通道:p2--unpool2--z2--devonv2--p1--unpool2--z1--deconv1--y^

同一层中的conv与deconv的参数是转置关系,整个conv通道用

表示,deconv通道用

表示,下标l代表deconv网络的层数,conv通道的组成为:

网络的学习也是分两个步骤,先固定filter学习feature map (inference),然后固定feature map学习filter (learning),和上一篇文章一样,学习没什么难的,大致步骤如下图,具体可以参见paper细节,图片中的红框代表inference,蓝框代表learning。

最后将提出来的feature用于图片识别分类,使用中间层的feature map作为SPM (Spatial

Pyramid Matching) 的输入,M个feature map的reconstruction average 起来,得到一个SPM的single pyramid,最后SPM分类器的效果能达到comparable的效果。

2. CNN可视化 deconv第二个方面是用来做CNN的可视化。ZF-Net[3]中用到了deconv来做可视化,它是将CNN学习到的feature map用得到这些feature map的卷积核,取转置,将图片特征从feature map空间转化到pixel空间,以发现是哪些pixel激活了特定的feature map,达到分析理解CNN的目的。 3. upsampling 分别简单介绍两篇文章,FCN和DCAN。FCN[4]主要用来做pixel-wise的image segmentation预测,先用传统的CNN结构得到feature map,同时将传统的full connected转换成了对应参数的卷积层,比如传统pool5层的尺寸是7×7×512,fc6的尺寸是4096,传统的full connected weight是7×7×512×4096这样多的参数,将它转成卷积核,kernel size为7×7,input channel为512,output channel为4096,则将传统的分别带有卷积和全连接的网络转成了全卷积网络(fully convolutional network, FCN)。FCN的一个好处是输入图片尺寸大小可以任意,不受传统网络全连接层尺寸限制,传统的方法还要用类似SPP结构来避免这个问题。FCN中为了得到pixel-wise的prediction,也要把feature map通过deconv转化到像素空间。论文中还有一些具体的feature融合,详情可参见论文。

DCGAN[5]中使用deconv就更自然了,本身GAN就需要generative model,需要通过deconv从特定分布的输入数据中生成图片。GAN这种模式被Yann LeCun特别看好,认为是unsupervised learning的一个未来。

以上就是关于deconv以及相关应用的简单介绍,本篇文章只是在学习过程中记录整理deconv相关知识点,不敢保证内容的完全正确性,如有兴趣可以多多交流。

[1] Zeiler M D, Krishnan D, Taylor G W, et al. Deconvolutional networks[C]. Computer Vision and Pattern Recognition, 2010.

[2] Zeiler M D, Taylor G W, Fergus R, et al. Adaptive deconvolutional networks for mid and high level feature learning[C]. International Conference on Computer Vision, 2011.

[3] Zeiler M D, Fergus R. Visualizing and Understanding Convolutional Networks[C]. European Conference on Computer Vision, 2013.

[4] Long J, Shelhamer E, Darrell T, et al. Fully convolutional networks for semantic segmentation[C]. Computer Vision and Pattern Recognition, 2015.

[5] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

[6] Sparse Coding - Ufldl

[7] Denoising Autoencoders (dA)

[8] Convolution arithmetic tutorial

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CreateAMind 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
开发 | 深度学习调参入门,有哪些技巧?
AI科技评论按:作者杨军,从事大规模机器学习系统研发及应用相关工作。本文整理自知乎,已获作者授权。 本文将分享一些自己关于深度学习模型调试技巧的总结思考(以CNN为主)。 最近因为一些需要,参与了一些CNN建模调参的工作,出于个人习性,我并不习惯于通过单纯的trial-and-error的方式来调试经常给人以”black-box”印象的Deep Learning模型。所以在工作推进过程中,花了一些时间去关注了深度学习模型调试以及可视化的资料(可视化与模型调试存在着极强的联系,所以在后面我并没有对这两者加以区
AI科技评论
2018/03/12
7690
开发 | 深度学习调参入门,有哪些技巧?
深度学习500问——Chapter09:图像分割(2)
卷积网络被大规模应用在分类任务中,输出的结果是整个图像的类标签。然而,在许多视觉任务,尤其是生物医学图像处理领域,目标输出应该包括目标类别的位置,并且每个像素都应该有类标签。另外,在生物医学图像往往缺少训练图片。所以,Ciresan等人训练了一个卷积神经网络,用滑动窗口提供像素的周围区域(patch)作为输入来预测每个像素的类标签。
JOYCE_Leo16
2024/05/24
1820
深度学习500问——Chapter09:图像分割(2)
【深度】Deep Visualization:可视化并理解CNN
【导读】本文利用非参数化方法来可视化CNN模型,希望帮助理解CNN。 专知公众号转载已获知乎作者余俊授权。 原文地址: https://zhuanlan.zhihu.com/p/24833574 一.前言 CNN作为一个著名的深度学习领域的“黑盒”模型,已经在计算机视觉的诸多领域取得了极大的成功,但是,至今没有人能够“打开”这个“黑盒”,从数学原理上予以解释。这对理论研究者,尤其是数学家来说当然是不可接受的,但换一个角度来说,我们终于创造出了无法完全解释的事物,这也未尝不是一种进步了! 当然,虽然无法完全“
WZEARW
2018/04/08
2.2K0
【深度】Deep Visualization:可视化并理解CNN
Fully Convolutional Networks for Semantic Segmentation
本文介绍了Fully Convolutional Networks for Semantic Segmentation(FCN),是一种用于语义分割的全卷积网络。FCN的主要思想是将传统的卷积神经网络(CNN)结构修改为全卷积网络(FCN),从而在进行像素级别的语义分割任务时能够直接对输入的任意尺寸图像进行处理。FCN通过将输入图像映射到多个特征图上来提取图像的特征,并通过反卷积操作来将特征图扩展到与原始图像相同的大小。这种方法能够有效地利用图像中的上下文信息,并且可以处理任意大小的图像。实验结果表明,FCN在语义分割任务上表现良好,相比其他传统的方法有更好的性能。
GavinZhou
2018/01/02
1K0
Fully Convolutional Networks for Semantic Segmentation
语义分割--Global Deconvolutional Networks for Semantic Segmentation
本文提出了一种用于语义分割的全卷积网络Global Deconvolutional Network (GDN),该网络结构可以有效地利用全局信息进行像素级别的语义分割。GDN网络主要由编码器和解码器组成,编码器利用卷积和池化操作提取图像特征,同时利用解码器将特征图还原到原始图像尺寸并进行上采样。与传统的上采样方法相比,GDN网络使用一个全局性的插值方法,可以有效地利用全局信息进行上采样,同时使用多任务损失函数来约束网络,提高模型的准确性。实验结果表明,GDN网络在语义分割任务上表现良好,具有较高的准确性和鲁棒性。
用户1148525
2018/01/03
8480
语义分割--Global Deconvolutional Networks for Semantic Segmentation
深度学习与TensorFlow:FCN论文翻译
这篇论文跟上一篇的VGG论文一样,在深度学习领域同样的经典,在2015年的CVPR,该论文拿到了best paper候选的论文,在之后的PASCAL VOC2012,凡是涉及到图像语义分割的模型,都沿用了FCN的结构,并且这篇论文跟VGG的结构也很相似,区别只在于VGG最后的全连接层在FCN上替换为卷积层,因此在我们了解完VGG之后,再来了解FCN是很有意义的.这篇文章我们将对论文进行翻译,同时也是精读,希望读完之后能够有所收获,如果有所错误,也请大家指出.
云时之间
2018/06/13
1.1K0
深度学习与TensorFlow:FCN论文翻译
深度学习与TensorFlow:FCN论文翻译(二)
Each layer of data in a convnet is a three-dimensional array of size h × w × d, where h and w are spatial dimensions, and d is the feature or channel dimension. The first layer is the image, with pixel size h × w, and d color channels. Locations in higher layers correspond to the locations in the image they are path-connected to, which are called their receptive fields.
云时之间
2018/06/23
1.2K0
深度学习与TensorFlow:FCN论文翻译(二)
深度学习与TensorFlow:FCN论文翻译(三)
We test our FCN on semantic segmentation and scene parsing, exploring PASCAL VOC, NYUDv2, and SIFT Flow. Although these tasks have historically distinguished between objects and regions, we treat both uniformly as pixel prediction. We evaluate our FCN skip architecture on each of these datasets, and then extend it to multi-modal input for NYUDv2 and multi-task prediction for the semantic and geometric labels of SIFT Flow.
云时之间
2018/06/23
9690
深度学习与TensorFlow:FCN论文翻译(三)
深度学习500问——Chapter09:图像分割(1)
图像分割是预测图像中每一个像素所属的类别或者物体。基于深度学习的图像分割算法主要分为两类:
JOYCE_Leo16
2024/05/24
3800
深度学习500问——Chapter09:图像分割(1)
全卷积网络fcn详解_全卷积神经网络原理
FCN是深度学习应用在图像分割的代表作, 是一种端到端(end to end)的图像分割方法, 让网络做像素级别的预测直接得出label map, 下面我们来看看FCN是如何做到像素级别的分类的
全栈程序员站长
2022/11/02
2.8K0
全卷积网络fcn详解_全卷积神经网络原理
深度学习相关面试题
改变全连接为局部连接,这是由于图片的特殊性造成的(图像的一部分的统计特性与其他部分是一样的),通过局部连接和参数共享大范围的减少参数值。可以通过使用多个filter来提取图片的不同特征(多卷积核)。
机器学习AI算法工程
2021/01/12
7670
深度学习论文笔记(七)---Deconvolution network-2016年(Learning Deconvolution Network for Semantic Segmentation )
本文介绍了一种用于图像分割的深度卷积网络,通过学习输入图像的像素级标签,来自动构建一个图像分割的模型。该模型采用卷积神经网络作为特征提取器,并通过反卷积操作来将特征图扩展到原始图像大小,以生成像素级别的分类结果。实验结果表明,该方法在分割精度和计算效率方面都取得了较好的效果。
TeeyoHuang
2017/12/28
4.5K0
深度学习论文笔记(七)---Deconvolution network-2016年(Learning Deconvolution Network for Semantic Segmentation )
论文阅读学习 - AffordanceNet for Object Affordance Detection
Faster R-CNN-RPN,RPN 与 backbone 网络共享权重,并输出在不同 size 的 bounding boxes(RoI/object proposal);
AIHGF
2019/02/18
1.2K0
深度学习的快速目标跟踪
第一部分:CPU real-time tracker 终极鲁棒的人脸跟踪 关于跟踪,除了鲁棒性 (robust) 和准确性 (accuracy),这个专栏更关注跟踪算法的速度 (speed),2014
AI研习社
2018/03/16
2K0
深度学习的快速目标跟踪
FCN语义分割_卷积神经网络可用于分割吗
CNN做图像分类甚至做目标检测的效果已经被证明并广泛应用,图像语义分割本质上也可以认为是稠密的目标识别(需要预测每个像素点的类别)。
全栈程序员站长
2022/09/25
3860
FCN语义分割_卷积神经网络可用于分割吗
【深度学习系列】用PaddlePaddle和Tensorflow进行图像分类
  上个月发布了四篇文章,主要讲了深度学习中的“hello world”----mnist图像识别,以及卷积神经网络的原理详解,包括基本原理、自己手写CNN和paddlepaddle的源码解析。这篇主要跟大家讲讲如何用PaddlePaddle和Tensorflow做图像分类。所有程序都在我的github里,可以自行下载训练。   在卷积神经网络中,有五大经典模型,分别是:LeNet-5,AlexNet,GoogleNet,Vgg和ResNet。本文首先自己设计一个小型CNN网络结构来对图像进行分类,再了解一
Charlotte77
2018/01/09
1.4K0
【深度学习系列】用PaddlePaddle和Tensorflow进行图像分类
【深度学习】煮酒论英雄:深度学习CV领域最瞩目的top成果总结
如果06年Hinton的深度置信网络是深度学习时代的开启,12年的Alexnet在ImageNet上的独孤求败是深度学习时代的爆发,那么至今也有近15年的发展历程。15年足够让一个青涩懵懂的少年成长为一个成熟稳重的壮年。
黄博的机器学习圈子
2020/12/11
5660
【深度学习】煮酒论英雄:深度学习CV领域最瞩目的top成果总结
Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network论文翻译——中英文对照
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书
Tyan
2020/04/24
1.3K0
Deformable Convolutional Networks论文翻译——中英文对照
Tyan
2017/12/28
1.4K0
Deformable Convolutional Networks论文翻译——中英文对照
【深度学习】从R-CNN到Mask R-CNN的思维跃迁
发现之前写R-CNN系列的文章,侧重于结构设计层面的,比较零散,我写一个侧重于从R-CNN到Mask R-CNN设计思路是如何演变的,对R-CNN、Fast R-CNN、Faster R-CNN和Mask R-CNN四篇巨作有一个宏观上的认知,R-CNN系列的思维跃迁堪称科研教科书,希望大家能从中得到一些如何做研究的启发。
黄博的机器学习圈子
2021/07/07
6850
【深度学习】从R-CNN到Mask R-CNN的思维跃迁
推荐阅读
相关推荐
开发 | 深度学习调参入门,有哪些技巧?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档