【阅读笔记】(语义分割最全总结,综述)《A Review on Deep Learning Techniques Applied to Semantic Segmentation》

本文记录了博主阅读论文《A Review on Deep Learning Techniques Applied to Semantic Segmentation》的笔记。这篇论文是首篇综述深度学习用于语义分割的论文(论文作者称),语言很棒,建议读原文感受一下。

这篇博文很长,建议大家挑选自己需要的部分进行阅读,可以不用从头看到尾。需要的时候知道有这么个东西,知道上哪里查就可以了。更新于2019.2.25。

文章目录

Introduction

博主在这一部分总结了论文introduction部分的内容,进行精炼和归类,方便阅读。如果需要完整版本,建议参考原文

语义分割的应用场景:

  1. 自动驾驶(autonomous driving)【参考文献(1)(2)kitti(3)cityscapes
  2. 人机交互(human-machine interaction)【参考文献
  3. 计算摄影学(computational photography)参考文献
  4. 图片搜索引擎(image search engines)【参考文献
  5. 增强现实(augmented reality)

文章主要贡献

  • 研究了大量可用于分割任务的深度学习数据库;
  • 深入组织了最重大的语义分割深度学习方法,包括其原理和贡献;
  • 全面的评估机制,包括准确度(accuracy)、执行时间(execution time)、内存占用(memory footprint)等在内的定量度量;
  • 对于上述方法的讨论,并给出未来可行的研究方向。

论文结构安排

  • 第二章:介绍语义分割问题、文献中常用的术语和习俗、背景概念(如常用深度神经网络)和数据库;
  • 第三章:介绍现有数据库、挑战赛、benchmarks;
  • 第四章:按照贡献回顾现有算法,主要关注贡献而不是评估算法表现;
  • 第五章:在前文提到的数据库下评估文中提到的算法,并给出未来研究方向的建议。

术语及背景概念

深度学习结构开始解决语义分割问题是一个循序渐进的过程,最开始的起源可以认为是分类任务。给定一个输入,分类任务会将其视作整体,输出一个prediction,比如判断图像中哪一个是目标,或在多个目标同时存在时给出一个列表。之后,更深入的任务开始了。定位(检测)不但需要提供目标类别,同时还要给出目标在空间上的位置信息(如centroids或bounding boxes)。实现这个任务后,很自然地能发现,语义分割是这个任务更深入一步,其目标是:给出每个像素点对应的稠密prediciton。如此一来,每个像素点都有了其属于的那个封闭目标或区域的类别。更进一步,可以实现实例分割(相同类别的不同个体拥有不同的标注),甚至part-based分割(将已经分割好的类别再根据其组件进行进一步的细分)。下图给出了上述的演变过程。

在这里插入图片描述
本文主要关注语义分割(即逐像素类别标注),对于重要的实例分割和part-based segmentation也会提及。

最后,给出逐像素类别标注问题(per-pixel labeling problem)的公式化表达:以某种规则给出由一系列随机变量组成的集合 X = { x 1 , x 2 , … , x N } \mathcal X=\{x_1,x_2,\dots,x_N\} X={ x1,x2,,xN}中的所有元素给出标签空间(label space) L = { l 1 , l 2 , … , l k } \mathcal L=\{l_1,l_2,\dots,l_k\} L={ l1,l2,,lk}。每个标签 l l l代表一个不同的类别或目标,比如飞机、车、路牌、背景等等。这个标注空间有 k k k个可能的状态,通常也会被扩展成 k + 1 k+1 k+1,其中增加了 l 0 l_0 l0来表示背景或空集。通常, X \mathcal X X是一个2D的图像,包含 W × H = N W\times H = N W×H=N个像素 x x x。当然,这个集合(the set of random variables)的维度可以任意改变,也可以变成3D数据或高光谱图片(hyperspectral images)

除了公式化的表述,深度语义分割系统中常用网络结构、方法、基本设计思想等也非常重要。此外,常用训练技巧(如迁移学习)等也有助于读者的了解。最后,数据预处理和扩张方法也非常重要。

常用深度网络结构

如前文所述,有些深度网络由于它们的杰出贡献已经变成了广为人知的标准,比如AlexNet,VGG-16,GoogleNet,ResNet等。这些网络目前也成为了许多分割结构的基础模块(building blocks)。因此,这一部分将介绍这几种方法。

AlexNet

AlexNet是深度CNN的先锋,其以TOP-5测试准确率84.6%赢得了ILSVRF-2012,而与其最相近的对手使用的是传统方法,正确率仅为73.8%。这个由Krizhevsky等人提出的结构相对简单。其包含5个卷积层,max-pooling ones,Rectified Linear Units(ReLUs)引入非线性,3个全连接层,以及dropout。具体结构如下图所示:

(本文给的图:)
在这里插入图片描述
(AlexNet原文给的图:)
在这里插入图片描述

VGG

Visual Geometry Group (VGG)是由牛津大学(University of Oxford)的视觉几何组(Visual Geometry Group,VGG)提出的。他们提出了多种深度CNN模型和配置,其中一个被提交至了ImageNet Large Scale Visual Recognition Challenge (ILSVRC)-2013。这个模型有16个权重层,因此被称为VGG-16。它取得了TOP-5 test accuracy 92.7%的好成绩,从而流行起来。下图为VGG-16的配置:

在这里插入图片描述
与前序工作不同的是,VGG-16前几层采用了一系列小感受野的卷积层,而非很少的基层大感受野的卷积层。这么做在减少了参数个数的同时增大了函数内部的非线性,从而使得决策函数(decision function)的识别力更强,也更容易训练。

GoogleNet

GoogleNet是由Szegedy等人提出的网络结构,其参加了ILSVRC-2014,并取得了TOP-5 test accuracy 93.3%的好成绩。这个CNN结构以其复杂性为特点,包含22层和新提出的inception模块(如下图所示)。

在这里插入图片描述
这个网络结构证明了CNN不仅可以像之前那样顺序排列,也可以以更多样的方式排布。实际上,这些模块包括Network in Network(NiN)层、pooling操作、large-sized卷积层和small-sized卷积层,这些层平行计算,之后通过一个1x1的卷及操作降维。正是因为这些操作,GoogleNet特别考虑了内存和计算量,因而大量减少了参数个数和操作次数。

ResNet

微软的ResNet因赢得了ILSVRC-2016(正确率96.4%)而出名。除此之外,其也由于其深度(152层)和残差模块(如下图所示)而备受关注。

在这里插入图片描述

残差模块通过引入skip connections解决了非常深的网络的训练问题,因为这一操作使得后面的层可以复制其之前的层的输入。直观上,这种做法背后的道理就是,允许后面的层在已知前面层的输出的前提下,从前一层的输入中习得一些不同的东西。此外,这种做法也有助于解决梯度消失的问题。

ReNet

为了将循环神经网络(RNNs, Recurrent Neural Networks)结构应用到多维任务(multi-dimensional tasks)中,Graves等人提出了Multi-dimensional Recurrent Neural Network (MDRNN),其用 d d d connections替换掉了标准RNNs中的每个recurrent connection。其中, d d d是时空数据维数(number of spatio-temporal data dimensions)。基于这个基本做法,Visin等人提出了ReNet结构。该结构使用了usual sequence RNNs,而不是multidimensional RNNs。如此一来,RNNs的个数就可以根据输入图像( 2 d 2d 2d)的维数 d d d在每层中进行线性缩放。在这个方法中,每个卷积层(convolution+pooling)都由四个RNNs对图像的水平和竖直方向进行打扫(sweep),具体如下图所示:

在这里插入图片描述

迁移学习(transfer learning)

从最开始训练一个神经网络通常不太可行的主要原因是:需要一个具有足够尺寸的数据集(通常很难获得);且收敛所需要的时间太长,有时并不值得。即使数据集够大,收敛的时间也没有那么长,从一个已经预训练好的权重开始训练也比从随机的权重开始要好(参考【1】【2】)。从一个预训练的网络考试训练是迁移学习一个最常见的手法。

Yosinski等人证明了即使从非常不同的任务中得到的特征开始训练也比用随机初始化要好,因为特征的可转移性会随着预训练任务与目标任务之间的差异的增大而减弱。

然而,应用这种迁移学习的方法也不是这么简单。一方面,要求网络结构匹配才能传递权重。尽管如此,也不是所有情况都需要用一个全新的网络结构(或组成部分),因此还是可以使用迁移学习的。另一方面,从头训练和fine-tuning的训练流程还是有区别的。选择合适的层去fine-tune还是很重要的(通常选择网络的heigher-level的部分,因为底层通常包含更普适的特征),同时还要确定合适的学习率规则(通常学习率要小一些,因为预训练的权重通常都比较好了,因此不需要很大幅度的调整)。

由于逐像素标注分割数据集固有的收集和创建难题,这些数据库的规模通常没有分类数据集(比如ImageNet【1】【2】)那么大。这个问题在RGB-D或3D数据库上体现的更加明显,这些数据库也更小。基于此,从分类网络应用迁移学习的做法在分割网络中非常常见, 下文也将介绍许多成功的应用。

数据预处理和扩张(Data Preprocessing and Augmentation)

数据扩张对于训练常规和深结构的训练都有好处,也非常普遍。其既可以加速收敛也可以作为regularizer,从而避免过拟合并提升网络的泛化性(参考)。

数据扩张通常包括对数据或特征空间的一系列变换,有时甚至对两者同时进行。不过常见的数据扩张都是对数据进行的,这种扩张会通过变换在已有数据集的基础上生成新的样本。常用的变换有:平移(translation),旋转(rotation),warping,缩放(scaling),颜色空间平移(color space shifts),截取(crops)等。这些变换最本质的目的是创造更大的数据集,从而避免过拟合(overfitting)或潜在归一化模型,还可以平衡数据集中的类别,甚至整体上产生更适合手头目的或任务的新样本。

数据扩张对于小数据库的优势更加明显,一系列的成功案例也证明了这一点。比如,在这篇论文中,一个含有1500个肖像的数据库,通过四个尺度(0.6, 0.8, 1.2, 1.5)、四个转角(-45, -22, 22, 45)和四个gamma变换(0.5, 0.8, 1.2, 1.5),生成了一个新的数据集,包含19000张训练图像。这个过程使得文章作者能够成功地通过在扩张后的数据集上fine-tuning,将他们网络的IoU(Intersection over Union)正确率从73.09提升到了94.20。

数据库及挑战赛

下面我们列出了一些目前还在用的大规模流行数据库。所有列出的数据库都有合适的pixel-wise或point-wise标注。根据数据属性,这份清单被分成三个部分:2D或平面RGB数据库,2.5D或RGB-Depth(RGB-D)数据库,和纯立体或3D数据库。下表给出了所有涉及到的数据库的总结。

在这里插入图片描述

2D 数据库

PASCAL Visual Object Classes (VOC)

论文 | 网站

这个挑战赛包括有注释的图像数据集和5个不同的比赛:分类(classification)、检测(detection)、分割(segmentation)、行为分类(action classification)和人体布局(person layout)。其中,分割任务的目的是标注出每幅测试图像中的每个像素点对应的目标类别。

分割数据库共包括21个类别,归类为“交通工具(vehicles)”、“家庭(household)”、“动物(animals)”和“其他”:飞机(aeroplane)、自行车(bicycle)、船(boat)、公交车(bus)、车(car)、摩托车(motorbike)、火车(train)、瓶子(bottle)、椅子(chair)、餐桌(dining table)、盆栽(potted plant)、沙发(sofa)、电视/监控(TV/monitor)、鸟(bird)、猫(cat)、牛(cow)、狗(dog)、马(horse)、羊(sheep)和人(person)。如果一个像素不属于上面的任何一个类别,其将被划分至“背景”。数据库被分成两个子集:1464张图片的训练集(training)和1449张图片的验证集(validation)。测试集(test)作为挑战赛的保留部分,不被公开。

这个数据集是语义分割领域公认的最权威的数据集,因此几乎所有知名的文献中所提到的算法都被提交至这个数据集以与其他方法比较。算法既可以仅用数据集训练,也可以用辅助信息训练。排名可以看这里

PASCAL Context

论文 | 网址

这个数据库是PASCAL VOC 2010检测挑战赛的扩展,其中包括10103张pixel-wise标注的训练图片。共有540个类别(包括PASCAL VOC包含的原始的20个类别和背景),共可以分为3个大类:目标(objects)、东西(stuff)和混合(hybirds)。尽管这个数据库包括许多类别,但是最常用的只有59个,而其他的会被relabel成背景。

PASCAL Part

论文 | 网址

这个数据集也是PASCAL VOC 2010的一个扩展,其优势是为每个类别提供了per-pixel segmentation mask标注(或至少是轮廓)。原始的PASCAL VOC类别被保留了下来,但是引入了它们的part,比如,自行车被分解成了后轮(back wheel)、链轮(chain wheel)、手把(handlebar)、前灯(headlight)和车座(saddle)。该数据集包括了所有PASCAL VOC的训练集、验证集的标注,以及9637张测试集的标注。

Semantic Boundaries Dataset (SBD)

论文 | 网址

这个数据集也是前文提到的PASCAL VOC的扩展版本,其提供了VOC中没有提供标注的图像的语义分割真值,包括11355张来自PASCAL VOC 2011的图片标注。除了每个类别的边界外,标注中还包括category-level和instance-level的信息。由于信息来自于整个PASCAL VOC挑战赛(而不仅仅是分割部分),SBD的训练集(8498张)和验证集(2857张)的区分与其不同。由于其增加了训练数据的数量,这个数据集经常被用作PASCAL VOC在深度学习上的替代品。

Microsoft Common Objects in Context (COCO)

论文 | 网址

这个是另一个图像识别(recognition)、分割(segmentation)、字幕(captioning)的大规模数据集,包括80个类别,超过82783张训练图片,40504张验证图片和80000余张测试图片。特别地,测试集被分成了不同的子集:test-dev(20000张)用于作为验证集的补充集合,test-standard(20000张)是默认的数据集用于比较state-of-the-art methods,test-challenge(20000张)用于评估提交至挑战赛的算法,以及test-reserve(20000张)用于防止挑战赛中可能出现的过拟合(如果一个方法提交了太多版本,就会用这个集合比较)。由于规模巨大,COCO数据集面世之后便广受欢迎且持续升温。挑战赛的结果与ImageNet的结果一同加入了ECCV(European Conference on Computer Vision)

SYNTHetic Collection of Imagery and Annotations (SYNTHIA)

论文 | 网址

这个数据集包括大量描述虚拟城市(virtual city)的语义分割好的图像,其目的是用于驾驶和城市景观(urban scenario)的景物理解(scene understanding)。数据集包括11个fine-grained pixel-level标注好的类别,包括空集(void)、天空(sky)、建筑(building)、路(road)、人行道(sidewalk)、栅栏(fence)、植被(vegetation)、杆(pole)、车(car)、标识(sign)、行人(pedestrian)和骑车的人(cyclist)。其包括13407张从视频序列中提取的训练图像,场景也很多元化(towns, cities, highways),包含动态目标、季节、天气等。

Cityscapes

论文 网址

这是一个关注城市道路场景的语义理解的大型数据库,提供了语义层面、实例层面和稠密像素级标注的30个类别,共分为8大类:平面(flat surfaces)、人(humans)、交通工具(vehicles)、建筑(constructions)、物体(objects)、自然(nature)、天空(sky)和空集(void)。数据库包括约5000张精心标注的图片和20000粗标的图片。这些数据拍摄于50个不同的城市,横跨数月,拍摄于不同时间和天气。拍摄时拍摄的是视频,后期人工筛选出满足条件的图片:包括大量动态目标,场景不同,背景不同。

CamVid

论文1 论文2 | 网址

这个数据集最开始是记录道路和行驶场景的5个拍摄到的视频,分辨率960x720,相机放在车辆仪表盘上。随后以一定采样频率(4个是1 fps,1个是15fps)采样得到701帧。手动标注成32个类别:空(void)、建筑(building)、墙(wall)、树(tree)、植被(vegetation)、栅栏(fence)、人行道(sidewalk)、停车位(parking block)、圆柱(column/pole)、路障(traffic cone)、桥(bridge)、路标(sign)、混合(miscellaneous text)、信号灯(traffic light)、天空(sky)、隧道(tunnel)、拱门(archway)、路(road)、路肩(road shoulder)、车道标识(lane markings)(driving)、车道标识(lane markings)(non-driving)、动物(animal)、行人(pedestrain)、孩子(child)、行李(cart luggage)、骑自行车的人(bicyclist)、摩托车(motorcycle)、车(car)、SUV/小卡车/卡车(SUV/pickup/truck)、卡车/公交车(truck/bus)、火车(train)和其他移动物体(other moving object)。需要特别注意一下Sturgess等人在论文里提到的分类:367个训练集、100个验证集、233个测试集。这种分类利用了上述分类的一个子集:建筑、树、天空、车、路标、路、行人、栅栏、柱子、人行道和骑自行车的人。

KITTI

论文 | (网址

这是自动驾驶和移动机器人领域最常用的数据库之一,然而数据库本身并不包含语义分割的标注。然而,许多作者为了满足自己的需要手动标注了部分数据集。比如Alvarez等人(论文1论文2)为323张来自于道路检测挑战的图片标注了真值,类别包括道路(road)、交通工具(vehicle)、天空(sky)。Zhang等人标注了252张(140张用来训练,112张用来测试)来自于跟踪挑战的获得物(包括RGB和Velodyne扫描结果),包含10个类别:建筑、天空、道路、植被、人行道、车、行人、骑自行车的人、路牌/柱子、栅栏。Ros等人标注了170张训练图像和46张测试图像(图像来自于视觉测距挑战(visual odometry challenge)),包括11个类别:建筑、树、天空、车、标识、路、行人、栅栏、柱子、人行道、骑自行车的人。

Youtube-Objects

论文

这个数据库中的视频是从Youtube上挑选出来的,包括10个PASCAL VOC类别:飞机、鸟、船、车、猫、牛、狗、马、摩托车、火车。这个数据库不包含像素级的标注,但是Jain等人手动标注了一个126个序列组成的子集。他们从每个视频序列中提取10帧,生成语义标注,一共生成了10167张标注的帧,分辨率为480x360。

Adobe’s Portrait Segmentation(肖像)

论文 | 网址

这个数据集包括的是从Flickr上获得的分辨率为800x600像素的人像图片,主要用手机前置摄像头获取。数据集共有1500张训练图像和300张保留图像(测试),两个数据集都有完整的二维标注:人物或背景。图像标注的方法是半自动的:首先对每个图片运行人脸检测算法,随后截取600x800像素,之后手动用Photoshop的快速选择(quick selection)工具进行标注。这个数据集主要贡献是提供了具体的应用场景:人作为前景。

Materials in Context (MINC)

论文

这个数据集主要用于对patch类材料进行分类,对全景类材料进行分割。其包括23个类别的分割标注:木头(wood)、油漆(painted)、布(fabric)、玻璃(glass)、金属(metal)、瓷砖(tile)、天空(sky)、叶子(foliage)、打磨的石头(polished stone)、地毯(carpet)、皮革(leather)、镜子(mirror)、砖头(brick)、水(water)、其他(other)、塑料(plastic)、皮肤(skin)、石头(stone)、陶瓷(ceramic)、头发(hair)、食物(food)、纸(paper)、墙纸(wallpaper)。数据集共包括7061个标注好的材料作为训练集,5000个作为测试集,2500个作为验证集。大部分图像来源于OpenSurfaces dataset,其也从诸如Flickr或Houzz这样的图像来源分割而来。因此,MINC数据集的图像分辨率是变化的。总的来说,分辨率大概在800x500或500x800左右。

Densely-Annotated VIdeo Segmentation (DAVIS)

论文1 论文2 | 网址

这个挑战赛针对的是视频目标分割。其数据集由50个高清(high-definition)序列组成,一共含有4219帧训练集和2023帧验证集。视频序列的分辨率虽然不同,为了挑战赛所有的帧都被压缩到了480p(高为480)。每帧都有逐像素标注,包括4个类别:人、动物、交通工具、物体。这个数据集的另一个特点是,每个序列都包括至少一个前景目标物体。除此之外,数据库默认没有许多具有大位移的物体。对于那些有多个前景物体的场景&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值