【云驻共创】华为云AI实战营:视频分析
前言:
AI正在改变我们的生活,正在改变我们身边的各行各业,但是这条通往智能世界的路并不平坦,其中一个巨大鸿沟就是AI人才的稀缺。在中国庞大的IT从业群体,AI开发者缺口达百万级。
AI将成为全民普及性的技能,所以今天华为云EI为大家带来《2020华为云AI实战营》免费课程,大幅降低AI学习门槛,帮助庞大的软件开发者群体快速掌握AI技能,把AI用起来。
课程主要内容包括图像分类、物体检测、图像分割、人脸识别、OCR、视频分析、自然语言处理和语音识别这八大热门AI领域的基础知识、经典数据集和经典算法的介绍,每章课程都是实战案例,模型训练、测试、评估全流程覆盖,配合代码讲解和课后作业,帮助您掌握八大热门AI领域的模型开发能力。
2020年华为云AI实战营 第五章 视频分析
一、视频分析简介
视频分析是计算机视觉的一个分支,目的是利用计算机视觉技术理解或处理视频,在安防监控和视频创作场景下有十分广泛的应用。视频分析相关的研究方向有很多,本文将列举常见的一些研究方向。
视频分类
视频分类是指给定一个视频片段,比如一个10秒短视频,由算法对视频包含的内容进行分类,比如动物、物体、自然现象和人体动作。其中,视频人体动作分类的研究最为热门,常见的数据集有HMDB51、UCF-101和Kinetics。
1.1 HMDB51
HMDB51是布朗大学在2011年发布的视频数据集,视频来源于电影、公共数据库和YouTube等网络视频库。HMDB作为一个人类动作视频数据,包含6849段视频剪辑,51个人类动作类别,每类动作至少包含101段视频剪辑。HMDB51数据集官网。
动作主要分为五类:
- 一般面部动作微笑,如:大笑,咀嚼,交谈。
- 面部操作与对象操作:如:吸烟,吃,喝。
- 一般的身体动作:如:侧手翻,拍手,爬。
- 与对象交互动作:如:梳头,抓,运球。
人体动作:如:击剑,拥抱,踢某人。
1.2 UCF-101 动作识别数据集
UCF-101是一种现实动作视频的动作识别数据集,来源于YouTube,一共有101个动作类别,13320个视频。UCF101在动作和表达上的多样性丰富,考虑到相机的移动,目标的表现和动作,目标的大小,视角,北京,光照条件等等,所以数据集充满了挑战性。UCF-101数据集官网。
UCF-101的视频类别可以分为25组,每一组包括4-7种视频动作,同组视频有相同的特征,比如相似的背景,相似的视角等等。
所有的视频类别可以分为5类: 1)人-对象 交互 2)只有动作 3) 人-人交互 4)乐器演奏 5)运动
1.3 Kinetics 数据集
ActivityNet是一项视频分类的比赛,与图像理解的ImageNet比赛类似,吸引了大量学者的关注和参与。在行为理解比赛项目下,使用的数据集为Kinetcs。数据集由Google的DeepMind团队提供,2017年是第一届比赛,有400个类别,20多万数据,2018年又对数据集进行了扩增,有600个类别,共50万左右的视频,截止到2020年2月,现在的Kinetics最新版本为Kinetics-700,包含了将近650,000 个视频的URL,覆盖了700个人物动作类型,所有的视频来自YouTube网站,视频至少为10秒。Kinetics数据集在视频分析领域的地位就相当于ImageNet图像分析领域的地位,是一个真正大规模的视频数据集。Kinetics-700数据集官网。
2. 视频物体分割
视频物体分割就是从视频所有图像中将感兴趣物体的区域完整地分割出来。图像物体分割也是将物体的区域分割出来,但视频与图像的不同之处在于视频是动态的,同一个目标在同一个视频中有不同的形态和光照条件,而且视频相邻帧之间的图像有很大的相似性,因此如何从一个视频中连续地对目标进行分割是视频物体分割的主要内容。常见的数据集有DAVIS和YoutubeVOS。
2.1 DAVIS
DAVIS全称为Densely Annotated VIdeo Segmentation,也称DAVIS挑战赛,从2016年开始每年举办一次挑战赛,到2019年,已经有半监督视频物体分割、交互式视频物体分割和无监督视频物体分割三个挑战任务。DAVIS官网提供DAVIS 2016和DAVIS 2017两份数据,DAIVS 2016有50个视频序列,DAVIS 2017有90个视频序列,每个视频序列中有几十到上百张图片不等。DAVIS数据集的标注并不是对图片中每个物体都做了标注,而是只对图片中容易捕获人眼注意力的“感兴趣物体”做了标注,如下图所示。
2.2 YouTube-VOS
YouTube-VOS是一个比DAVIS更大的视频物体分割数据集,从2018年开始发布,至今已包含4453个视频片段、94个物体类别、7800多个物体。YouTube-VOS也发布了挑战赛,2019年有两个挑战任务,分别是半监督视频物体分割和视频实例分割,后一个任务除了需要预测物体分割区域外,还要预测物体的类别。YouTube-VOS的数据集样例如下图所示。
3. 视频恢复与增强
视频恢复与增强包含的方向有很多,比如去雾、去噪、去模糊、超分辨率、去马赛克、色彩校正和污损区域修补等。较热门的方向是去模糊和超分辨率,NTIRE 2019和PIRM2018就有举办相关的挑战赛。
图像的模糊一般是由相机的抖动导致的,这个抖动可以看做加原图上加了一个函数变换,图像去模糊就是找到这个函数反变换,使模糊的图像变得清晰,如上图所示是EDVR (Video Restoration with Enhanced Deformable Convolutional Networks) 算法的去模糊效果,第一列是输入的模糊图像,第2~5列是其他算法的去模糊效果,最后一列是EDVR算法的去模糊效果,可以看到效果是很不错的。
图像超分是指将低分辨率的图重建成高清的图,研究的比较多的是四倍超分,举个例子就是将一个540p的视频重建成4K的超高清视频,这个技术的商业应用前景是十分可观的。如上图所示是EDVR算法的超分效果,GT是指真实的清晰原图,EDVR(Ours)是EDVR算法的超分效果,可以看出跟GT是非常接近的。
4. 视频指纹
视频指纹是根据视频内容生成一串可唯一标识当前视频的指纹字符,具有高稳定性,有效避免视频文件的格式转换、编辑、裁剪拼接、压缩旋转等操作的影响,可用于视频相似查重、视频版权、视频快速审核、广告识别、数字版权管理等多种场景。
4.1 视频相似查重
建立独立的视频指纹库,将查询视频与该库中的视频指纹进行快速比对,实时召回重复视频或重复片段。防止媒资库中内容重复存储,提高媒资存储效率,并且还可以减少内容分发和个性化推荐结果中相同或相似视频过多出现的现象,提升用户体验。
4.2 视频版权
能够准确识别编辑变换后视频、自媒体再创作视频与原始版权视频之间的相似关系。解决金融、教育、综艺、短视频网站等自有版权视频维权问题,为视频内容交易生态提供版权识别技术,防止侵权视频侵害原创作者和平台利益。
4.3 视频快速审核
对违规视频构建和维护视频指纹黑库。将待比对视频快速进行指纹比对并判断是否有违规内容。相比传统的内容审核,能够有效提高大量视频审核效率,在保障准确性的同时有效降低审核成本。
4.4 广告识别
针对广告投播,构建和维护广告指纹库。对待识别广告视频,从其中找出广告库中广告片段出现的位置,对广告进行监播和高效识别。支撑客户广告动态分成业务生态,对广告投放的时间、次数等进行播控管理,保障广告投放方和投播平台的利益。
4.5 数字版权管理
将视频指纹作为数字水印的一部分嵌入到视频中,当视频版权发生纠纷时,可根据视频指纹识别原始视频,鉴别篡改,追踪来源,辨别原始版权归属。
5. 视频结构化
视频结构化是指根据视频画面中呈现出的人、车、物、颜色、数字及其他属性特征,建立视频大数据结构化平台,视频被结构化后,存入相应的结构化数据仓库,不仅使得存储的容量极大降低,还可以进行大数据分析。比如华为联合深圳交警一起做了深圳市主要交通路口的视频车流数据结构化,对路口拍摄的车流视频进行分析,统计车流的信息,从而可以进行大数据分析,对治理交通拥堵、改善交通质量提供了很大的帮助。如下图所示是华为云交通智能体的交通大数据分析示意图,基于这些大数据,可以分析各路口的在途车数、平均车速和拥堵指数。
6. 视频摘要
视频摘要分为静态视频摘要和动态视频摘要,静态视频摘要是从一个视频中抽取关键帧,融合成一张海报,动态视频摘要是指从一个视频中抽取多个精彩的片段,然后组合成一个简短的视频,比如电影上映前的几分钟宣传片就是属于动态视频摘要。
在如今视频类应用快速爆发的时代,每天都有海量的视频上传,如果一个视频的封面可以自动先播放一段包含精彩片段的视频摘要,那它就更有可能吸引用户进行点击,但是海量的视频是不可能都由人工来提取视频摘要的,因此利用AI算法来提取视频摘要就成了一个很重要的需求。
当前视频摘要的公开数据集主要有以下5个:
(1)MED Summaries,总共有160个视频,10种事件类型;
(2)TVSum Dataset,总共50个视频;
(3)UT Egocentric Dataset,总共4个视频,每个视频长度为3~5小时;
(4)VSUMM,总共100个视频,每个视频长度为1~10分钟;
(5)SumMe,总共25个视频,每个视频有至少15个人工提取的摘要。
视频摘要的代表性算法是Query-adaptive Video Summarization via Quality-aware Relevance Estimation。
7. 视频生成
视频生成是根据几张静态的图片生成一个简短的视频,这是一个有趣的技术但目前并未大规模普及应用。代表性算法是DeepStereo,该算法可以猜测出图像的缺失部分,在空白处创造出源图片中没有的新图像,如下图所示是算法的demo。
关于视频分析的AI技术就介绍这些,其实在视频的采集、制作、编码、传输、点播和用户交互方面还有很多AI算法的创新,鼓励大家自行查找相关资料进行学习。
动手实践
点击鼠标右键,在新标签页中打开此链接https:l/nbviewer.jupyter.orgl,打开新的网页再依次右键复制下面的实践案例地址、粘贴到新打开网页的搜索框中,按回车进行访问。
视频分析实践案例地址:
总结:
视频分析是计算机视觉的一个分支,常见研究方向有:
- 视频分类
- 视频物体分割
- 视频恢复与增强
- 视频指纹
- 视频结构化
- 视频摘要
- 视频生成
二、使用C3D和I3D模型实现视频动作识别
2.1视频动作识别
视频动作识别是指对一小段视频中的内容进行分析,判断视频中的人物做了哪种动作。视频动作识别与图像领域的图像识别,既有联系又有区别,图像识别是对一张静态图片进行识别,而视频动作识别不仅要考察每张图片的静态内容,还要考察不同图片静态内容之间的时空关系。比如一个人扶着一扇半开的门,仅凭这一张图片无法判断该动作是开门动作还是关门动作。
视频分析领域的研究相比较图像分析领域的研究,发展时间更短,也更有难度。视频分析模型完成的难点首先在于,需要强大的计算资源来完成视频的分析。视频要拆解成为图像进行分析,导致模型的数据量十分庞大。视频内容有很重要的考虑因素是动作的时间顺序,需要将视频转换成的图像通过时间关系联系起来,做出判断,所以模型需要考虑时序因素,加入时间维度之后参数也会大量增加。
得益于PASCAL VOC、ImageNet、MS COCO等数据集的公开,图像领域产生了很多的经典模型,那么在视频分析领域有没有什么经典的模型呢?答案是有的,本案例将为大家介绍视频动作识别领域的经典模型并进行代码实践。
由于本案例的代码是在华为云ModelArts Notebook上运行,所以需要先按照如下步骤来进行Notebook环境的准备。
进入ModelArts
点击如下链接:https://www.huaweicloud.com/product/modelarts.html , 进入ModelArts主页。点击“立即使用”按钮,输入用户名和密码登录,进入ModelArts使用页面。
进入ModelArts
点击如下链接:https://www.huaweicloud.com/product/modelarts.html , 进入ModelArts主页。点击“立即使用”按钮,输入用户名和密码登录,进入ModelArts使用页面。
创建ModelArts notebook
下面,我们在ModelArts中创建一个notebook开发环境,ModelArts notebook提供网页版的Python开发环境,可以方便的编写、运行代码,并查看运行结果。
2.2视频动作识别模型介绍
在图像领域中,ImageNet作为一个大型图像识别数据集,自2010年开始,使用此数据集训练出的图像算法层出不穷,深度学习模型经历了从AlexNet到VGG-16再到更加复杂的结构,模型的表现也越来越好。在识别千种类别的图片时,错误率表现如下:
在图像识别中表现很好的模型,可以在图像领域的其他任务中继续使用,通过复用模型中部分层的参数,就可以提升模型的训练效果。有了基于ImageNet模型的图像模型,很多模型和任务都有了更好的训练基础,比如说物体检测、实例分割、人脸检测、人脸识别等。
那么训练效果显著的图像模型是否可以用于视频模型的训练呢?答案是yes,有研究证明,在视频领域,如果能够复用图像模型结构,甚至参数,将对视频模型的训练有很大帮助。但是怎样才能复用上图像模型的结构呢?首先需要知道视频分类与图像分类的不同,如果将视频视作是图像的集合,每一个帧将作为一个图像,视频分类任务除了要考虑到图像中的表现,也要考虑图像间的时空关系,才可以对视频动作进行分类。
为了捕获图像间的时空关系,论文I3D介绍了三种旧的视频分类模型,并提出了一种更有效的Two-Stream Inflated 3D ConvNets(简称I3D)的模型,下面将逐一简介这四种模型,更多细节信息请查看原论文。
旧模型一:卷积网络+LSTM
模型使用了训练成熟的图像模型,通过卷积网络,对每一帧图像进行特征提取、池化和预测,最后在模型的末端加一个LSTM层(长短期记忆网络),如下图所示,这样就可以使模型能够考虑时间性结构,将上下文特征联系起来,做出动作判断。这种模型的缺点是只能捕获较大的工作,对小动作的识别效果较差,而且由于视频中的每一帧图像都要经过网络的计算,所以训练时间很长。
旧模型二:3D卷积网络
3D卷积类似于2D卷积,将时序信息加入卷积操作。虽然这是一种看起来更加自然的视频处理方式,但是由于卷积核维度增加,参数的数量也增加了,模型的训练变得更加困难。这种模型没有对图像模型进行复用,而是直接将视频数据传入3D卷积网络进行训练。
旧模型三:Two-Stream 网络
Two-Stream 网络的两个流分别为1张RGB快照和10张计算之后的光流帧画面组成的栈。两个流都通过ImageNet预训练好的图像卷积网络,光流部分可以分为竖直和水平两个通道,所以是普通图片输入的2倍,模型在训练和测试中表现都十分出色。
光流视频 optical flow video
上面讲到了光流,在此对光流做一下介绍。光流是什么呢?名字很专业,感觉很陌生,但实际上这种视觉现象我们每天都在经历,我们坐高铁的时候,可以看到窗外的景物都在快速往后退,开得越快,就感受到外面的景物就是“刷”地一个残影,这种视觉上目标的运动方向和速度就是光流。光流从概念上讲,是对物体运动的观察,通过找到相邻帧之间的相关性来判断帧之间的对应关系,计算出相邻帧画面中物体的运动信息,获取像素运动的瞬时速度。在原始视频中,有运动部分和静止的背景部分,我们通常需要判断的只是视频中运动部分的状态,而光流就是通过计算得到了视频中运动部分的运动信息。
新模型:Two-Stream Inflated 3D ConvNets
新模型采取了以下几点结构改进:
- 拓展2D卷积为3D。直接利用成熟的图像分类模型,只不过将网络中二维$ N × N $的 filters 和 pooling kernels 直接变成$ N × N × N $;
- 用 2D filter 的预训练参数来初始化 3D filter 的参数。上一步已经利用了图像分类模型的网络,这一步的目的是能利用上网络的预训练参数,直接将 2D filter 的参数直接沿着第三个时间维度进行复制N次,最后将所有参数值再除以N;
- 调整感受野的形状和大小。新模型改造了图像分类模型Inception-v1的结构,前两个max-pooling层改成使用$ 1 × 3 × 3 $kernels and stride 1 in time,其他所有max-pooling层都仍然使用对此的kernel和stride,最后一个average pooling层使用$ 2 × 7 × 7 $的kernel。
- 延续了Two-Stream的基本方法。用双流结构来捕获图片之间的时空关系仍然是有效的。
最后新模型的整体结构如下图所示:
好,到目前为止,我们已经讲解了视频动作识别的经典数据集和经典模型,下面我们通过代码来实践地跑一跑其中的两个模型:C3D模型( 3D卷积网络)以及I3D模型(Two-Stream Inflated 3D ConvNets)。
C3D模型结构
我们已经在前面的“旧模型二:3D卷积网络”中讲解到3D卷积网络是一种看起来比较自然的处理视频的网络,虽然它有效果不够好,计算量也大的特点,但它的结构很简单,可以构造一个很简单的网络就可以实现视频动作识别,如下图所示是3D卷积的示意图:
a)中,一张图片进行了2D卷积, b)中,对视频进行2D卷积,将多个帧视作多个通道, c)中,对视频进行3D卷积,将时序信息加入输入信号中。
ab中,output都是一张二维特征图,所以无论是输入是否有时间信息,输出都是一张二维的特征图,2D卷积失去了时序信息。只有3D卷积在输出时,保留了时序信息。2D和3D池化操作同样有这样的问题。
C3D结构,包括8个卷积层,5个最大池化层以及2个全连接层,最后是softmax输出层。
所有的3D卷积核为$ 3 × 3 × 3$ 步长为1,使用SGD,初始学习率为0.003,每150k个迭代,除以2。优化在1.9M个迭代的时候结束,大约13epoch。
数据处理时,视频抽帧定义大小为:$ c × l × h × w$,$c$为通道数量,$l$为帧的数量,$h$为帧画面的高度,$w$为帧画面的宽度。3D卷积核和池化核的大小为$ d × k × k$,$d$是核的时间深度,$k$是核的空间大小。网络的输入为视频的抽帧,预测出的是类别标签。所有的视频帧画面都调整大小为$ 128 × 171 $,几乎将UCF-101数据集中的帧调整为一半大小。视频被分为不重复的16帧画面,这些画面将作为模型网络的输入。最后对帧画面的大小进行裁剪,输入的数据为$16 × 112 × 112 $
C3D模型训练
接下来,我们将对C3D模型进行训练,训练过程分为:数据预处理以及模型训练。在此次训练中,我们使用的数据集为UCF-101,由于C3D模型的输入是视频的每帧图片,因此我们需要对数据集的视频进行抽帧,也就是将视频转换为图片,然后将图片数据传入模型之中,进行训练。
在本案例中,我们随机抽取了UCF-101数据集的一部分进行训练的演示,感兴趣的同学可以下载完整的UCF-101数据集进行训练。
动手实践
点击鼠标右键,在新标签页中打开此链接https://nbviewer.jupyter.orgl,打开新的网页再依次右键复制下面的实践案例地址、粘贴到新打开网页的搜索框中,按回车进行访问。
使用C3D和I3D模型实现视频动作识别实践案例地址:
总结
我们通过这次学习知道了视频动作识别是指对一小段视频中的内容进行分析,判断视频中的人物做了哪种动作;经典的模型有:卷积网络+LSTM、3D卷积网络、Two-Stream网络和I3D网络,光流的概念。了解了C3D模型的训练和预测I3D模型的预测。
三、使用OSVOS算法实现视频物体分割
视频物体分割
本案例分为以下几个章节:
- 视频物体分割简介
- OSVOS算法训练和预测
- 视频物体分割的应用
3.1 视频物体分割简介
视频物体分割就是从视频所有图像中将感兴趣物体的区域完整地分割出来。
注意“感兴趣物体”这个词,“感兴趣物体”是指在一段视频中最容易捕获人眼注意力的一个或多个物体,比如下图中左上角子图中三个正在跳舞的人,这三个人物是“感兴趣物体”,而周围的人群不属于我们常识上的感兴趣物体,下图中的其他子图也是如此,因此视频物体分割算法一般不需要将视频图像中的所有物体都进行分割,而是只需要分割“感兴趣物体”即可。
学术界在视频物体分割领域主要有三个研究方向:
(1)半监督视频物体分割
(2)交互式视频物体分割
(3)无监督视频物体分割
下面我们来一一讲解三个研究方向的内容。
- OSVOS算法训练和预测
- 视频物体分割的应用
3.1 视频物体分割简介
视频物体分割就是从视频所有图像中将感兴趣物体的区域完整地分割出来。
注意“感兴趣物体”这个词,“感兴趣物体”是指在一段视频中最容易捕获人眼注意力的一个或多个物体,比如下图中左上角子图中三个正在跳舞的人,这三个人物是“感兴趣物体”,而周围的人群不属于我们常识上的感兴趣物体,下图中的其他子图也是如此,因此视频物体分割算法一般不需要将视频图像中的所有物体都进行分割,而是只需要分割“感兴趣物体”即可。
学术界在视频物体分割领域主要有三个研究方向:
(1)半监督视频物体分割
(2)交互式视频物体分割
(3)无监督视频物体分割
下面我们来一一讲解三个研究方向的内容。
半监督视频物体分割
半监督是指由用户给定感兴趣物体在视频第一帧图片上的人工标注真实分割区域,然后算法根据这一帧图片和标注进行学习,完成学习后,由算法来对后续所有帧图片进行分割区域的预测。
第一行分别是一个视频的RGB图片,第二行是感兴趣物体区域,第一列是视频的第一帧图片和人工标注的分割区域,之后的三列分别是第20、40、60帧图片和算法预测的分割区域。
半监督视频物体分割算法还可以再分为两类:有在线学习和无在线学习。有在线学习的算法就是上面提到的根据第一帧物体的 ground-truth,利用 one-shot learning 的策略来 fine-tune 分割模型,每次对一个视频进行预测前,都要先对该视频的第一帧进行学习,fine-tune一下模型,再进行预测,代表性算法是One-Shot Video Object Segmentation。无在线学习的算法是指它的模型是事先训练好的,不需要针对样本进行 fine-tune,具有更好的时效性,代表性算法是FEELVOS: Fast End-to-End Embedding Learning for Video Object Segmentation。
交互式视频物体分割
交互式视频物体分割是指算法在运行过程中需要人不断与其交互,然后根据人的交互信息来决定感兴趣物体并进行分割。
交互式视频物体分割算法的基本流程,第一帧根据人划的一条线或一个框来确定感兴趣物体,然后得到初始帧的物体分割结果,然后算法继续逐帧预测,直到上面的第3张图,算法分割区域发生了错误,选中了后面一只骆驼的部分区域作为分割区域,这时可以再结合一次人的交互,由人工进行划线区分正负样本,随后算法就进行修正,得到了第4张图的结果。这种交互式视频物体分割算法的特点就是通过人的多次交互达到较好的分割效果。代表性算法是Fast User-Guided Video Object Segmentation by Interaction-and-propagation Networks。
无监督视频物体分割
无监督视频物体分割是全自动的分割,除了 RGB 视频,没有其他任何输入,其目的是分割出视频中显著性的物体区域,是目前最新的一个研究方向。半监督和交互式视频物体分割中,感兴趣物体是事先指定的,不存在任何歧义,而在无监督视频物体分割中,物体显著性是主观概念,不同人之间存在一定的歧义,因此无监督视频物体分割算法可能需要输出视频中人眼会注意到的多个物体的分割结果。代表性算法是UnOVOST: Unsupervised Offline Video Object Segmentation and Tracking for the 2019 Unsupervised DAVIS Challenge.
以上三个研究方向其实就是DAVIS挑战赛的三个任务,如果您对此感兴趣,可以前往其网站进行了解。
在以上三个研究方向中,由于半监督视频物体分割算法的发展较为成熟,因此本案例采用该类算法的代表性算法OSVOS来实现一个视频物体分割的demo,接下来我们来开始执行OSVOS的代码。
3.2 OSVOS算法训练和预测
第一步,准备相关代码、数据和模型都已准备好存放在OBS中,执行代码将其拷贝到Notebook中。
第二步,安装需要的python模块,本案例需要torch 0.4.0才能跑通,如果直接使用pip install torch==0.4.0,安装的是CUDA8.0编译的torch,但是ModelArts的默认CUDA版本为9.0,因此我们指定安装使用CUDA9.0编译的torch 0.4.0,该安装包已经存储在OBS,使用代码直接copy即可。
第三步, 开始在线学习默认训练1000epoch,总耗时约5分钟。
第四步,测试模型。
第五步,查看视频分割结果。
3.3 视频物体分割的应用
如果你已经得到了一个视频的物体分割结果,那么可以用来做什么呢?
视频物体分割是一项广泛使用的技术,电影电视特效、短视频直播等可以用该技术将场景中的前景从背景中分离出来,通过修改或替换背景,可以将任务设置在现实不存在或不易实现的场景、强化信息的冲击力。传统方式可通过视频图像的手工逐帧抠图方式(比如,摄影在带绿幕的专业摄影棚环境摄制,后期特效完成背景移除切换,如下图所示),比如《复仇者联盟》《美国队长》《钢铁侠》等通过专业影视处理软件加入各种逼真的特效,让影片更加有趣,更加震撼。
再比如华为Mate 20系列手机新增的人像留色功能,能够在录像过程中,实时识别出人物的轮廓,然后通过AI优化只保留人物衣服、皮肤、头发的颜色,将周边景物全部黑白化,如此一来使人物主体更加突出,打造大片既视感。这种人像留色功能就是使用了视频物体分割的技术,将人物从视频中分割出来,再保留其色彩。
接下来,我们将实现视频抠图的另一种应用:将某个目标从视频中去掉,仿佛该目标从来没在视频中出现过一样。本案例采用的视频抠图算法是Deep Flow-Guided Video Inpainting
第一步,准备相关代码、数据和模型都已准备好存放在OBS中,执行代码将其拷贝到Notebook中。
第二步,运行算法demo。
第三步,查看视频抠图结果。
执行代码将看到视频抠图的结果,左侧视频是原视频,右侧视频是去除了一只火烈鸟目标之后的视频,可以看到目标抠除的效果是非常好的,完全不影响背景,仿佛这个目标在视频中就从来没有出现过一样。
注意:
由于视频物体分割算法的发展时间较短,离实用场景还有一段距离,所以本案例的视频抠图demo使用的目标分割区域是人工标注的(存储位置在./video_object_segmention/Deep-Flow-Guided-Video-Inpainting/demo/masks),而不是上面的OSVOS算法输出的分割区域。
参考资料
https://davischallenge.org/index.html
https://github.com/kmaninis/OSVOS-PyTorch
https://github.com/nbei/Deep-Flow-Guided-Video-Inpainting
A Benchmark Dataset and Evaluation Methodology for Video Object Segmentation
动手实践
点击鼠标右键,在新标签页中打开此链接https://nbviewer.jupyter.orgl,打开新的网页再依次右键复制下面的实践案例地址、粘贴到新打开网页的搜索框中,按回车进行访问
使用OSVOS算法实现视频物体分割实践案例地址: https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_video_object_segmentation/object_segmentation.ipynb
总结
通过学习我们知道了视频物体分割就是从视频所有图像中将感兴趣物体的区域完整地分割出来,并不需要分割视频中的所有物体。三个研究方向分别是半监督、交互式和无监督;OSVOS算法训练,只需要第一帧图片和标注即可训练;视频物体分割的应用:抠图换背景、人像留色摄影和抠图使目标消失。
注:本文整理自华为云社区内容共创活动之华为云AI实战营:视频分析
查看活动详情:https://bbs.huaweicloud.com/blogs/308924
- 点赞
- 收藏
- 关注作者
评论(0)