图像分割,转载大神的

图像语义分割是 AI 领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一环。近年的自动驾驶技术中,也需要用到这种技术。车载摄像头探查到图像,后台计算机可以自动将图像分割归类,以避让行人和车辆等障碍。随着近些年深度学习的火热,使得图像分割有了巨大的发展,本文为大家介绍深度学习中图像分割的经典算法。

分享提纲

图像分割的问题定义,以及在实际场景中的应用样例全卷积网络双线性上采样特征金字塔Mask-RCNN

大家好,我是浙江大学在读博士生刘汉唐,目前在阿里巴巴 iDST 实习。接下来的分享首先会为大家介绍图像分割具体是做什么的,图像分割有哪些应用场景以及做图像分割实验经常用到的几个数据集。

最后再讲解图像分割的几个方法。分为两个部分,第一部分是传统视觉的图分割算法,虽然现在很少用,但自认为算法比较优美。第二部分是深度学习算法,会介绍最近几年流行的经典技巧。

什么是图像分割?

图像分割就是预测图像中每一个像素所属的类别或者物体。图像分割有两个子问题,一个是只预测类别层面的分割,对每个像素标出一个位置。第二个是区分不同物体的个体。

https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1687016935,2490888110&fm=173&s=5920A4522CE81E884B90B9D4030010A0&w=639&h=355&img.JPEG

应用场景,比如自动驾驶,3D 地图重建,美化图片,人脸建模等等。

最常用的数据集

主要介绍三个:Pascal VOCCityScapesMSCOCO

第一个是 Pascal VOC 数据集

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=1253337710,789326199&fm=173&s=4C98E41314CCBAAC73C159E3000030A0&w=640&h=351&img.JPEG

这是一个比较老牌的数据集,它提供 20 个类别,包括,人,车等。有 6929 张标注图片,提供了类别层面的标注和个体层面的标注,也就是说既可以做语义分割,只区分是不是车;也可以做个体分割,区分有几辆车,把不同的车标记出来。

第二个是CityScapes数据集

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=3699844428,3231344906&fm=173&s=85887C331DF4F09ED3D011C00300B0B3&w=640&h=362&img.JPEG

主要面向道路驾驶场景,它有 30 个精细的类别。其中有 5000 张图片进行了精细标注,精确到像素级别。还有 20000 张图片有粗糙的标注。它也可以提供语义层面分割和个体层面分割。

第三个是MS COCO数据集

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=1200631151,405841466&fm=173&s=8C887C32D8FCD19C9A1535CA0300F0B0&w=640&h=352&img.JPEG

这是目前为止有语义分割的最大数据集,提供的类别有 80 类,有超过 33 万张图片,其中 20 万张有标注,整个数据集中个体的数目超过 150 万个,最新的一些论文都会在 MSCOCO 数据集上做实验,因为它的难度最大,挑战新最高。

传统的图切割

图切割就是移除一些边,使得两个子图不相连;图切割的目标是,找到一个切割,使得移除边的和权重最小。

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=1425887421,4094991748&fm=173&s=08887C3305584DCA5AD119DA0000D0B1&w=640&h=351&img.JPEG

图切割的优点和缺点

优点是分割效果还不错,并且是一种普适性的框架 ,适合各种特征。缺点是时间复杂度和空间复杂度较高,需要事先选取分割块儿的数目。

图切割的失败案列

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=752146308,3369269877&fm=173&s=0C887C32E1804CE24E55ECD60000C0B2&w=640&h=352&img.JPEG

为了克服这个失败,有一篇论文提出了 Normalized Cut。它是在图分割中加入权重参数 VolumeVolume(A) A 中所有边的权重之和。这种方法平衡了每一个子图的大小。

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=377202123,4136800984&fm=173&s=8CA87C3205585DC842DD51DA0000D0B1&w=640&h=358&img.JPEG

深度学习算法

第一篇比较成功用神经网络做图像分割的论文是 Fully Convolutional Networks (以下简称为 FCN)

传统神经网络做分类的步骤是,首先是一个图像进来之后经过多层卷积得到降维之后的特征图,这个特征图经过全连接层变成一个分类器,最后输出一个类别的向量,这就是分类的结果。

FCN 是把所有的全连接层换成卷基层,原来只能输出一个类别分类的网络可以在特征图的每一个像素输出一个分类结果。这样就把分类的向量,变成了一个分类的特征图。

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=1172675850,92638173&fm=173&s=4F18CC03035A4DC80CF8E9DA000080B2&w=640&h=354&img.JPEG

为了能让分类的特征图恢复到原图的大小,采用了上采样层。具体细节可观看视频回放。

FCN的结构图

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=2133804075,1957045317&fm=173&s=98A87C32155A49C85E7554CE0000C0B2&w=640&h=345&img.JPEG

下面介绍一下怎么进行图片放大操作的。

这里有两个概念,第一个概念叫反卷积层(Deconvolution);第二个概念叫双线性差值上采样(Bilinear Upsampling)。

这里的「反卷积」其实不是真正的卷积的逆运算,用 Transposed Convolution 代替比较合适,但原论文中用的是 Deconvolution,我们下面还是用这个词,它可以等效于普通卷积。它的主要目的就是实现上采样。

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=983540808,2926287856&fm=173&s=98A87D3203524C651CD491DA0000D0B1&w=640&h=349&img.JPEG

反卷积具体是怎么计算的,详细过程可到AI慕课学院免费观看视频回放。

下面讲一下PaddingStride

PaddingStride实际指的是普通卷积,而不是反卷积等效的普通卷积。

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=1602963728,621798316&fm=173&s=85B07C326B70428256D1E8C70200F0B1&w=640&h=365&img.JPEG

双线性上采样差

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=2256562557,3862081607&fm=173&s=8C887C3217085D4B1ED0DCDA0000C0B2&w=640&h=338&img.JPEG

双线性上采样差值的三个用途:用作初始化反卷积的权重;不用反卷积,使用上卷积+卷积;只使用上采样。

下面介绍膨胀卷积或带洞卷积(Dilated Convolution )。

它的用途可以使特征图视野变大,但不增加计算量,对于图像分割的好处,更利于提取全局信息,这样就使得分割准确率增加很多。

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=4213258637,520384647&fm=173&s=04887C337F706D8A5F44D9C2020070B1&w=640&h=340&img.JPEG

特征金字塔(Feature Pyramid

有以下几种特征金字塔

https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=3017959615,726406589&fm=173&s=E550EC32D71A65C818DC81DA000080B3&w=639&h=355&img.JPEG

特征金字塔网络

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=3555731588,30395200&fm=173&s=18A07C32015A4DC84CF1DCCE000050B1&w=640&h=361&img.JPEG

Pyramid Pooling

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2392819670,2680659098&fm=173&s=98B8EC13474A4D4B1469D8CA0000C0B0&w=640&h=362&img.JPEG

前面的是在不同的尺度上提取特征,而这个是把特征提取之后pooling到不同的大小。

Mask-RCNN的特点

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=3756679121,630070758&fm=173&s=0CAA7C3207306F8A0D64CCD40000E0B1&w=639&h=356&img.JPEG

第一个特点它是多分支输出的。它同时输出物体的类别,bounding boxMask

第二个特点是它使用了Binary Mask。之前神经网络都是使用多类Mask,而它只需要判断物体在哪个地方。

最后是RoiAlign层。能比较精确地把物体的位置对应到特征图的位置上。

具体讲解细节请观看免费的直播回放视频。

Rol Pooling Roi Align的比较

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=877467705,3231853610&fm=173&s=1590ED324F1C75CA407155E002007030&w=640&h=361&img.JPEG

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=3461004900,2065646998&fm=173&s=80186C32F30E58E8585D40C0000080B2&w=640&h=355&img.JPEG

 

猜你喜欢

转载自blog.csdn.net/qq_17109251/article/details/82718578