内容简介:写在前面:
写在前面:
本文根据《优酷技术沙龙——优酷认知实验室专场》现场,阿里巴巴资深技术专家任海兵的演讲《精准快速的物体分割算法》整理成文 。
大家下午好,我是优酷认知实验室的任海兵,大家对 CV 了解的话都知道物体分割确实是 CV 界的经典题目,最近几年随着深度学习的发展,物体分割方面的研究取得了很大的进展。我主要给大家介绍一下,我加入优酷以来,在物体分割算法方面做的一些工作。
首先我会跟大家介绍一下我们为什么会选这个题目。可能很多同学对分割这块不是很了解,我接着给大家讲一下几个基本的概念,方便大家对后面的这几个算法有更深入的了解。后面这几块是我做的一些研究工作:
第一块是我们目前已经基本完成的,是图像的物体分割算法。
第二块是我们目前重点做的,基于类别无关的物体分割算法。
最后我们会介绍一些我的计划,关于视频物体分割算法,因为优酷的主要业务是视频,所以视频物体分割算法是我们研究的重要目标。
我们都知道 AI 的几个要素,就是算法、算力、数据和应用场景,数据是非常重要的,我们大家都知道 imagenet 数据集 ,它是 CV 界的一个非常重要的数据集,直到现在我们还用 imagenet 数据做我们模型的 pretain 。我们算法每次都会快速的迭代更新,但数据是可以沉淀下来,对我们有长期的帮助。但是数据的获取不是说那么容易的事情。如果你有一个很好的数据集,运行一下基本的算法,就可以发一篇很好的 CVPR 的 paper 。 我们可以看一看,就是说我们数据集获取到底有什么问题,有什么难度。
右边两个图是我们经常用的图像分割数据集,最下面这个是微软的 COCO 数据集,它这个标注其实是很不准确的,这个图片还是选的比较好的标注结果。如果我选一些自行车的话,标注准确度就更差了,自行车车轮都是八边形、九边形,那样的车子根本就没法骑。
相对于 MS coco , pascol voc 的标注更加准确 。 但是我们可以看出它有好多白边,白边什么意思呢?白边的意思就是说这是物体的边界,我们的标注不是很准确,研究人员用数据训练模型、计算 Loss 函数的时候,这个白色的区域你要把它忽略掉的。否则你训练出来的模型准确率不会很高。
我们优酷也有自己的数据标准平台,前段时间他们在帮着标注一些区域的精确边缘,我们就发现了标注的难度是很高的。通常的一个物体需要 10-20 分钟才能标出一个精细的边界出来。所以,我们的想法是说能不能用我们的算法来帮助标注人员,使他们能够快速的标注。
我们先给大家看一个视频,这个是 Deep System 公司的智能标注平台,它以标注的车为例。左边这个是一个传统的标注方式,一点点手工去标,右边是用算法赋能的标注平台,我们可以比较一下它们的标注效率。我们先看左边,一个点一个点的去标注。其实车是一个比较好标的物体,因为它是一个非常有规则的物体,而且是刚体,没有很大的变形。跟车相比,人是非常难标的,因为人的头发、发丝,人的衣服的褶皱都是很不规律的,有时候人的身体上还有一些窟窿的地方,都需要标下来。
从上面的视频可以看出,智能标注平台的效率是普通标注的 10 倍。利用 AI 智能标注算法,打上两个点,左上跟右下,就把车给分割出来。
那么我们看看它是怎么来标的。它或者用算法来检测这个物体框,或者说人手工来画物体框,然后用分割算法自动分割出物体边缘。 Deep system 公司用的是 Unet 的分割算法。我们来看看这种方法,看起来好像是很美好的,可以很快就标出物体边缘,实际上有很多问题。一个最重要的问题就是它为什么能把车智能的分割出来?因为它是先训练了一个很好的分割模型,怎么训练这个分割模型?需要事先有足够的这种训练数据来训练。我们为了训练比如说人的一个分割模型的话,你先给我标出 5000 张人的图片,按照传统的方法来标,然后我再给你训练这一个分割模型,然后你用它来智能的标人。如果车的话,再先手工标出 5000 张车的边缘。所以,它是一个跟类别相关的分割算法。它这种标注 工具 就不能够标注事先没有训练过的物体类别,原因是分割算法就不能够来分割这种没有事先训练过的物体的类别。
另外,它只有图象的分割没有视频的分割。
而我们对于智能标注平台的预期是什么?
第一,它要能够自动标注很精细的物体边界,远远要比 CoCo ,要比 Pascal VOC 要精细的很多。
第二,它能够智能的标注一些非训练过类别的物体,这其实是要求分割算法要能够来分割这种非事先训练类别的物体,你要有类别无关的物体分割算法能力。
第三,要有智能的视频物体分割算法。
我们采取的算法策略是:第一步我们为了标注精细的边界,我们希望能有一个精细边界分割能力的图象物体分割算法。第二点,我们希望能够有一个类别无关的物体分割算法。什么叫类别无关呢?就是说我们的算法学了标车、标人,那它还能够给我标一些动物,它能给我标一些鱼,它有一定的类别泛化能力。
另外,根据我们实际的情况,我们采用了少量的人工交互信息。当然我们不是像这种传统的人工交互信息。为了把这个人标出来,传统算法需要在靠近边界的前景区域划很多线,背景区域再划很多线,然后我们再用这种分割算法来进行分割。我们觉得这样太复杂的。我们希望就像刚才那样,画两个点,或者画一条线等等这种,尽量少的人工标注。
第二点,我们希望还要有基于运动信息的类别无关物体分割算法。因为这是对视频里面的物体分割是有极大帮助的。
最后,我会说一下我们后续的计划:快速视频分割算法的一些设想。
我首先给大家介绍几个基本概念。
第一,图象的语义理解。图象的语义理解意思就是说,给一个图片,我们对它的每个象素都要做分类,分的类别是我们事先会定义的。比如说 PASCAL VOC 的数据集,它事先定义了 20 类,人、小轿车、自行车等等这些类别。语义理解这个象素是人的这个类别,它不会分这里面的象素属于哪一个人,对它来讲只要是人就 OK 了,语义理解在自动驾驶里已经是足够了。
它的评估标准一般都是用 IoU 来评估的, IoU 是什么意思呢?有了物体真值的区域和我们分割的结果区域,它们两个交的面积除以它们两个并的面积就得到了 IoU 。如果这两个区域完全不交的话,就是 0 ,如果这两个区域完全重合的话,就是 1 。 1 就是一个最好的结果。
目前比较好的语义理解算法有 FCN 、 Deeplab 系列等。 Deeplab 现在已经有多个版本: V1 、 V2 、 V3 、 V3+ 。目前 V3+ 是最好的语义理解算法。它的优点就是分割结果的边缘比较准确,但是它的缺点当然很明显了,它不能分清楚到底是哪一个物体。我们学术上来说,它就是不能进行物体实例分割。
第二种分割算法是物体实例的分割算法。同样是这个图,我们既要把每一个象素把它的类别给得到,而且我们要知道它是不同实例的。像这张图像上的 5 个人,我们要分清楚这 ABCDE5 个不同的物体实例。
它一般的评估标准是在 IoU 大于 0.5 的时候 AP 值。对每一个实例算一个 IoU ,大于 0.5 就认为它是一个正确的检测。 AP 是我们检测里面常用的,这种通过 Recall rate 、 Precision rate 算出来的一个值。
最经典的算法就是 Mask r-cnn 。 它的缺点其实也是比较明显的,如果我们用过 Mask r-cnn 都知道,它里面核心输出的 Mask 分辨率只有 28×28 象素,所以它的分割边缘精细程度是不够的。
下面我们就着重讲一下我们的算法,我们就先从图片物体分割开始。像我们优酷,人是我们图片里面最重要的信息,所以我们先从人的分割做起,我们希望把人从图片里分割出来。图片物体分割算法不仅对我们的业务有很大帮助,像这张图片是我们的业务团队给我们的,他们希望我们的算法能把图片里的人精细的分割出来,包括这个手指头。
这也是我们自己分割算法的一个结果,我们可以看出它还是蛮不错的。从算法的角度来讲,基于图片的物体分割算法,也是其它分割算法的一个基础。我们可以利用 Transfer Learning 这种方式把它迁移到类别相关的物体分割上面,而且它是一些视频分割算法的重要的模块的基础,比说这个 Mask Propagation 、 Mask refinement 等等。
基于图片物体分割算法,我们首先讲类别相关的物体分割算法。它最大的难点就是整体信息和局部信息的结合。以右边的图为例,这是一张原图,我们希望我们的分割结果能像旁边的真值图像,实际上如果我们过度依赖于整体信息的话,它的分割结果就是左下的图,整体觉得还行,还是一个人的样子,但是它会丢掉一些精细局部的区域。如果我们过分依赖于它的局部特征的话,就有引入很多的毛刺,有些奇怪了。有的时候甚至就不像人了。
我们说一下整体特征是什么,一般的分割网络它都有一个编码、解码的过程。它的高层特征可以理解成为编码 CNN 网络的高层参数,同一类别的高层特征它的离散比较小,意思是说它都非常相似,例如不同人的图象,它的高层特征其实很相似的。不同类别物体的高层特征类间距离很大,重叠性很小。例如人跟车属于不同类别,它们的高层特征之间差别很大。所以,这是很好的一种特征。我们做物体检测的时候,仅仅利用这种高层特征就 OK 了。
低层特征是什么呢?是一些局部特征,也就是 CNN 编码网络的低层网络。从感观上来讲,给你一个小小的局部区域,你能够看出来它是属于哪个物体类别吗?肯定是看不出来,这就说明了同一类别局部特征类内的离散度很大,类间也有一个很大的重叠,它的泛化能力是很差的,你仅仅通过这个局部的信息其实很难做物体的分割。
但是,这个局部特征又非常重要,因为我们想分清楚物体的精细边界,就要把局部体征很好的利用。不知道大家用不用 Photoshop 等这一类工具,我们想把一个物体人工的扣出来,为了扣得准确,常常要把图片放的很大,盯着那个边缘区域仔细看,这说明它的局部特征对于物体精细边界的分割是非常重要的,尤其是对我们优酷而言。我们优酷做的东西是干嘛的?是给人看的,人的肉眼比任何的评估标准都要严格,因为我们的眼睛是非常敏感的。
传统的方法是怎么结合整体和局部特征呢?我们可以看看这个图,这是刚才说的 Unet 的网络,左边是编码网络,右边是个解码网络。它输入图片过来,左上是 CNN 编码网络的低层,坐下是高层。它的解决措施就是加 skip 连接,每个编码层的特征连接到的对应的解码层。
然后,进行 feature concat , 意思是说把他们特征合在一起。一般 feature concat 之前常常会加 1×1 的卷积,把它的通道数要改变一下。比如说改变完了之后是 16 个通道的低层编码特征,这边是 64 个通道的解码特征, feature concat 就把它合起来变成 80 个通道的特征。
这种能有很好的效果,但是还是有一定的问题。我们能感觉到的最直观问题是,如果 testing 集合中有一些局部特征在 training 集合没有出现过或者出现频度很低,它的分类效果也是很不好的。其实本质原因就是我们前面提的,局部特征的泛化能力很差,所以你完全基于 Machine learning 的角度去学习的话,并没有提高泛化能力。我们就举个例子,这个是原图,这个是分割结果,分割结果中很明显少了一大块。为什么少了?我们分析原因就是在 training 集合中没有这种类似的衣服款式,就是它没有学习到这样的局部特征。所以,依靠 Machine learning 的方法并没有真正解决局部特征的泛化能力。
如果我们对这种传统的分割算法了解比较多的话,我们可以知道很多传统分割算法并不是强烈依赖 Machine learning ,很多都是基于一些实际规则信息,就不存在这种局部特征的泛化问题。当然,如果单单用这种方法去分割的话,一个很大的问题就是它太拘于规则了,没有语义知识,有时它会得到各种奇形怪状的结果。
所以,我们提出来一个策略:通过语义理解信息,强制约束传统算法来进行一个分割。语义理解的特征它不是说我们前面分割结果,它既包含了一些整理特征,又包含了一些局部特征。我们采用的就是传统算法里面比较好图分割的策略,它的能量函数有两部分, x 表示它的分割结果, h 是我们加进去的一个高层语义特征。
第一项是 unary energy ,就是说跟每个像素点单独相关的能量。这个是 Pairwise energy ,就指的两个象素之间关系的能量。我们对这两项中加入了一些强制约束,我们额外又加了一个能量项,这样我们就可以达到一个很好的效果。
我们利用 Pascal VOC,S upervizely , 还有包括我们自己的一些数据,来组建了一个人体数据集,我们算法平均 IoU 大于 95% , 95% 是个什么概念呢?我们来看这个分割结果吧,这个结果大概就 96% 、 97% ,就比平均结果稍微好一点。从这个结果来看, 95%IoU 已经是很高的正确率了。所以,从实验结果看,我们的方法已经可以很好的解决了局部特征的泛化能力问题。
同样我们把这个算法往多类别物体分割进行推广,也取得一些还不错的效果。比如说这个图片,人跟摩托车,分的还不错。但是我们发现了一个很大的问题,我们在原来数据上引入了 COCO 的数据, COCO 数据的标注跟 Supervizely 的数据标注是有冲突。又是数据问题,处理那数据问题我们要重新来对数据进行重标、清洗等等,我们又回到了起点。
通过这个事情,我们发现基于传统的类别相关的分割算法是有很大局限性的,我们要加速类别无关分割算法的研究。我们后来又看到了一篇 He Kaiming2018 年的论文,是关于 Mask x R-cnn 。我们都知道 He Kaimin 是 Mask R-cnn 的作者。这个算法引起了我们的共鸣,在这篇论文里面它提出了类别无关的物体分割。现实中,我们能够拿得到有分割标注的数据类别是非常少的,比如说 Pascal VOC 是 20 类, COCO 有 80 类物体,实际上我们的世界里的物体类别,几千类、几万类都是有的,我们不可能为每一类都标注大量的样本去训练模型。
所以,我们一定要做一款与类别无关的分割算法,这一点引起了我们的共鸣。我们结合我们的实际,引入了人工标注信息,让算法知道这个图片里面感兴趣的物体。目前,我们是画一个框,让算法知道我们是对框里的这个人是感兴趣的,你就把这个人给我分出来。另外一个框里面我们是对老虎感兴趣,你把老虎给我分割出来。我们事先训练集没有老虎的图片,人图片应该是非常多的。
物体框作为强约束,使得这种算法能够理解我们的人所关注的兴趣点。
同时我们还在做一些以画线、打点为交互信息的研究,因为画线和打点从理论上来讲,比物体框能够提供更强有力的指导信息,更方便我们的算法找到我们人的关注点。
我们的算法思路其实是来自于去年 CVPR 的一个 Masklab 算法,这个法本身不是类别无关的,它是一个类别相关的实例分割算法,它把实例分割看成了一个多任务学习,检测物体框是一个任务。而在我们场景中,物体框是用户可以直接提供的,所以我们可以改变它的算法策略,把框直接加入到我们的输入参数里面。另外,它这个里面还学了象素的实例中心方向的任务,在我们算法里面,把它作为一个隐含任务,通过物体框来约束得到一个端到端的策略。
除了刚才的分割结果,我们还有很好的一些分割结果,比如说这个是人骑着摩托车,我们画一个摩托车的框,就可以得到摩托车的分割区域,然后画一个人框,得到人的分割结果。这都是我们真正的实验结果。而且它是一个完全实例的分割,比如这个图像里有三个人,我只对右边这个人感兴趣,那么这框一画,就把右边这个人给我分割出来了。
下面给大家讲一下我们刚开始做的基于运动信息的物体实例分割,咱们看一下旁边的视频。这是一个车运动的视频,在这个视频里我们只是在第一帧上面画了一个框,然后它就能够在整个视频里面把这个车的去给我分割开来。
它是利用的运动信息来分割物体。这里面背景的运动模式只是说摄像机的运动造成的;车的运动是由两部分造成的,一部分是车本身的运动,另一部分是摄像机的运动,所以车的运动模式跟背景的运动模式是不一样的。所以这两种不同的运动模式是给了他一个很强的辅助信息。
具体的算法我们可以看一看,这是他网络的框架,这是很有意思的框架,先不看第一行,先从底下看。最下面一行的输入是我们感兴趣的物体,比如说刚才框区域。中间行的输入是我们第二帧的图片,我们希望在第二帧图片里面找到鸟的这样一个区域出来。我把它分成两部分,上面两行其实就是我们的一个分割网络,简单的一个分割网络,这里面有一些 skip 连接, feather concat 要有的都有了。我们再看看下面这两行,下面这两行其实是一个基于深度学习的跟踪网络。这地方是我们目标区域征,这是我们整个图像的,这块是跟踪中 response 图片。所以这种算法把两种方法整个组合在一块了。
最后我们说一下视频的分割算法,视频分割算法领域里面研究最多题目是单一样本的视频分割。意思是在第一帧的图片给出感兴趣物体的区域,后续视频中用算法分割处理。例如旁边这个视频中,第一帧图片里面我们关注这三个物体,那么在视频的后续这里面你要把这三个人都给我分割出来,它是实例级别的分割。这里面不同 instance 之间会有遮挡,而且会有变形等等。后面的视频里有个花的实例,它的前面跟背面的表观变化很大。
德国亚琛大学提出来 PreMVOS 方法,拿到了去年最重要的两个比赛的冠军,一个 Davis osvos, 还有一个 youtube vos 。, Davis 是很难的一个比赛,去年的第二名是商汤,商汤还是 2017 年比赛的第一名,去年的 Davis 第三名是腾讯 AI Lab 。
但是,这个算法有很大一个问题,当然是对我们来讲是一个很大的问题。就是它计算时间超长,它对每一个视频的每个实例都要 Fine tune Mask R-CNN 的网络、 DeeplabV3+ 的网络以及 REID 网络。所以,一个视频来之后,先花半个小时到一个小时 Fine tune 三个模型,然后再来做视频物体分割。这对我们标注平台是不可能的。
所以,我们预期是一个快速、高效、精准的视频分割算法。首先精准的物体边缘分割,我们计划采取的策略就是我们前面所说的基于语义理解约束的分割算法。
第二个是相对于 OSVOS 需要第一帧的人工标注的图片,我们希望能够采取尽量少的人工标注,能够算法自动生成初始帧实例分割区域。具体算法是我们刚才所说的基于交互信息的类别无关物体分割算法。
第三个就是一个快速的视频分割策略,不能有 在线学习 ,在线学习时间太长了,我们希望借助于基于运动信息的物体分割算法,当然要加上视频分割里常用的一些策略,比如说像 Mask propagation 、 Maskrefinement 等等。
以上就是我的分享,谢谢大家。
—————————我是可爱的的分割线————————
优酷视频增强和超分辨率挑战赛正在进行中
丰厚奖金,高手云集
经典问题,全新挑战
基于应用场景的复合性命题
业界最大高清多类别视频数据集等你来战!
点击阅读原文直达大赛官网了解更多哦~
以上所述就是小编给大家介绍的《精准快速的物体分割算法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 大讲堂 | 物体检测算法的近期发展及开源框架介绍
- 识别迷雾中的物体,谷歌提出最新目标检测算法Context R-CNN
- 香港中文大学陈恺:物体检测算法的近期发展及开源框架介绍 | 大讲堂第 102 期
- 旷视发布通用物体检测数据集 Objects365,开启 CVPR 物体检测挑战赛
- c++ 投掷活动物体
- WebGL之物体选择
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。