Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

作者Jakub Czakon参与小舟、Racoon、张倩

2020入坑图像分割,我该从哪儿入手?

作为计算机视觉的一个热门方向,每年都会有很多同学入坑图像分割。这一领域已经有了哪些研究成果、资源?目前面临什么困境?还有哪些问题值得研究?本文将重点讨论这些问题。


初识图像分割

顾名思义,图像分割就是指将图像分割成多个部分。在这个过程中,图像的每个像素点都和目标的种类相关联。图像分割方法主要可分为两种类型:语义分割实例分割语义分割会使用相同的类标签标注同一类目标(下图左),而在实例分割中,相似的目标也会使用不同标签进行标注(下图右)。

图源:Anurag Arnab, Shuai Zheng et. al 2018「Conditional Random Fields Meet Deep Neural Networks for Semantic Segmentation」

图像分割模型的基本架构包括编码器与解码器。编码器通过卷积核提取图像特征。解码器负责输出包含物体轮廓的分割蒙版。

图源:Vijay Badrinarayanan et. al 2017「SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation」

大多数图像分割架构都具有这样的结构或是其变体,比如以下几种:

U-Net

U-Net 最初是一个用于分割生物医学图像的卷积神经网络。它的架构由两部分组成,左侧是提取路径,右侧是扩展路径。提取路径用来捕获上下文,扩展路径用来精准定位。提取路径由两个 3*3 的卷积组成。卷积后经过 ReLU 激活和用于降采样的 2*2 最大池化计算。

图源:Olaf Ronneberger et. al 2015「U-net architecture image segmentation」

FastFCN——快速全连接网络

在快速全连接网络(FastFCN)架构中,联合金字塔上采样(Joint Pyramid Upsampling, JPU)模型代替了消耗大量存储空间和时间的扩张卷积。该架构在核心部分使用了全连接网络,并应用 JPU 进行上采样。JPU 将低分辨率特征图上采样为高分辨率特征图。

图源:Huikai Wu et.al 2019「FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation」

Gated-SCNN

Gated-SCNN 架构包括一个双流卷积神经网络结构。在该模型中,使用一个单独的分支来处理图像的形状信息。该形状流被用来处理边界信息。

图源:Towaki Takikawa et. al 2019「Gated-SCNN: Gated Shape CNNs for Semantic Segmentation」

DeepLab

在 DeepLab 架构中,带有上采样滤波器的卷积被用于密集预测型任务。多尺度的物体分割是通过空洞空间金字塔池化(atrous spatial pyramid pooling)完成的。最后,使用 DCNN 来提升物体边界的定位精准度。通过在上采样滤波器过程中插入 0 或对输入特征图稀疏采样,来实现空洞卷积

图源:iang-Chieh Chen et. al 2016「DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs」

Mask R-CNN

在 Mask R-CNN 架构中,使用边界框和将图片分割成一系列像素点的语义分割来对物体进行分类和定位。每个兴趣区域会得到一个分割蒙版。最终还会输出类标签和边界框。

图源:Kaiming He et. al 2017「Mask R-CNN」。

下图为在 COCO 测试集上实现的分割效果。

图源:Kaiming He et. al 2017「Mask R-CNN」

图像分割损失函数、数据集、框架

语义分割模型在训练过程中通常使用简单的跨类别熵损失函数。但是,如果你想获得图像的细节信息,则需要更高级的损失函数

损失函数

1.Focal 损失

该损失是对标准的交叉熵评价函数的改进。通过对其变形实现,以使分配给分好类别样本的损失是低权重的。最终,这确保了没有分类失衡。在该损失函数中,随着正确类别置信度的增加,交叉熵损失随比例因子逐渐衰减为零。比例因子会在训练时自动降低简单样本的贡献,更注重复杂的样本。


2.Dice 损失

Dice 损失通过计算平滑的 dice 系数函数得到。该损失是分割问题中最常用的损失函数之一。


3.IoU-平衡损失

IoU-平衡分类损失旨在增加高 IoU 样本的梯度同时减少低 IoU 样本的梯度。通过这种方法,提升机器学习模型的定位准确率


4. 边界损失

边界损失的一种变体被用于高度不平衡的分割任务。这种损失的形式是一种空间轮廓而非区域的距离度量。此方式解决了高度不平衡任务中区域损失带来的问题。


5. 加权交叉熵

交叉熵的一种变体中,所有正向的样本都按一定的系数加权,用于类不平衡的情况下。


6.Lovász-Softmax 损失

该损失基于凸 Lovasz 扩展的子模块损失,直接优化神经网络中的平均 IoU。


另外还有几种值得注意的损失:

  • TopK 损失:用来确保网络在训练过程中专注于复杂样例;

  • 距离惩罚 CE 损失:用在那些难以分割的区域为网络提供指引;

  • 灵敏度-特异性(SS)损失:计算特异性和灵敏度均方差的加权和;

  • Hausdorff 距离(HD)损失:通过卷积神经网络估计 Hausdorff 距离。


数据集

图像分割可能用到的数据集有:

  • Common Objects in COntext—Coco Dataset

  • PASCAL Visual Object Classes (PASCAL VOC)

  • The Cityscapes Dataset

  • The Cambridge-driving Labeled Video Database—CamVid


框架

图像分割领域,可用的框架有如下几种:

  • FastAI 库:给出一张图像,该库能为图像中的物体创建蒙版;

  • Sefexa 图像分割工具:Sefexa 是一个用于图像分割、图像分析、创造基本事实的免费的半自动工具;

  • Deepmask:Facebook 研究中心的 Deepmask 是 DeepMask 和 SharpMask 的 Torch 实现;

  • MultiPath:它是一个来自「用于对象检测的多路径网络」的目标检测网络的 Torch 实现;

  • OpenCV:一个有超过 2500 种的优化算法的开源计算机视觉库;

  • MIScnn:一个医学图像分割的开源库。它仅需数行代码就能用 SOTA 卷积神经网络深度学习模型建立路径;

  • Fritz:Fritz 提供了包括移动设备中的图像分割工具在内的几种计算机视觉工具。


路在何方?

作为一个新入坑的小白,如果以上内容你都掌握了,那恭喜你可以进入下一阶段。但在进阶过程中,有人表示自己遇到了问题:


在这个问题的讨论区,我们可以看到关于「语义分割」这一研究方向的讨论,问题、出路都有人指出,可以为入坑图像分割的小白提供一些洞见。

综合来看,大家认为语义分割目前存在以下问题:

  • 研究进展趋缓,甚至已进入瓶颈期,提升 0.5 mIoU 都非常困难;

  • 数据集受限,少有的几个数据集已经刷到接近天花板;

  • 算力消耗大,学界和一些小型业界团队往往被算力掣肘;

  • 领域内卷,研究同质化严重,很容易被审稿人 diss,不容易中顶会


那么,问题这么多,还有哪些方向值得努力呢?对此,港中文信息工程系助理教授周博磊等资深研究者给出了自己的观点。

周博磊认为,大家之所以觉得语义分割遇到了瓶颈,很大程度上是因为没找对问题。除了一些已经被广泛研究的问题之外,「如何去进行小样本物体检测与分割,如何检测和分割小件物体等都是目前语义分割和物体检测需要去克服的难题。之所以大家没有注意到这些本质问题,是因为现有的数据库把这些问题都规避掉了。」

其他答主也指出了一些尚待研究的方向,比如轻量级语义分割、点云分割、实时分割、如何更有效地利用数据等。喜欢挑战的同学还可以去啃全监督语义分割,但需要丰富的机器资源。

对于致力于深耕图像分割的同学,机器之心之前也报道过一些学习资料,大家可以点击链接查看:


参考链接:
https://towardsdatascience.com/image-segmentation-in-2020-756b77fa88fc
https://www.zhihu.com/question/390783647?utm_source
理论图像分割损失函数语义分割计算机视觉
1
相关数据
周博磊人物

香港中文大学助理教授,MIT博士。研究兴趣:计算机视觉和机器学习,对视觉场景理解和可解释AI系统非常感兴趣。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

图像分割技术

图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像索赋予相同的编号。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

自注意力技术

自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

降采样技术

降采样是数位信号处理领域中的一种多速频数字信号处理(multi-rate digital signal processing)系统中采样率转换(sample rate conversion)技术的一种,或指代用来降低信号采样率的过程,与插值相反——插值用来增加取样频率——降采样通常用于降低数据传输速率或者数据大小。因为降采样会有混叠的情形发生,系统中具有降采样功能的部分称为降频器(decimator)。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

最大池化技术

最大池化(max-pooling)即取局部接受域中值最大的点。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

OpenCV技术

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。

上采样技术

在数字信号处理中,上采样、扩展和内插是与多速率数字信号处理系统中的重采样过程相关的术语。 上采样可以与扩展同义,也可以描述整个扩展和过滤(插值)过程。

语义分割技术

语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类。图像语义分割是AI领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一环。

空洞卷积技术

空洞卷积最大的特性就是扩张感受野,它不是在像素间插入空白像素,而是略过一些已有的像素。当然,我们也可以理解为保持输入不变,并向卷积核中添加一些值为零的权重,从而在计算量基本不变的情况下增加网络观察到的图像范围或序列长度。

实例分割技术

实例分割是检测和描绘出现在图像中的每个不同目标物体的任务。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

医学图像分割技术

医学图像分割是在2D或3D图像内自动或半自动检测边界的过程。

推荐文章
暂无评论
暂无评论~