转载自:http://blog.csdn.net/panglinzhuo/article/details/75207855

卷积与反卷积操作在图像分类、图像分割、图像生成、边缘检测等领域都有很重要的作用。为了讲明白这两种操作,特别是反卷积操作,本文将依照神经网络中的编码器——>解码器——>卷积——>反卷积 的思路来一步步介绍。


编码器与解码器

神经网络本质上就是一个线性变换,通过将输入的多维向量与权重矩阵相乘,得到一个新的多维向量。

  • 当输入向量的维度高于输出向量的维度时,神经网络就相当于一个编码器,实现了对高维向量的低维特征提取。例如下图从x到h的变换过程。

  • 当输入向量维度低于输出向量维度时,神经网络就相当于一个解码器,实现了低维向量到高维向量的重构,如图中h到y的变换。

然而,普通的神经网络仅能对向量进行操作,常见的图像、音频等高维数据都需要展开成向量才能输入给神经网络,这大大破坏了数据在空间上的位置信息。

卷积与反卷积操作使得神经网络可以处理二维以上的数据。它最大的好处在于:1.保持了数据在空间上的位置信息;2.权重共享使得计算复杂度大大降低。

卷积

卷积操作的作用类似神经网络中的编码器,用于对高维数据进行低维特征提取。

卷积操作的示意图:

蓝色图像为input feature map;绿色图像为output feature map 
当有多个input and output feature maps时,卷积核用一个4-D数组表示:

output_channels,input_channels,filter_rows,filter_columns

output feature maps的个数与output_channels数目相等。 
卷积操作的计算方式如下: 
已知:

  • input size i
  • kernel size k
  • stride s
  • padding size p

则输出大小为:

特殊的卷积操作

  • Half(same) padding 
    输出size与输入size相同(i.e., o = i)

  • Full padding 
    输出size大于输入size

反卷积

反卷积通常用于将低维特征映射成高维输入,与卷积操作的作用相反。

卷积与反卷积中的矩阵操作

将大小为(3,3)的卷积核表示成如下图所示的(16,4)矩阵C.T(表示矩阵C的转置):

其中w的下标i,j分别表示卷积核的第i行第j列元素。

  • 卷积的矩阵操作 
    将输入4*4的原始图像A展开成(16,1)向量,则将卷积核作用于图像A等同于下面的矩阵操作:

    C * A = B 
    其中,B为卷积后得到的(4,1)向量,再reshape成(2,2)矩阵即为输出。

  • 误差的反向传播

  • 反卷积的矩阵操作 
    若输入图像A大小(2,2),则首先展开成(4,1)大小的向量,则将卷积核作用于图像A等同于下面的矩阵操作:

    C.T * A = B 
    其中,B为卷积后得到的(16,1)向量,再reshape成(4,4)的矩阵即为反卷积操作的输出结果。

  • 误差的反向传播 
    与卷积操作中误差反向传播时左乘C.T不同,此时需要左乘C。

下图为论文《Adaptive Deconvolutional Networks for Mid and High Level Feature Learning》通过deconvolutional networks学习图片特征的过程。右边为卷积通道,左边为反卷积通道。F、P分别表示卷积及pooling,F.T、U分别表示反卷积及unpooling。

网络通过调整feature maps(z)及filters(f)使得根据feature maps(z)及filters(f)重构的图像y^与原始图像y的差别最小:

网络学习过程:先固定filter学习feature map(inference), 
再固定feature map学习filter(learning)。大致步骤如下图:图片中的红框代表inference,蓝框代表learning。

参考: 
https://www.zhihu.com/question/43609045 
http://deeplearning.net/software/theano_versions/dev/tutorial/conv_arithmetic.html#transposed-convolution-arithmetic

深度学习中的卷积与反卷积相关推荐

  1. 深度学习 tensorflow tf.layers.conv2d_transpose 反卷积 上采样

    参数 conv2d_transpose( inputs, filters, kernel_size, strides=(1, 1), padding='valid', data_format='cha ...

  2. 万字长文带你看尽深度学习中的各种卷积网络

    来源:AI科技评论 摘要:深度学习中的各种卷积网络大家知多少? 深度学习中的各种卷积网络大家知多少?对于那些听说过却又对它们没有特别清晰的认识的小伙伴们,这篇文章非常值得一读.Kunlun Bai 是 ...

  3. 万字长文带你看尽深度学习中的12种卷积网络

    转自 | AI科技评论 作者 | Kunlun Bai 深度学习中的各种卷积网络大家知多少?对于那些听说过却又对它们没有特别清晰的认识的小伙伴们,Kunlun Bai 这篇文章非常值得一读.Kunlu ...

  4. 一文读懂深度学习中的各种卷积

    来源|机器之心 我们都知道卷积的重要性,但你知道深度学习领域的卷积究竟是什么,又有多少种类吗?研究学者 Kunlun Bai 发布了一篇介绍深度学习的卷积文章,用浅显易懂的方式介绍了深度学习领域的各种 ...

  5. 卷积有多少种?一文读懂深度学习中的各种卷积

    点击上方"视学算法",选择"星标"公众号 精选作品,第一时间送达 本文选自towardsdatascience 作者:Kunlun Bai 公众号机器之心整理 ...

  6. 干货|卷积有多少种?一文读懂深度学习中的各种卷积

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 我们都知道卷积的重要性,但你知道深度学习领域的卷积究竟是什么,又有 ...

  7. 收藏 | 一文读懂深度学习中的各种卷积

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习>手 ...

  8. tensorflow一维卷积输入_深度学习中的反卷积(Transposed Convolution)

    反卷积(Transposed Convolution)是一种图像上采样(UpSample)的方法,在DCGAN中用它来将随机采样的值转换为一张完整的图像. DCGAN生成手写数字.图片来源[5] Tr ...

  9. 深度学习中的反向卷积

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 图像卷积最常见的一个功能就是输出模糊( ...

最新文章

  1. VISTA IIS Worker Process 已停止工作 解决办法
  2. 阅读代码工具:Visual Studio Code
  3. 号称要打败阿尔法狗的DeepZenGo 高调挑战人类
  4. HoloLens 2开发:关闭性能分析窗口
  5. 涨姿势了!delete后加 limit是个好习惯么?
  6. 初创公司技术架构推荐
  7. cocos tiledmap无法显示 不显示 无法加载
  8. 必读的 Android 文章
  9. 注意力机制attention和Transformer
  10. html文字段落加边框线,html边框样式 怎么用html给文字加边框的?
  11. 科研绘图软件GraphPad Prism教程(三)
  12. 百度旗下爱乐活推倒重来,拼爹淘宝
  13. PAT-1068 万绿丛中一点红
  14. 琳幼儿园同学-育扬牧童星辰✨ 中一班
  15. 系统建模与仿真基础-欧拉法、龙格库塔法Matlab
  16. Data Oriented Analysis Design
  17. 云盒子携手中交一公局,打造工程企业办公新模式
  18. c语言函数注册与回调,在C中注册回调函数是什么意思?
  19. 遗传算法综述(一、 遗传算法简介)
  20. ffmpeg详细使用语法/指令/格式

热门文章

  1. a标签跳转微信小程序
  2. 极速系列04—python批量获取word/PDF/网页中的表格
  3. Lintcode 2.尾部的零
  4. 电子日记本–我用过的最好的 Windows 工具之一
  5. 远程桌面连接后远程计算机注销,windows2003远程桌面退出后系统自动注销的问题...
  6. 关于Java读取access的方法
  7. libvlc_media_player_stop死锁问题解决
  8. 【Hive】sort by、order by、 distribute by、 group by 、cluster by区别
  9. 红外人体感应太阳能LED灯控制器-QX5298X
  10. 仪表盘服务(Dashboard)安装配置