没有人工标注,如何实现互联网图像中的像素级语义识别?

简介: 来自南开大学的程明明教授将在本文中展开介绍在没有人工标注的情况下,如何实现互联网图像中的像素级语义识别。

“天街小雨润如酥,草色遥看近却无。”

image

从韩愈的这两句诗可以看出,人对图像内容的语义理解,并不依赖于细粒度监督信息做辅助。
与之相比,在机器学习领域,现阶段的语义分割任务,则依赖于大量的精细标注数据。互联网,作为最为丰富的数据源,吸引着相关从业人员的目光,然而要想利用这些数据,则面临着巨大的标注压力。
因此,引发了两点思考:第一,能否结合关键词信息作辅助,从web中直接学习知识,而不需要精细的人工标注呢?第二,能否利用类别无关的线索,在标注少量类别的数据集上训练好后,将其泛化到其他所有类别物体呢?
本文中,来自南开大学的程明明教授,将从这两点展开介绍目前的研究进展。
文末提供文中算法代码及参考文献的下载链接。

image

image

传统像素级语义理解方法,通常需要大量精细标注的图像训练。上图所示的是ADE20K数据集中的一个例子,该数据集包含21万个精细标注的物体的图像,是由Antonio教授的母亲花了很长时间标注的。

image

Antonio教授曾在CVML2012上开玩笑的说:“我的母亲标注了这样一个优质的数据集,真希望我有更多的母亲”。这是一句玩笑话,但也说明了构建数据集的重要性,以及构建它所需时间和精力之大。

image

回顾我们的成长过程,从小到大,我们的父母从未给我们做过如此精细的标注,去帮助我们识别和认知周围的世界。通常的学习方式是,父母给我们看一朵花并告诉我们这是朵花,然后我们就能很轻易的知道哪些区域、哪些像素对应着这朵花。那么我们是怎样利用这些信息,学习到每个像素所代表的语义内容呢?同时,这样一种信息能否帮我们更好的去理解图像的内容,对图像进行精细的语义理解?

image

我们的研究内容就是怎样去利用类似机制移除对精细标注信息的依赖。在生活中,当我们想要了解一种我们不熟悉的物体时,比如一种水果,通常我们只需要在网上搜索一下,观察几张图片,就能对这种水果有充分的认识,并能轻松识别对应目标及目标区域。能不能让计算机拥有从web中直接学习知识的能力,而不需要精细的人工标注呢?

image

可以帮助像素级语义理解的相关的工作有很多,比如说显著性物体检测:给定一张图像,发现并找到图像中的显著性物体,这些信息是很关键的。举个例子,当我们使用关键词在网上检索图像的时候,通常检索的图像和关键词之间有很强的相关性,通过显著性目标检测,我们可以假设检测结果对应的显著性区域语义信息就是其关键词,当然这种假设是存在噪声或者说错误的。

image

除了显著性目标(saliency)检测以外,还有图像的边缘检测,图像的过分割(over segmentation)等信息。这些信息都是类别无关的,可以从很少的数据集中训练出一个很好的通用模型。如边缘检测,我们可以从只有500个数据的BSD数据集中训练出一个很好的边缘检测模型。边缘能够很好描述物体的边界,从而能够减少对精细标注的依赖。同样的,过分割以及显著性检测也有同样的效果。一个直接的想法就是能否利用这些类别无关的线索(cues),在标注少量类别的数据集上训练好后,将其泛化到其他所有类别物体呢?哪怕是我们没有见过的物体,在不知道该物体类别的情况下,我们也能找到该物体所对应的区域。

image

沿着这个想法,有了我们的第一个工作:显著性物体检测,该工作发表在2017 CVPR以及2018 TPAMI上。下面我们介绍下该工作。

image

该工作的核心思想是以多尺度Deeply Supervised的方式,把不同尺度的信息融合起来,从多个尺度去检测显著性物体的区域。由于CNN中底层的特征和高层特征分别更擅长做细节描述和全局定位,而不够全面,因而难以获得高质量的分割结果。我们通过将顶层信息往下传递的方式去丰富底层的信息,这样既能够很好的定位又能保持细节。

image

这里是一些示例结果。我们的重点不是想说明怎样去做显著性物体检测,而是想传达一个重要的信息,即通过显著性物体检测,我们能够将图像中的显著性物体分割得很好。这个发现能帮助机器直接从web学习像素级语义分割。

image

上图展示了我们的方法在不同场景下的检测结果,可以看到,即使在对比度很低、物体很复杂的情况下,我们的显著性物体检测方法仍能很好地找到物体的区域。

image

同时,在常见的数据集里面,我们算法的Fβ性能指标都超过了90%。为了验证算法的泛化能力,我们在不同数据集之间进行交叉验证,实验结果表明,我们的显著性目标检测方法,能够从少量类别标注(如1000类)的数据中学到类别无关的工具,而这种工具在不知道物体的类别的情况下,也能很好的将其从图像中分割出来。

image

该方法也存在一些不足,例如,在场景特别复杂(如摩托车)或者显著性物体特别含糊(如猫的右半边)的情况下,我们的方法也会失败。

image

前文提到,我们的方法在多个数据集上的Fβ性能均能超过90%,能够很好的定位出显著性物体。上图是我们这个工作的一个应用,它被应用于华为手机的智能拍照:在拍照的过程中自动找到前景目标,使得相机能够实现大光圈拍照。而传统大光圈拍照需要用到单反相机(额外物理负担)来得到前清后虚、虚实结合的艺术效果。

image

另外一个很重要的类别无关信息是边缘检测。边缘有助于定位物体的位置。如上图所示,在不知道动物具体类别的情况下,只需知道图像中有动物(关键词级别的label),我们就能找到动物所对应的区域。下面我们介绍发表在CVPR 2017上的工作(RCF)。

image

RCF的核心思想是利用丰富的多尺度的特征去检测自然图像中的边缘。在早期分类任务中,中间层往往被忽略掉了,后来人们通过1x1卷积层对中间层加以利用。但这些工作只使用了每个stage的最后一个卷积层,实际上每个卷积层对于最终结果都是有用的。RCF将所有卷积层通过1x1卷积层进行融合。这种融合有效的提升了边缘检测的效果。

image

举个例子,在图像中的稻草区域,传统的方法如canny算子等在这些区域都会有非常高的响应,但RCF能够很好的抑制掉这些响应。还有如沙发,茶几等人都很难观测到边缘的区域,RCF都能鲁棒的检测到边缘,其结果甚至比原图结构看的更清晰。这给我们实现直接从Web中学习提供了一个基础。

image

作为计算机视觉最早开始研究的问题之一,边缘检测经历了50多年的发展,但RCF是第一个能够做到实时检测,同时性能超过伯克利数据集上的人工标注的工作。当然这并不意味着RCF超过了人类,只要给人足够的时间仔细思考,人能标注的更好,但RCF无疑算是取得了重大突破。而且训练如此强大的边缘检测模型,仅仅使用了一个含有500张图像的数据集,这对于我们直接从Web学习是非常有启发的。

image

好的过分割结果,能够有效的辅助像素级语义理解(特别是在人工标注数据少的情况下)。过分割(over segmentation)也是一种重要的类别无关的信息,上图的过分割结果虽然形似语义分割(semantic segmentation),但又有本质的区域。在语义分割中,每一个像素都有明确的语义标签,因此我们可以通过神经网络去学习每个像素具体的语义信息。而过分割只是将图像划分成很多不同的区域,每个区域对应一个标签。这些标签没有确定的语义信息,因此给定一幅图像,我们无法确定每个图像能产生多少的区域,也不能确定每个图像能产生多少标签(100, 1000 或1000?),这个问题给学习带来了很多大的困难。下面介绍我们发表在IJCAI2018上的工作。

image

我们的方法并不直接把像素和标注对应起来,而是先将图像进行超像素化,以提高计算速度,然后提取超像素的卷积特征,再将每个超像素的特征pooling为固定长度的向量,最后学习每两个超像素之间的距离。当超像素之间的距离小于一个阈值的时候将其合并(merge)。相比传统方法,我们的方法简单、有效,取得了很好的结果,且能实时处理(50fps/s)。这也给直接从互联网学习像素级语义理解提供了支撑。

image

有了上述提到的类别无关的底层视觉知识后,我们可以对图像做很多有意思的分析。例如,我们使用关键词在互联网上检索图像,通过显著性目标检测,可以检测出物体在图像中大概的位置,然后通过边缘、过分割等信息可以进一步精确物体的区域信息。最终可以生成proxy groundtruth(GT),这种GT不是人工标注的,是我们用自动化的方法对互联网图像GT的一种猜测。这种猜测很可能覆盖了关键词在图像中对应的区域,当然这些区域中会存在很多误差。例如对上图中的自行车进行分割时,我们的方法往往把人也标记出来了,因为通常自行车是和人一起出现的。

那么怎么去剔除掉这些误差呢?

image

整个方法的流程如下:1利用关键词检索得到大量图像;2利用底层视觉知识,得到图像对应proxy GT;3利用NFM去除proxy GT中的噪声区域对训练过程的影响;4最终通过SSM部分得到语义分割结果。

image

NFM(Noise Filtering Module):噪声滤波模块,给定输入图像,利用图像级的标注以及相应的heuristic map,过滤图像Proxy GT中的噪声区域。

image

上图中红色区域为识别出来的噪声区域。

image

NFM作为一种辅助训练的方法,只在测试阶段使用。

image

我们通过实验,分别验证了底层视觉知识的重要性。实验分为两类,Weak表示图像只有一个关键词级别的标注,WebSeg则表示图像没有任何人工标注。实际上,底层视觉知识有很多类,我们这里只展示了3类,分别是Saliency object Detection(sal),Edge,Attention(att)。Attention是一种自顶向下的信息,需要有关键词级别的标注信息,由于WebSeg没有使用任何人工标注,所以在WebSeg的实验中没有attention。

image

同样,我们还验证了NFM的有效性。可以看出,NMF能够提升IoU准确度。

image

在训练过程中,训练的数据可以分为三类,D(S):图像内容简单,每个图像有一个人工审核过的图像级标注;D(C):图像内容复杂,每个图像有多个审核过的图像级标注;D(W):图像内容不定,每个图像有一个未经审核的标注。

上表中列出了不同训练集组合对应的不同性能。

image

使用CRF能进一步提高结果的精度。

image

上图是我们的实验结果,从左至右,分别可以看出NFM以及CRF的重要性。总体而言,我们的方法能直接从Web图像中学习并得到很好的语义分割的结果。

image

上表是在PASCAL 2012上的实验结果,在使用了大量的底层视觉知识后,我们方法平均IOU能达到63%,相比于去年CVPR上最好结果的58%有着很大的提升。

image

另一很有意义的结果是,在不使用显式人工标注的情况下,我们仍然能取得57%的结果。这一结果实际上超过了CVPR 2017中很多弱监督的方法。事实上,弱监督信息的标注也是很花费时间和精力的,相比而言,我们的方法则无需要任何人工标注。在直接让机器从Web学习像素级语义分割这个方向上,我们只是进行了初步的尝试,但它能在PASCAL VOC这个量级的数据集上能超过CVPR 2017大部分弱监督的结果,是很令人兴奋的。长远来看,这是一个很有意义的研究方向。

image

总结整个报告,我们提出了一个很有意义且很有挑战性的视觉问题:即在没有人工标注的情况下,怎样直接从Web中学习语义分割。同时我们还提出了一种在线的噪声滤波机制,让CNN学习如何剔除Web学习结果中的噪声区域。整个工作的目的在于:降低或移除像素级语义理解任务对精细标注数据的依赖性。

image

我们目前只是触及了纯web式监督学习领域的皮毛,后续还有很多值得研究的工作,例如:

  1. 怎样把图像有效利用起来,目前的工作,对Web图像不分好坏直接处理,没有做更多的学习,我们要思考是否能够通过学习的方式提升web图像的使用效率;
  2. 又或者是否可以把底层视觉知识和其对应的关键词关联起来,如Salient Object Detection,之前是没有与其对应的标注联系起来的,这种相关性能否进一步提升结果?
  3. 以及,提升类别无关的底层视觉知识本身的性能,如边缘检测、过分割等;
  4. 此外还有其他一些纯粹的Web监督的任务。

image

我们还做了许多与底层视觉知识相关的工作,如Over-segmentation。

image

Salient-Instance Segmentation,也是一种类别无关的信息,虽不知道物体类别,但它能把显著的instance分割出来。

原文发布时间为:2018-07-12
本文作者:程明明
本文来自云栖社区合作伙伴“计算机视觉life”,了解相关信息可以关注“计算机视觉life

相关文章
|
机器学习/深度学习 自然语言处理 算法
浅述几种文本和图像数据增强的方法
在现实场景中,我们往往收集不到太多的数据,那么为了扩大数据集,可以采用数据增强手段来增加样本,那么平常我们应该怎么做数据增强的呢? 什么是数据增强 数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值。
|
机器学习/深度学习 传感器 编解码
一文详解视觉Transformer在CV中的现状、趋势和未来方向(分类/检测/分割/多传感器融合)(中)
本综述根据三个基本的CV任务和不同的数据流类型,全面调查了100多种不同的视觉Transformer,并提出了一种分类法,根据其动机、结构和应用场景来组织代表性方法。由于它们在训练设置和专用视觉任务上的差异,论文还评估并比较了不同配置下的所有现有视觉Transformer。此外,论文还揭示了一系列重要但尚未开发的方面,这些方面可能使此类视觉Transformer能够从众多架构中脱颖而出,例如,松散的高级语义嵌入,以弥合视觉Transformer与序列式之间的差距。最后,提出了未来有前景的研究方向。
一文详解视觉Transformer在CV中的现状、趋势和未来方向(分类/检测/分割/多传感器融合)(中)
|
机器学习/深度学习
深度学习数据增强方法-内含(亮度增强,对比度增强,旋转图图像,翻转图像,仿射变化扩充图像,错切变化扩充图像,HSV数据增强)七种方式进行增强-每种扩充一张实现7倍扩)+ 图像缩放代码-批量
深度学习数据增强方法-内含(亮度增强,对比度增强,旋转图图像,翻转图像,仿射变化扩充图像,错切变化扩充图像,HSV数据增强)七种方式进行增强-每种扩充一张实现7倍扩)+ 图像缩放代码-批量
|
5月前
|
传感器 机器学习/深度学习 编解码
智能驾驶--语义分割 公开数据集 汇总
本文整理了10个质量较好,数据集较大,比较新的,图像语义分割的公开数据集;主要服务于智能驾驶方向(辅助驾驶、自动驾驶等)。
152 0
|
3月前
|
机器学习/深度学习 PyTorch 数据处理
零基础入门语义分割-地表建筑物识别 Task2 数据扩增-学习笔记
零基础入门语义分割-地表建筑物识别 Task2 数据扩增-学习笔记
37 1
|
5月前
|
算法 自动驾驶 开发者
Cityscapes数据集(智能驾驶场景的语义分割)
面向智能驾驶(辅助驾驶、自动驾驶)场景下的语义分割任务,由于非结构化场景的复杂性,是一个非常具有挑战性的任务,所以有许多研究者和研究机构公开了很多相关的数据集推动语义分割领域的发展。本文主要介绍Cityscapes数据集。
110 0
|
5月前
|
算法
CamVid数据集(智能驾驶场景的语义分割)
CamVid 数据集是由剑桥大学公开发布的城市道路场景的数据集。CamVid全称:The Cambridge-driving Labeled Video Database,它是第一个具有目标类别语义标签的视频集合。 数据集包 括 700 多张精准标注的图片用于强监督学习,可分为训练集、验证集、测试集。同时, 在 CamVid 数据集中通常使用 11 种常用的类别来进行分割精度的评估,分别为:道路 (Road)、交通标志(Symbol)、汽车(Car)、天空(Sky)、行人道(Sidewalk)、电线杆 (Pole)、围墙(Fence)、行人(Pedestrian)、建筑物(Building)
150 0
|
8月前
|
PyTorch 算法框架/工具
语义分割数据增强——图像和标注同步增强
其中常见的数据增强方式包括:旋转、垂直翻转、水平翻转、放缩、剪裁、归一化等。
355 0
|
8月前
|
JSON 算法 数据格式
优化cv2.findContours()函数提取的目标边界点,使语义分割进行远监督辅助标注
可以看到cv2.findContours()函数可以将目标的所有边界点都进行导出来,但是他的点存在一个问题,太过密集,如果我们想将语义分割的结果重新导出成labelme格式的json文件进行修正时,这就会存在点太密集没有办法进行修改,这里展示一个示例:没有对导出的结果进行修正,在labelme中的效果图。
84 0
|
10月前
|
安全 知识图谱
三维点云的开放世界理解,分类、检索、字幕和图像生成样样行
三维点云的开放世界理解,分类、检索、字幕和图像生成样样行
187 0