标题
ICNet for Real-Time Semantic Segmentation on High-Resolution Images
能处理高分辨率图像的实时语义分割网络——ICNet
Abstract
- 这篇文章关注的是实时语义分割的挑战。
- 实时语义分割在有很多实际应用但在减少计算上(因为要实时)有很大困难。
- 我们提出了在正确标签知道下包含多重分辨率分支图像级联网络(image cascade network, ICNet)来解决这个挑战。
- 我们提供了我们网络架构的深入分析而且介绍了级联特征融合单元(cascade feature fusion unit)来快速获取高质量的分割图像。我们的系统能使用单个GPU在有挑战的数据集(Cityscapes, CamVid和COCO-Stuff)上产生很准确的实时推测结果。
- 关键字:Real-Time实时, High-Resolution高分辨率, Semantic Segmentation语义分割
Introduction
作者大概介绍了一下语义分割和其重要性,大家对基于CNN的语义分割已经达成共识,作者用Fig. 1(a)来解释。
快速语义分割的现状(Status of Fast Semantic Segmentation)
和得到极大发展的高质量语义分割不同,快速但没有牺牲太多质量的语义分割没有得到太大的发展。作者认为快速语义分割很重要,因为它有更大的实用性,例如:自动驾驶,机器人互动,在线视频处理,甚至移动计算。在这些领域,计算时间在评判系统表现上是一个关键因素。
作者的实验表明ResNet38和PSPNet的高精度方法在Nvidia TitanX GPU上花了1秒钟来预测1024×2048的高分辨率图片。这些方法在Fig. 1(a)有展示,它们精度较高,速度较慢。最近的快速语义分割方法,例如ENet和SQ,则恰恰相反。
作者的关注和贡献(Our Focus and Contributions)
作者的方法很牛!
和原有架构不同,作者在速度和精确度这两个看似有冲突的因素上做出来了全面的考虑。作者先在语义分割框架的时间上做了深入的分析,然后做了广泛的实验来展示以前拍脑袋加速策略的不足。这两者就是开发ICNet的动机。作者再次强调ICNet厉害在高效且准确。它利用处理低分辨率图片的效率以及高分辨率图片的高质量。Idea是使低分辨率图像先通过全语义感知网络(full semantic perception network)来取得粗糙的语义预测图,然后提出级联特征融合单元(cascade feature fusion unit)和级联标签指导(cascade label guidance)策略整合中等和高分辨率特征,这逐渐提炼了粗糙的语义预测图。
主要贡献和表现统计如下:
- 开发了ICNet,它高效利用低分辨率的语义信息和高分辨率的细节
- 级联特征融合单元(cascade feature fusion unit)和级联标签指导(cascade label guidance)可以在计算开销比较低的情况下恢复和提炼语义预测。
- ICNet的推测时间比原本快了5倍,减小内存消耗5倍。它可以在高分辨率的1024×2048在30 fps下实现高质量结果。它能在多种数据集包括Cityscapes, CamVid和COCO-Stuff上产生实时推测。
Image Cascade Network
Speed Analysis
在卷积运算中,对输入特征图和输出特征图使用转换函数
Φ
\Phi
Φ,输入特征图是
V
∈
R
c
×
h
×
w
V\in \mathbb{R}^{c\times h \times w}
V∈Rc×h×w,输出特征图是
U
∈
R
c
′
×
h
′
×
w
′
U \in \mathbb{R}^{c' \times h' \times w'}
U∈Rc′×h′×w′,其中
c
,
h
,
w
c, h, w
c,h,w分别代表输入特征图的通道数,高,宽,
c
′
,
h
′
,
w
′
c', h', w'
c′,h′,w′分别代表输出特征图的通道数,高,宽。卷积运算
Φ
\Phi
Φ的3D核
K
∈
R
c
×
k
×
k
K \in \mathbb{R}^{c \times k \times k}
K∈Rc×k×k,其中
k
k
k代表核的大小。因此,总的卷积运算次数
O
(
Φ
)
O(\Phi)
O(Φ)为
c
′
c
k
2
h
′
w
′
c'ck^2h'w'
c′ck2h′w′,又因为
h
′
=
h
/
s
,
w
′
=
w
/
s
h' = h/s, w'=w/s
h′=h/s,w′=w/s,其中s是步长,所以最后推导出下面公式:
O
(
Φ
)
≈
c
′
c
k
2
h
w
/
s
2
O(\Phi)\approx c'ck^2hw/s^2
O(Φ)≈c′ck2hw/s2
Network Architecture
级联图片输入,对最上面的图使用最复杂的PSPNet50,对中间和下面的图使用轻量级的卷积网络。因为最上面的图的大小最小,就算使用最复杂的网络时间也不会很长,而且还能提取出比较多的特征;因为最下面的图的大小最大,使用轻量级的卷积网络比较快,再加上其本身语义信息就多,所以轻量级网络也能提取出很多东西。
Cascade Feature Fusion (CFF)
特征图F1:先做个2倍的upsampling,也就是双线性插值,然后分两支,左支用来跟label比较,在Cascade Label Guidance细讲;右支做了3×3的空洞卷积,为什么不做反卷积呢?因为空洞卷积与反卷积在相同计算量下相比空洞卷积的感受野更大,比如空洞卷积这里只用3×3就能达到反卷积7×7的效果。然后做了个Batch Norm
特征图F2:先做了1×1的卷积把通道数改成和F1一样,然后做Batch Norm
整合F1和F2产生新的F2’:将F1和F2的每一个值“求和”,再通过激活函数ReLu,得到新F2‘
Cascade Label Guidance
对结构中的每一个分支(不同大小的Input)用带有权重的softmax交叉熵损失函数算Loss,从而对每一个分支都能进行很好的训练。公式如下:
已知有
T
\mathcal{T}
T个分支(例如
T
=
3
\mathcal{T}=3
T=3)和
N
\mathcal{N}
N个类别。在分支
t
t
t中,预测的特征图
F
t
\mathcal{F}^t
Ft有大小为
Y
t
×
X
t
\mathcal{Y}_t \times \mathcal{X}_t
Yt×Xt,在位置(
n
,
y
,
x
n,y,x
n,y,x)的值为
F
n
,
y
,
x
t
\mathcal{F}^t_{n,y,x}
Fn,y,xt,对应的2D位置(
y
,
x
y,x
y,x)的标签为
n
^
\hat{n}
n^,
L
=
−
∑
t
=
1
T
λ
t
1
Y
t
X
t
∑
y
=
1
Y
t
∑
x
=
1
X
t
l
o
g
e
F
n
^
,
y
,
x
t
∑
N
n
=
1
e
e
F
n
,
y
,
x
t
\mathcal{L} = -\sum_{t=1}^{\mathcal{T}}\lambda_t\frac{1}{\mathcal{Y}_t\mathcal{X}_t}\sum_{y=1}^{\mathcal{Y}_t}\sum_{x=1}^{\mathcal{X}_t}log\frac{e^{\mathcal{F}^t_{\hat{n},y,x}}}{\sum^{\mathcal{N}_{n=1}e}e^{\mathcal{F}^t_{n,y,x}}}
L=−t=1∑TλtYtXt1y=1∑Ytx=1∑Xtlog∑Nn=1eeFn,y,xteFn^,y,xt
Structure Comparision and Analysis
通过跟别的网络架构的对比,体现ICNet的优越性。别的网络都是把高分辨率图片作为输入,并经过复杂的卷积神经网络,而ICNet是把低分辨率的图片扔进复杂的卷积神经网络,把高分辨率的图片扔进轻量级的神经网络。使用CFF和级联标签指导(cascade label guidance)整合中高分辨率的特征来逐渐提炼粗糙的低分辨率的语义图(CFF左分支跟label算loss做反向转播更新参数,CFF右分支融合低中高分辨率的特征图的特征,二者结合花费很少时间给出可靠的语义分割结果)。
对自己提问
(1) What did the authors try to accomplish? (作者想要实现什么?)
实现实时且精度尽可能高的语义分割模型。
(2) What were the key elements of the approach? (论文关键点是什么?)
- Cascade Feature Fusion模块(我觉得Cascade Label Guidance已经融合在该模块中了)
- 低,中高分辨率图片分别放进复杂的PSPNet,轻量级卷积网络中,从而达到高效
(3) What can you use yourself? (自己能如何使用?)
借鉴(2)中提到的思路,输入和模型可以是多层次的,不一定只能是一层。
(4) What other references do you want to follow? (有哪些参考是你想要跟进了解的?)
Related work中提到的一些技术,比如视频实时处理。