论文源址:https://arxiv.org/abs/1705.06820

tensorflow(github): https://github.com/HongyangGao/PixelDCN

基于PixelDCL分割实验:https://github.com/fourmi1995/IronsegExperiment-PixelDCL

摘要

反卷积被广泛用于深度学习的上采样过程中,包括语义分割的编码-解码网络与无监督学习的深度生成网络。反卷积的一个缺点是生成的特征图类似于棋盘状,相邻元素之间的关系无法较好的确定。为解决此问题,该文提出PixelDCL层,用于建立上采样输出的feature map中相邻像素之间的联系。该文对常规的反卷积进行重新解释。该网络可以应用于其他网络中,同时,并不会增加网络学习的参数量,其分割性能在准确率上会有所损失,但可以通过一些调参技巧进行克服。实验发现PixelDCL层相比常规的反卷积层,可以获得更多的形状及边等空间信息,进而得到更好的分割效果。

说明

通过反卷积实现上采样得到的feature map可以看作是通过独立的卷积核对多个隐藏层的feature map阶段性混合运算的结果。因此,feature map中相邻像素之间没有直接联系,从而产生“棋盘”问题。针对此问题,该文提出Pixel DCL层神经网络层,在这一层网络中的feature map是连续生成的,因此,后面生成的feature map依赖于先前生成的feature map,通过这种方式,建立起相邻像素之间直接联系.PixelDCL与基于概率密度评估的自恢复方法(PixelRNNs,PixelCNNs)相比,训练速度要快很多。虽然在PixelDCL中会有部分计算性能上的降低,但可以通过调参等技巧进行改善。

方法

反卷积:1D,2D卷积图如下,标准的反卷积操作可以分解为几个依赖于上采样因子的卷积操作。本文默认上采样因子为2。

 

通过如下操作可以计算得到上采样的输出,

代表卷积操作,代表阶段性的混搭操作,在常规的反卷积中,由于中间的feature map是由独立的卷积核得到的,因此中间过程的feature map像素中没有直接关联的信息。由于,相邻两个像素可能来自不同的卷积核的结果,因此,像素值会有所不同,进而会产生“棋盘”现象。如下图,通过后处理的方法进行平滑操作会造成额外的计算资源的消耗,增加网络的复杂度,同时无法进行end-to-end的训练。该文通过添加PixelDCL层给中间隐层feature map添加依赖信息。

像素级反卷积层:

由于常规反卷积操作得到的feature map中相邻像素来自不同卷积核得到的feature map,之间并无关联,该文提出PixelDCL,用于建立不同中间隐层特征的关联。中间隐层特征图是按序列生成,而不是同时生成。后一个feature map的生成依赖与上一个feature map的生成。PixelDCL的操作过程如下

后期生成的feature map可以依赖于前面部分或者全部的feature maps。

由于输入的feature map被重复利用,降低了计算的性能。因此,进行改进,使输入的feature map只与第一个feature map相关。操作过程如下:

像素级反卷积网络:

实验

图像分割

图像生成

时间比较

Reference

[1]  Liang-Chieh Chen, George Papandreou, Iasonas Kokkinos, Kevin Murphy, and Alan L Yuille. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs. arXiv:1606.00915, 2016.

[2]  Mark Everingham, Luc Van Gool, Christopher KI Williams, John Winn, and Andrew Zisserman. The pascal visual object classes (voc) challenge. International journal of computer vision, 88(2): 303–338, 2010.

[3]  Mathieu Germain, Karol Gregor, Iain Murray, and Hugo Larochelle. Made: Masked autoencoder for distribution estimation. In Proceedings of The 32nd International Conference on Machine Learning, pp. 881–889, 2015.

论文阅读笔记十九:PIXEL DECONVOLUTIONAL NETWORKS(CVPR2017)的更多相关文章

  1. 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification

    Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...

  2. 论文阅读笔记十八:ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation(CVPR2016)

    论文源址:https://arxiv.org/abs/1606.02147 tensorflow github: https://github.com/kwotsin/TensorFlow-ENet ...

  3. 论文阅读笔记十六:DeconvNet:Learning Deconvolution Network for Semantic Segmentation(ICCV2015)

    论文源址:https://arxiv.org/abs/1505.04366 tensorflow代码:https://github.com/fabianbormann/Tensorflow-Decon ...

  4. 论文阅读笔记十五:Pyramid Scene Parsing Network(CVPR2016)

    论文源址:https://arxiv.org/pdf/1612.01105.pdf tensorflow代码:https://github.com/hellochick/PSPNet-tensorfl ...

  5. 论文阅读笔记十四:Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation(CVPR2015)

    论文链接:https://arxiv.org/abs/1506.04924 摘要 该文提出了基于混合标签的半监督分割网络.与当前基于区域分类的单任务的分割方法不同,Decoupled 网络将分割与分类 ...

  6. 论文阅读笔记十:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs (DeepLabv2)(CVPR2016)

    论文链接:https://arxiv.org/pdf/1606.00915.pdf 摘要 该文主要对基于深度学习的分割任务做了三个贡献,(1)使用空洞卷积来进行上采样来进行密集的预测任务.空洞卷积可以 ...

  7. 论文阅读笔记六十一:Selective Kernel Networks(SKNet CVPR2019)

    论文原址:https://arxiv.org/pdf/1903.06586.pdf github: https://github.com/implus/SKNet 摘要 在标准的卷积网络中,每层网络中 ...

  8. 论文阅读笔记(九)【TIFS2020】:True-Color and Grayscale Video Person Re-Identification

    Introduction (1)Motivation:在现实场景中,摄像头会因为故障呈现灰白色,或者为了节省视频的存储空间而人工设置为灰白色.灰度图像(grayscale images)由8位存储,而 ...

  9. 论文阅读笔记十二:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation(DeepLabv3+)(CVPR2018)

    论文链接:https://arxiv.org/abs/1802.02611 tensorflow 官方实现: https: //github.com/tensorflow/models/tree/ma ...

随机推荐

  1. QR二维码原理(一)

    一.什么是QR码 QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化.QR码的样子其实在很多场合已经能够被看到了,我这还是贴个图展示一下: 这个图如果被正 ...

  2. golang goroutine 介绍

    Goroutine 是用户态自己实现的线程,调度方式遇到IO/阻塞点方式就会让出cpu时间(其实也看编译器的实现,如果TA在代码里面插入一些yield,也是可以的. 反正现在不是抢占式的.) 不能设置 ...

  3. vue2+axios在不同的环境打包不同的接口地址

    node.js的环境变量 process process 对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程.作为一个对象,它对于 Node.js 应用程序始终是可用 ...

  4. 前端清除缓存方法(微信缓存引起的bug)

    bug1:在新版微信中,部门安卓机子(华为)出现window.location.href/window.location.reload....等方法来刷新本页面链接,发现页面没有被刷新,经过排查,发现 ...

  5. ADO中最重要的对象有三个:Connection、Recordset和Command

    ConnectionPtr: _ConnectionPtr m_pConnection; HRESULT hr; try{ hr = m_pConnection.CreateInstance(_uui ...

  6. MYSQL添加远程用户或允许远程访问

    1.用root用户登陆 格式:grant 权限 on 数据库教程名.表名 to 用户@登录主机 identified by "用户密码";             @ 后面是访问M ...

  7. 两张图概括struts2执行流程核心(经典)

  8. slice的部分说明

    1.slice是数值的一个引用,并不会新增内存地址. 2.slice的容量和长度是两个概念,这个长度跟数组的长度是一个概念,即在内存中进行了初始化实际存在的元素的个数.何谓容量?如果通过make函数创 ...

  9. C# 对话框使用整理

    1.保存文件对话框 SaveFileDialog saveFile = new SaveFileDialog(); saveFile.Title = "save file"; sa ...

  10. POJ 1006 同余方程组

    以前的做法 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring& ...