【Dilated Conv】《Multi-Scale Context Aggregation by Dilated Convolutions》
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》相关推荐
- 【MobileNet V2】《MobileNetV2:Inverted Residuals and Linear Bottlenecks》
CVPR-2018 caffe 版本的代码:https://github.com/shicai/MobileNet-Caffe/blob/master/mobilenet_v2_deploy.prot ...
- No.046<软考>《(高项)备考大全》【专项2】《案例分析 - 计算题(上)》
<(高项)备考大全>[专项2]<案例分析 - 计算题> 1 题型全部概况 2 进度管理 2.1 关键路径法 CMP 2.1.1 原理 2.1.2 关键路径的基本问题 2.1.3 ...
- 【好书推荐】《Web全栈工程师的自我修养》
作者简介 余果,腾讯社交用户体验设计部高级UI工程师,前端开发组负责人,熟悉前端开发.iOS开发.PHP开发和Ruby开发等:曾独立开发iOS APP(撸大师)和CMS(33PU):翻译有<众妙 ...
- 【白皮书下载】《追本数源•开启产品智能化时代》| 产品指数级增长手册
一个成功的产品经理不但能引导产品的发展,而且能引导公司的发展.产品经理在进行一款新产品设计之初,或者是运营人员,需要结合市场整体情况.企业经营目标.用户需求和现有产品组合等方面综合考虑.产品经理在进行 ...
- 【读一本书】《昇腾AI处理器架构与编程》--神经网络基本知识学习(1)
今天我们要讲的主题是 -- 神经网络基础知识. 1 聊聊为啥写这个系列 我最开始玩公众号的前因,其实在第一篇博客里就提过了,主要是为了督促自己学习并记录.分享自己的想法.因此断断续续地写了20+pyt ...
- 【笔记-vue】《imooc-vue.js高仿饿了么》、《imooc-vue 音乐app》、《imooc-vue.js源码全方位解析》
20170709 - 20171128:<imooc-vue.js高仿饿了么> 一.第一章 课程简介 1-1课程简介 1.需求分析-脚手架工具-数据mock-架构设计-代码编写-自测-编译 ...
- 【新书上架】 | 《全栈应用开发:精益实践》——历时两年二十万余字
两年前,从 RePractise 的一篇文章里,我开始了 Growth 应用及电子书的编写.Growth 整个系列的内容在 GitHub 上已经有近万个 star.今天我们带来了 Growth 的纸质 ...
- 【知识图谱】 | 《知识图谱——方法、实践与应用》阅读笔记
<知识图谱--方法.实践与应用>的阅读笔记 知识图谱--方法.实践与应用 第1章 知识图谱概述 1.1 什么是知识图谱 1.2 知识图谱的发展历史 1.3 知识图谱的价值 1.4 国内外典 ...
- 【读一本书】《昇腾AI处理器架构与编程》--神经网络基础知识(2)
1 卷积神经网络:输入层 之前提到多层感知机的参数太多,导致训练耗时长并且对图像处理也不具有优势,因此大神们 就提出了多层神经网络,其中最经典的是卷积神经网络(Convolution Neural N ...
最新文章
- 写给将要参加软考的朋友们
- Oracle day05 索引_数据去重
- ActionScript 3.0 优化
- 【Linux】一步一步学Linux——skill命令(143)
- line-height与图片底部间隙的学习整理转述
- Python文件操作与函数目录
- CentOS SVN 服务器搭建
- 关闭计算机端口的命令行,关闭端口命令,小编教你如何关闭电脑80端口
- 《UEFI原理与编程》读书笔记
- 镀镍金刚石线切割硅片
- ffmpeg学习日记5-使用ffmpeg进行h264解码
- 中基鸿业投资理财好习惯
- android 模糊线条,android 线条选择器
- 网络安全与认证技术-总复习
- 用Python做一个好玩的朋友圈九宫格抽奖
- Java基础语法之数组练习——循环输出数列的值并求和
- 怎样安装linux系统
- 「数据集」深度学习从“数据集”开始
- 优雅的99乘法表以及format使用
- 发些今年的作品:网络斗地主
热门文章
- 极客时间「大师课·深度剖析 RocketMQ5.0」上线啦,欢迎免费领取!
- sass、scss、less区别
- 高通UEFI研究[三]
- 动态内存的申请和非动态内存的申请_深圳罗湖“限制非深户申请公办学位”惹争议,官方权威回应来了...
- 阿里一面集合_阿里天猫一面+阿里饿了么一面+阿里妈妈一面
- 普通用户申请微软的OneDrive免费网盘,容量5T、5T、5T,重要事情说三遍!!!!!
- Kata3.0.0 x LifseaOS x 龙蜥内核三管齐下!带你体验最新的安全容器之旅
- ref、reactive、toRef、toRefs的区别
- 微信群内接龙的excel公式处理
- Linux主机安全加固方法使用开源软件fail2ban防护主机