DeepLabV1网络简析
原论文名称:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
论文下载地址:https://arxiv.org/abs/1412.7062
参考源码:https://github.com/TheLegendAli/DeepLab-Context
讲解视频: https://www.bilibili.com/video/BV1SU4y1N7Ao
文章目录
- 语义分割任务中存在的问题
- DeepLabV1的优势
- 网络搭建细节
- LargeFOV
- MSc(Multi-Scale)
这篇文章最早发表于2014年,是Google和UCLA等共同的杰作,也是一篇很经典的论文,DeepLab系列的第一篇论文。因为已经过了很久了,所以本博文只做部分简单的记录。
语义分割任务中存在的问题
在论文的引言部分(INTRODUCTION)首先抛出了两个问题(针对语义分割任务): 信号下采样导致分辨率降低和空间“不敏感” 问题。
There are two technical hurdles in the application of DCNNs to image labeling tasks: signal downsampling, and spatial ‘insensitivity’ (invariance).
对于第一个问题信号下采样,作者说主要是采用Maxpooling导致的,为了解决这个问题作者引入了'atrous'(with holes) algorithm
(空洞卷积 / 膨胀卷积 / 扩张卷积),如果不了解的可以参考我在bilibili上录的讲解视频。
对于第二个问题空间“不敏感”,作者说分类器自身的问题(分类器本来就具备一定空间不变性),我个人认为其实还是Maxpooling导致的。为了解决这个问题作者采用了fully-connected CRF(Conditional Random Field)方法,这个方法只在DeepLabV1-V2中使用到了,从V3之后就不去使用了,而且这个方法挺耗时的。
DeepLabV1的优势
相比之前的一些网络,本文提出的网络具有以下优势:
- 速度更快,论文中说是因为采用了膨胀卷积的原因,但fully-connected CRF很耗时
- 准确率更高,相比之前最好的网络提升了7.2个点
- 模型很简单,主要由DCNN和CRF联级构成
网络搭建细节
LargeFOV
首先网络的backbone是当时比较火的VGG-16,并且和FCN网络一样将全连接层的权重转成了卷积层的权重,构成全卷积网络。然后关于膨胀卷积的使用,论文中是这么说的:
We skip subsampling after the last two max-pooling layers in the network of Simonyan & Zisserman (2014) and modify the convolutional filters in the layers that follow them by introducing zeros to increase their length (2×in the last three convolutional layers and 4× in the first fully connected layer).
感觉文中的skip subsampling
说的有点模糊(可能是自己英语水平太菜)什么叫做跳过下采样。既然看不懂论文的表述,就去看看代码。根据代码我绘制了如下所示的网络结构(DeepLab-LargeFOV)。
通过分析发现虽然backbone是VGG-16但所使用Maxpool略有不同,VGG论文中是kernel=2,stride=2
,但在DeepLabV1中是kernel=3,stride=2,padding=1
。接着就是最后两个Maxpool层的stride全部设置成1了(这样下采样的倍率就从32变成了8)。最后三个3x3
的卷积层采用了膨胀卷积,膨胀系数r=2
。然后关于将全连接层卷积化过程中,对于第一个全连接层(FC1)在FCN网络中是直接转换成卷积核大小7x7,卷积核个数为4096的卷积层,但在DeepLabV1中作者说是对参数进行了下采样最终得到的是卷积核大小3x3,卷积核个数为1024的卷积层(这样不仅可以减少参数还可以减少计算量,详情可以看下论文中的Table2),对于第二个全连接层(FC2)卷积核个数也由4096采样成1024。
After converting the network to a fully convolutional one, the first fully connected layer has 4,096 filters of large 7 × 7 spatial size and becomes the computational bottleneck in our dense score map computation. We have addressed this practical problem by spatially subsampling (by simple decimation) the first FC layer to 4×4 (or 3×3) spatial size.
将FC1卷积化后,还设置了膨胀系数,论文3.1中说的是r=4
但在Experimental Evaluation
中Large of View
章节里设置的是r=12
对应LargeFOV
。对于FC2卷积化后就是卷积核1x1
,卷积核个数为1024的卷积层。接着再通过一个卷积核1x1
,卷积核个数为num_classes
(包含背景)的卷积层。最后通过8倍上采样还原回原图大小。
下表是关于是否使用LargeFOV(Field of View)的对比。
- 第一行
DeepLab-CRF-7x7
就是直接将FC1按照FCN论文中的方法转换成7x7大小的卷积层,并且膨胀因子r=4(receptive field=224)。 - 第二行
DeepLab-CRF
是将7x7下采样到4x4大小的卷积层,同样膨胀因子r=4(receptive field=128),可以看到参数减半,训练速度翻倍,但mean IOU下降了约4个点。 - 第三行
DeepLab-CRF-4x4
,是在DeepLab-CRF
的基础上把膨胀因子r改成了8(receptive field=224),mean IOU又提升了回去了。 - 第四行
DeepLab-CRF-LargeFOV
,是将7x7下采样到3x3大小的卷积层,膨胀因子r=12(receptive field=224),相比DeepLab-CRF-7x7
,参数减少了6倍,训练速度提升了3倍多,mean IOU不变。
MSc(Multi-Scale)
其实在论文的4.3中还提到了Multi-Scale Prediction,即融合多个特征层的输出。关于MSc(Multi-Scale)的结构论文中是这么说的:
Specifically, we attach to the input image and the output of each of the first four max pooling layers a
two-layer MLP (first layer: 128 3x3 convolutional filters, second layer: 128 1x1 convolutional filters) whose feature map is concatenated to the main network’s last layer feature map. The aggregate feature map fed into the softmax layer is thus enhanced by 5 * 128 = 640 channels.
即,除了使用之前主分支上输出外,还融合了来自原图尺度以及前四个Maxpool层的输出,更详细的结构参考下图。论文中说使用MSc大概能提升1.5个点,使用fully-connected CRF大概能提升4个点。但在源码中作者建议使用的是不带MSc的版本,以及看github上的一些开源实现都没有使用MSc。我个人猜测是因为这里的MSc不仅费时而且很吃显存。根据参考如下代码绘制了DeepLab-MSc-LargeFOV
结构。
https://www.cs.jhu.edu/~alanlab/ccvl/DeepLab-MSc-LargeFOV/train.prototxt
下表是在PASCAL VOC2012 test数据集上的一个消融实验:
关于fully-connected CRF,说实话不太懂,这里就不讲了。
DeepLabV1网络简析相关推荐
- SegNet网络简析及caffe工程应用
最近在工作的业务中需要应用到图像分割,在这里总结一下在应用中遇到的一些问题. 一.SegNet简介 自2015年FCN的提出后,使用卷积层替代全连接层成为了解决像素级分类种where和what的一种有 ...
- DeepLabV3网络简析
论文名称:Rethinking Atrous Convolution for Semantic Image Segmentation 论文下载地址:https://arxiv.org/abs/1706 ...
- DeepLabV2网络简析
论文名称:Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connect ...
- Retrofit网络请求框架使用简析——Android网络请求框架(四)
题记:-- 很累,累到想要放弃,但是放弃之后将会是一无所有,又不能放弃, 唯有坚持,唯有给自忆打气,才能更勇敢的走下去,因为无路可退,只能前行, 时光一去不复返,每一天都不可追回,所以要更珍惜每一存光 ...
- SIGMOD 2021 论文简析:当公交网络连接满足通勤需求时的公共交通规划 Public Transport Planning
SIGMOD-2021 论文简析:当公交网络连接满足通勤需求时的公共交通规划 - Public Transport Planning: When Transit Network Connectivit ...
- 《Android 网络开发与应用实战详解》——2.1节简析Android安装文件
本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.1节简析Android安装文件,作者 王东华,更多章节内容可以访问云栖社区"异步社区" ...
- 网络协议:简析三次握手协议
一,简析三次握手协议 首先来看我们生活中很常见的一件事: 在我们网购的时候,常常会跟客服这样聊天:我们向客服询问某件事,客服回答,然后我们断网了...过了一会儿,我们再登陆就收到了客服的回答. 这个交 ...
- 基于libmad库的MP3解码简析
基于libmad库的MP3解码简析 MAD (libmad)是一个开源的高精度 MPEG 音频解码库,支持 MPEG-1(Layer I, Layer II 和 LayerIII(也就是 MP3). ...
- 简析 .NET Core 构成体系
简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...
最新文章
- DeepMind提出基于视觉的强化学习模型,十八般兵器对机器人不在话下
- IDEA——找不到或无法加载主类的一种暴力解决方法
- mysql server 组件cve_Oracle MySQL Server 'Server'子组件远程安全漏洞(CVE-2012-0574)
- POJ 3517 And Then There Was One( 约瑟夫环模板 )
- mysql dataset_数据库 dataset database
- flink sql planner到底是干嘛用的
- SQL注入漏洞全接触--高级篇
- Perforce使用指南_forP4V
- C++工程师面试题大全
- 微信团队回应“部分用户朋友圈无法刷新”;罗永浩:准备做综艺节目;Apache Spark 3.0 发布| 极客头条...
- Linux,vi编辑器使用手册
- EFK+sentinl报警机制
- 【语音识别】基于matlab MFCC+SVM特定人性别识别【含Matlab源码 533期】
- Lingo 软件的使用 数学建模 司守奎
- 计算机无法关闭密码保护,Windows 10不会关闭密码保护共享
- 苹果手机用H5 audio标签无法自动播放音乐解决方法/html网页自动播放音乐
- 虚拟机vmware12pro中安装win7系统时,点击一键安装win7到c盘就会出现dos工具箱
- java apache 日志_了解Apache的访问日志
- 查询MySQL数据库中所有表的结构
- 最浅显易懂的Javascript 中的slice和splice
热门文章
- python面试常见知识点收集,长期更新
- 计算机二级office实战素材,计算机二级office PPT素材3
- 运算放大器节点电压方程_高速放大器设计三大常见问题,TI 帮您攻克!
- mysql 执行delete的时候没走索引
- 台式计算机操作系统,电脑型号 X64 兼容 台式电脑 操作系统 Windows 7 旗舰版 精简版 64位 SP1 ( DirectX 11 )...
- ThinkPad Z13 评测
- 嵌入式linux操作系统有哪些,主流嵌入式操作系统有哪些?
- 电感和磁珠的6大区别
- Qt之多媒体 Phonon播放器(一)
- 《星际穿越》:一手烧脑一手催泪