ICLR-2016


文章目录

  • 1 Background and Motivation
  • 2 Advantages / Contributions
  • 3 Method
    • 3.1 Dilated Convolution
    • 3.2 Multi-scale Context Aggregation
    • 3.3 Front End
  • 4 Experiments
    • 4.1 Datasets
    • 4.2 Controlled evaluation of context aggregation
    • 4.3 Urban Scene Understanding
  • 5 Conclusion(own)

1 Background and Motivation

计算机视觉中许多问题都是 dense prediction 问题,也就是给每个 pixel 预测一个连续的或者离散的标签!

最突出的的例子是语义分割,FCN 论文展示了为 classification 而设计的 CNN 也可以成功的运用到 dense prediction

由于 classification 和 dense prediction 任务是不同的,引发了作者如下的两个思考:

  • classification 任务中的 CNN repurposed for dense prediction 任务中,CNN结构中哪些方面是真正有用的呢?哪些方面又会影响 dense prediction 的精度呢?
  • 在 CNN 结构基础上,为 dense prediction 设计一个专用模块,能否进一步提升 dense prediction 的精度呢?

现在的分类网络,通过不断的下采样来 integrate multi-scale contextual information,最终输入一个 global prediction!然而 dense prediction 既需要 multiscale contextual reasoning(eg,只有一个像素了) 也需要 full-resolution output!这两者是有 conflicting 的!现有工作解决 multiscale contextual reasoning 和 full-resolution output 之间的冲突有如下两种方法

  • repeated 上采样,来 recover lost resolution,同时,下采样所提取的 global perspective 也会随着上采样传递上去。问题:severe intermediate downsampling 是否真的有必要,必须凤凰涅槃,撞了南墙才肯回头吗?
  • 用 multiple rescaled versions of the image 作为网络的输入,然后把他们的结果 combining。问题:不清楚分开分析这些 rescaled input images 是否有必要!

作者提出 Dilated Conv 来缓解这个矛盾

  • aggregates multi-scale contextual information without losing resolution or analyzing rescaled images
  • support exponential expansion of the receptive field without loss of resolution or coverage.

2 Advantages / Contributions

  • develop a new convolutional network module that is specifically designed for dense prediction.(Dilated Conv
  • presented context module increases the accuracy of state-of-the-art semantic segmentation systems.(Multi-scale Context Aggregation
  • examine the adaptation of image classification networks to dense prediction and show that simplifying the adapted network can increase accuracy(剔除了 VGG-16 的两个 maxpooling

3 Method

3.1 Dilated Convolution

  • 传统卷积

    理解不是那么直观,看看下面的式子就好理解了(是真正的卷积哟,不是相关,参考 别怕,"卷积"其实很简单)

    嗦嘎,那么传统卷积中每个变量对应的含义如下:

    • FFF 是特征图
    • kkk 是卷积核
    • ppp 是感受野大小,上面公式展示的是感受野半径

  • dilated 卷积

    多了一个 dilation factor lll

  • 传统卷积的话,一直用 3×3 堆叠卷积,F1F_1F1​ 的感受野是 3×3,F2F_2F2​ 的感受野是 5×5,F3F_3F3​ 的感受野是 7×7!感受野线性增长

  • dilated 卷积的话,如下图所示,每个3×3 堆叠卷积,配合线性增长的 dilation factor,感受野随着层数的增加指数级增长。Fi+1F_{i+1}Fi+1​ 的感受野为 (2i+2−1)×(2i+2−1)(2^{i+2}-1)×(2^{i+2}-1)(2i+2−1)×(2i+2−1),

    • 3×3卷积是 1-dilated convolution,堆叠起来,感受野升 1 级(感受野增加2)
    • F2F_2F2​ 在 F1F_1F1​ 的基础上用了 2-dilated convolution,相当于感受野升了 2 级,F1F_1F1​ 感受野是 3×3,升了 2 级就是 7×7
    • F3F_3F3​ 在 F2F_2F2​ 的基础上用了 4-dilated convolution,相当于感受野升了4级,F2F_2F2​ 感受野是 7×7,升了 4 级就是 15×15

3.2 Multi-scale Context Aggregation

用来捕获 multi-scale context 的模块,C channel 的 feature map 作为输入,C channel feature map 作为输出,输入和输出相同,dilated convolution 来增加感受野,3×3堆叠,分辨率没有下降

有了 3.1 小节的分析,这个表的感受野也比较清晰了:

  • F4F_4F4​ 在 F3F_3F3​ 的基础上用了 4-dilated convolution,相当于感受野升了 4 级,F3F_3F3​ 感受野是 9×9,升了 4 级就是 17×17
  • F5F_5F5​ 在 F4F_4F4​ 的基础上用了 8-dilated convolution,相当于感受野升了 8 级,F4F_4F4​ 感受野是 17×17,升了 8 级就是 33×33
  • F6F_6F6​ 在 F5F_5F5​ 的基础上用了 16-dilated convolution,相当于感受野升了 16 级,F4F_4F4​ 感受野是 33×33,升了 16 级就是 65×65

pointwise truncation:max(·,0),应该指的是分辨率维度上的

实验中这个模块接在 64×64分辨率的特征图上,所以 layer 6 之后就没有进行 dilated conv 了

Table1 这个模块采用随即初始化效果不好,作者采用了 identity initialization 初始化方法(在CNN中,有时我们希望将权重初始化为上一层的 feature map 能够完整的传递到下一层,即对于卷积操作 F2=F1∗wF2=F1∗wF2=F1∗w,我们希望初始化权重矩阵 www,使得 F2=F1F2=F1F2=F1,此时的权重均值 www 初始化操作就叫 identity initialization——参考tensorflow参数初始化–identity initializtion),Table 1 中的 basic 方法参数初始化如下:

  • aaa、bbb 分别为输入特征图和输出特征图的索引
  • 1[a,b]^1[a,b]1[a,b],单位矩阵,a = b 的时候,对应位置为 1
  • ttt,作者这种初始化方法引用论文《A simple way to initialize recurrent networks of rectified linear units》,核心思想是 the use of the identity matrix or its scaled version to initialize the recurrent weight matrix!盲猜这个 t 应该指的是序列,但是图片中不存在,所以 t = 0

Table 1 中的 large 方法参数初始化如下(We generalize the initialization scheme to account for the difference in the number of feature maps in different layers.),因为这里输入通道和输出通道不一样了,不好用 identity initialization:

  • cic_ici​ 和 ci+1c_{i+1}ci+1​ 是连续两层的特征通道数,
  • ε\varepsilonε ~ N(0,σ2)N(0,\sigma^2)N(0,σ2),其中高斯分布的方差 σ≪C/ci+1\sigma \ll C/c_{i+1}σ≪C/ci+1​

具体如下图所示,假设输入和输出分类别为 cic_{i}ci​ 和 ci+1c_{i+1}ci+1​ 维的列向量,简化下第一个公式的条件,就是 aci+1=bciac_{i+1} = bc_{i}aci+1​=bci​!如果没有推理错的话,下图仅有最后一个角落符合上面公式的条件

3.3 Front End

采用 VGG-16,remove the last two pooling and striding layers entirely

我们来重温下 ICLR-2015 的 VGGNet《Very Deep Convolutional Networks for Large Scale Image Recognition》

作者的 front-end model 应该移除了上图红色框框的部分,改为了 dilated conv,4 factor,保持分辨率,但是感受野不变!

输出分辨率为,64×64,C = 21

下面看看在 VOC-2012 dataset 上和 FCN、DeepLab-v1 的比较

效果展示如下:

FCN-8s 在《Fully Convolutional Networks for Semantic Segmentation》论文中展示如下:

注意,作者的方法比 leaderboard 中的 DeepLab+CRF 方法效果还好!(67.6% vs. 66.4%),但是作者没有用 CRF

4 Experiments

4.1 Datasets

  • PASCAL VOC 2012
  • Microsoft COCO(训练,包含 VOC 类别的为前景,其它的为背景)
  • urban scene understanding
    • CamVid dataset:367 training images, 100 validation images, and 233 test images. 11 semantic classes are used.
    • KITTI dataset:100 training images and 46 test images
    • Cityscapes dataset:2975 training images, 500 validation images, and 1525 test images

训练分两个阶段,先 VOC 12 和 COCO 一起训练,然后在 VOC 12 上 fine-tune

仅 front-end 模块,69.8 % mIoU on VOC-2012 validation set,71.3% mIoU on test dataset

4.2 Controlled evaluation of context aggregation

front-end 模块中,插入 Multi-scale Context Aggregation 模块



加 CRF,加 RNN 属于添加了 structure prediction 模块, structure prediction 的介绍可以参考 闲聊结构化预测(structured learning)

Table 3 可以看出,front-end 和 Context Aggregation 两个模块一起使用效果更好!


下面看看在 VOC 12 测试集上的表现


CRF+RNN 效果更好,下面看看图感受一下


作者也展示了一些失败的例子

4.3 Urban Scene Understanding

1)CAMVID Dataset

front-end + context,有 8 layer,简写成 Dilation8

2)KITTI Dataset

front-end + context,有 7 layer,简写成 Dilation7

3) Cityscapes dataset

front-end + context,有 10 layer,简写成 Dilation10


感受一下,训练分三个阶段,第一个阶段训练 front-end,第二个阶段训练 context module,第三个阶段一起训练

5 Conclusion(own)

  • dense prediction

  • we have also shown that the accuracy of existing convolutional networks for semantic segmentation can be increased by removing vestigial components that had been developed for image classification.(也算是收尾呼应吧,前面说了分类网络有些模块可能会影响分割精度的)

  • aggregates multi-scale contextual information without losing resolution or analyzing rescaled images,support exponential expansion of the receptive field without loss of resolution or coverage. 这两句描述太关键了

  • 熟悉下 structure learning,熟悉下 identity initialization,看完 Figure 4,感觉分割好难,哈哈哈

  • 作者对未来进行了展望,如果有更好的数据产生,就可以不依赖 Imagenet 的 pre-train 了,这样,输入和输出可以保持同分辨率,然后设计更合适的结构!

  • 没看 code,不太清楚, context module 是插入到 front-end 的哪里,最后?感觉不像,因为论文中给的是 plug!代码地址:https://github.com/fyu/dilation/blob/master/network.py,有空瞅瞅

【Dilated Conv】《Multi-Scale Context Aggregation by Dilated Convolutions》相关推荐

  1. 【MobileNet V2】《MobileNetV2:Inverted Residuals and Linear Bottlenecks》

    CVPR-2018 caffe 版本的代码:https://github.com/shicai/MobileNet-Caffe/blob/master/mobilenet_v2_deploy.prot ...

  2. No.046<软考>《(高项)备考大全》【专项2】《案例分析 - 计算题(上)》

    <(高项)备考大全>[专项2]<案例分析 - 计算题> 1 题型全部概况 2 进度管理 2.1 关键路径法 CMP 2.1.1 原理 2.1.2 关键路径的基本问题 2.1.3 ...

  3. 【好书推荐】《Web全栈工程师的自我修养》

    作者简介 余果,腾讯社交用户体验设计部高级UI工程师,前端开发组负责人,熟悉前端开发.iOS开发.PHP开发和Ruby开发等:曾独立开发iOS APP(撸大师)和CMS(33PU):翻译有<众妙 ...

  4. 【白皮书下载】《追本数源•开启产品智能化时代》| 产品指数级增长手册

    一个成功的产品经理不但能引导产品的发展,而且能引导公司的发展.产品经理在进行一款新产品设计之初,或者是运营人员,需要结合市场整体情况.企业经营目标.用户需求和现有产品组合等方面综合考虑.产品经理在进行 ...

  5. 【读一本书】《昇腾AI处理器架构与编程》--神经网络基本知识学习(1)

    今天我们要讲的主题是 -- 神经网络基础知识. 1 聊聊为啥写这个系列 我最开始玩公众号的前因,其实在第一篇博客里就提过了,主要是为了督促自己学习并记录.分享自己的想法.因此断断续续地写了20+pyt ...

  6. 【笔记-vue】《imooc-vue.js高仿饿了么》、《imooc-vue 音乐app》、《imooc-vue.js源码全方位解析》

    20170709 - 20171128:<imooc-vue.js高仿饿了么> 一.第一章 课程简介 1-1课程简介 1.需求分析-脚手架工具-数据mock-架构设计-代码编写-自测-编译 ...

  7. 【新书上架】 | 《全栈应用开发:精益实践》——历时两年二十万余字

    两年前,从 RePractise 的一篇文章里,我开始了 Growth 应用及电子书的编写.Growth 整个系列的内容在 GitHub 上已经有近万个 star.今天我们带来了 Growth 的纸质 ...

  8. 【知识图谱】 | 《知识图谱——方法、实践与应用》阅读笔记

    <知识图谱--方法.实践与应用>的阅读笔记 知识图谱--方法.实践与应用 第1章 知识图谱概述 1.1 什么是知识图谱 1.2 知识图谱的发展历史 1.3 知识图谱的价值 1.4 国内外典 ...

  9. 【读一本书】《昇腾AI处理器架构与编程》--神经网络基础知识(2)

    1 卷积神经网络:输入层 之前提到多层感知机的参数太多,导致训练耗时长并且对图像处理也不具有优势,因此大神们 就提出了多层神经网络,其中最经典的是卷积神经网络(Convolution Neural N ...

最新文章

  1. 写给将要参加软考的朋友们
  2. Oracle day05 索引_数据去重
  3. ActionScript 3.0 优化
  4. 【Linux】一步一步学Linux——skill命令(143)
  5. line-height与图片底部间隙的学习整理转述
  6. Python文件操作与函数目录
  7. CentOS SVN 服务器搭建
  8. 关闭计算机端口的命令行,关闭端口命令,小编教你如何关闭电脑80端口
  9. 《UEFI原理与编程》读书笔记
  10. 镀镍金刚石线切割硅片
  11. ffmpeg学习日记5-使用ffmpeg进行h264解码
  12. 中基鸿业投资理财好习惯
  13. android 模糊线条,android 线条选择器
  14. 网络安全与认证技术-总复习
  15. 用Python做一个好玩的朋友圈九宫格抽奖
  16. Java基础语法之数组练习——循环输出数列的值并求和
  17. 怎样安装linux系统
  18. 「数据集」深度学习从“数据集”开始
  19. 优雅的99乘法表以及format使用
  20. 发些今年的作品:网络斗地主

热门文章

  1. 极客时间「大师课·深度剖析 RocketMQ5.0」上线啦,欢迎免费领取!
  2. sass、scss、less区别
  3. 高通UEFI研究[三]
  4. 动态内存的申请和非动态内存的申请_深圳罗湖“限制非深户申请公办学位”惹争议,官方权威回应来了...
  5. 阿里一面集合_阿里天猫一面+阿里饿了么一面+阿里妈妈一面
  6. 普通用户申请微软的OneDrive免费网盘,容量5T、5T、5T,重要事情说三遍!!!!!
  7. Kata3.0.0 x LifseaOS x 龙蜥内核三管齐下!带你体验最新的安全容器之旅
  8. ref、reactive、toRef、toRefs的区别
  9. 微信群内接龙的excel公式处理
  10. Linux主机安全加固方法使用开源软件fail2ban防护主机