1
雷锋网按:视频直播行业在前几年迎来了井喷式爆发,随着人工智能技术的逐渐成熟,视频的解决方案也在不断完善,例如大数据、智能追踪、直播互动、广告精准推荐等,这些都在潜移默化中提升视频的用户体验,并且也给视频行业带来了新的商业模式。
那么人工智能在视频应用场景中究竟能发挥哪些作用?二者结合能带来哪些新的商业应用?
本期硬创公开课,雷锋网邀请到了Video++人工智能事业部研发Team Leader张奕为大家讲解人工智能在消费级视频场景中的应用。
嘉宾简介
张奕:Video++人工智能事业部研发 Team Leader,中科院博士,研究领域包括深度学习、多媒体、计算机视觉、模式识别及视频处理,原美国Autodesk研究院计算机视觉专家,拥有数项技术发明专利,在ICPR、ICVR等知名国际会议及Journal of Multimedia等国际期刊中发布过数篇论文。
Video++专注于消费级视频大流量场景的AI科技公司,以视觉识别和大数据为基础,实现视频场景匹配和广告自动投放,实现在视频中的购物,百科,虚拟植入,卡牌互动,投票,发红包等互动功能,为观众提供新型的互动体验。
截至日前,服务的10000多家企业包括乐视视频、芒果TV、爱奇艺、风行网、浙江卫视中国蓝等综合平台,斗鱼直播、战旗直播、熊猫直播等直播平台,以及Zealer、日日煮、小李子足球等垂直网站和社区,每月为平台提供超过101亿次的服务。
以下内容整理自本期公开课,雷锋网做了不改变原意的编辑:
大家好,我是来自Video++团队的张奕。Video++成立2年多来,一直致力于消费级视频领域的技术产品的研发,利用人工智能技术实现视频内容的分析和识别。今天就给大家分享一下Video++团队利用人工智能技术在消费级视频垂直领域的应用的技术和心得。
一、消费级视频的特点
消费级视频作为视频的一个子类,当然具有相对于静态图像所具有的特点。即在时间维度上,能够对内容识别提供重要的帮助,是统计算法斟酌如何有效利用的重要因素。具体有以下特点:
数据量大
类别多样
场景复杂
一般而言,视频一般分为两大类:消费级视频和工业级视频。工业级视频指的是利用固定设备在固定条件、固定场景下拍摄的视频。常见的有安防视频。很显然,消费级视频相对于前者而言更加复杂。下面就来看一下其相对于其他视频产品的不同。
1、数据量大
这是消费级视频的第一个特点。随着互联网的发展壮大,很多产品的数据都通过互联网和云端进行传输和存储。数据量大也使得消费级视频的商业价值的潜力变得巨大,与此同时这也给人工智能算法处理提出了更高的要求。算法运行时,必须考虑到计算的速度,且要在合理的时间里对大量的数据进行分析和处理。
2、类别多样
再来看消费级视频的第二个特点。其实其本身可分为很多种类,如电影、综艺、体育和广告,还有这两年非常火的直播、短视频等等。这些子类的消费者视频的内容形式之间又存在着很大的差异,所以也给不同子类的通用算法提出巨大的挑战。
3、场景复杂
上文也提到,工业级视频由于条件固定,所以场景单一,而消费者视频则来源多样,后期还有很多加工,从而场景更加复杂。在消费者视频里,经常能看到场景的切换、缩放和拼接,还有字幕,淡入淡出等功效设置。在很多消费者视频中,如舞台综艺节目的频繁移动,交接的改变,都会对整体或者局部产生模糊。以上因素都会对人工智能分析视频内容产生一定程度的干扰,这就要求人工智能算法需要具备更高的鲁棒性,以减少这些因素带来的干扰。
二、人工智能的发展与消费级视频的分析
再来了解一下人工智能技术在消费级视频领域的应用,以及过去、现在和将来会达到什么程度。
人工智能在消费级视频中最重要的功能是目标追踪、检测和识别。与工业级视频相比,消费级视频最大的区别在于其需要编辑、策划和互动,这是我们可以介入的地方。像娱乐综艺、在线直播等还有很大的剩余价值有待开发。利用人工智能技术对物体、人脸、场景、品牌进行系列结构筛选后,就能得到这个视频里在何时何地出现了什么人物、物体、场景和品牌的信息。然后再在这一基础上对物体进行结构化,就能产生极大的商业价值。
目前来看,在视频中加入广告等都需要人工操作,如果采用人工智能技术来完成这些工作,则能很大程度节省时间,降低成本。建立视频结构化数据库以后,经过关键词的筛选,用户可以批量化、精准化地进行广告投放,这套系统就能将应用市场、广告电商和消费者关联起来,实现视频商业的结构。
从以上可以看出,人工智能在消费级视频领域具有巨大的商业价值。但是,要实现以上的应用设计,还必须依赖技术的发展。人工智能技术从上世纪30年代伊始,至今已有80年的发展历程,也经历了好几次的技术飞跃。具体如上表所示,其中最近也是最重要的一次飞跃是在2010年——深度学习技术在识别中的应用。
在深度学习技术应用之前,人工智能识别技术也在不断发展,但是在实际应用中,算法准确率与产品商业化要求之间还存在较大的差距。深度学习技术的出现,极大的提升了算法的准确率,拉低了其与产品商业化要求的差距,使得人们看到了人工智能技术近年来在消费级视频等相关领域应用的希望。
三、如何构建基于深度学习的消费级视频分析系统
在这一部分,我将从Video++在消费级视频领域运用人工智能技术的相关实例和心得为大家讲述如何构建基于深度学习的消费级视频分析系统。
大体来看,构建这一系统需要设计算法框架和工程化框架。其中,算法框架是基础。
1、构建基于深度学习的消费级视频分析系统的要素
构建基于深度学习的消费级视频分析系统主要包括三种算法。
首先第一个是深度学习算法。如图所示,其中就包括样本的选择、识别和标注,模型的设计以及训练测量。
其次是计算机视觉&图像处理。因为这里涉及消费级视频领域,所以必须借助这一算法对视频进行必要的预处理,从而为深度学习做储备。那么这其中就包括目标检测、跟踪和图像变换。
此外还包括其他一些算法,如统计模型等。
以上算法都是涉及构建消费级视频分析系统需要借助的基础算法,那么,选择算法的标准又是什么?主要与以下两个因素有关:
准确率
速度
消费级视频分析系统除了对准确率要求高之外,由于要分析规模庞大的数据,对处理速度要求也非常的高。不过,这两项指标本身是存在冲突的。因为准确率更高的系统通常需要消耗更高的计算时间,而处理速度快的算法相对而言准确率会更低,所以在设计算法框架时需要在二者之间找到最优的平衡点。
下面我将从深度学习算法框架开始,具体谈谈这个算法中的设计要点。
1)深度学习:样本采集和标注
在研究深度学习算法中,往往最主要关注深度神经网络模型的设计,而训练和测试样本一般是采用公共的数据集,以便和其他的算法进行比较。所以训练样本的采集和标注也不是那么的重要。但是在消费级视频分析系统运用到具体场景的应用中,训练样本的采集和选择就显得尤为重要。这是由深度学习的特点来决定的。
训练一个深度学习模型,需要大量经过良好训练标注的样本。这些样本的质量直接决定了训练所得到的模型的泛化的程度。没有足够多的标注的数据,即使有好的网络模型,也是巧妇难为无米之炊,无法训练出好的结果。
Video++在数据收集和标注上积累了大量的数据。数据的收集包括两类重要的方式,一是由专业的团队进行离线的数据收集和标注,作为初始模型的训练数据。二是由离线收集的训练数据得到初始模型,然后在线上测试得到反馈数据,从中挑选错分的样本,再经过人工的标注后,将其加入训练数据集里面,对模型模型进行持续的训练和分析。我们认为在不久的将来,待标注的数据将成为一项技术壁垒,因为它直接决定了训练模型得到的数据的准确率。
样本的收集中还有一个值得注意的问题采集的训练样本必须与应用环境中的样本分布尽量保持一致。以消费级视频分析为例,训练样本必须尽量从消费级视频里收集,最大限度地使训练样本与应用环境样本分布保持一致。如果从其他数据源,如工业级视频或静态图像中获取训练样本,则会降低在消费级视频的测试的准确率。
2)深度学习:模型的选择与设计
标注样本数据之后,我们就要针对应用的类别和样本的特点选择对应的模型类型和训练方式。如单祯的分类应用通常选择卷积神经网络模型,时间序列建模相关的分类应用则选择递归神经网络模型。选定模型类别之后,根据应用的复杂程度和训练样本的大小选择模型的深度。
原则上来说,越深的模型应用效果更好,但前提是要有足够多的样本来支持。另外,更深的模型也会对硬件容量大小提出更高的要求。对于硬件爱好者或者创业初期的公司来说,硬件条件也是选择训练模型的深度需要考量的一个因素。
而训练方式中面临的一个困难选择在于,是用训练样本从头开始训练模型,还是在大规模训练集上得到的通用训练模型的基础之上,再用样本进行数据的微调。这个微调是由训练收集的样本大小来决定的。如果训练样本规模不足,那么可以考虑采用以通用模型作为初始化参数,然后再在收集的样本上进行数据微调的方案。具体有哪些层的参数可以进行微调呢?也是由训练样本规模和应用问题来决定的。
2、视频分析算法总体框架的设计
在训练好了深度学习模型之后,我们并不能完整解决消费级视频的问题。一个端到端的视频分析系统,必须需要计算机视觉和深度学习识别技术的配合。
计算机视觉算法主要负责视频的预处理,包括
视频结构的分割
目标轨迹的提取
目标图像的处理
识别结果的处理
这些工作为深度学习网络模型提供数据输入、计算机视觉和统计算法,还负责对深度网络模型输出的结构进行后处理,生成最真的视频分析结果。
3、工程化
在有了算法架构之后,已经能够实现应用所要求的功能,做成演示系统,但要满足产品化的要求还需要精心设计后的工程构架。工程化的构架所要解决的问题是让算法在生产的高密发状态下生成快速的运行,提供稳定的服务。为了达到这一目的,工程化可以从以下方面进行优化:
首先是算法的并行化。这其中就包括单一算法内部代码的优化和多算法模块之间的并行化。
此外,为了处理高并发,需要设置有效的分布式系统和多任务调度系统。
由于不同的算法模块对GPU/CPU的计算资源分配不同,需要对算法模块进行分割,分配不同的GPU/CPU资源。
最后还要还需要设置合理的任务优先级处理程序,对高优先级的任务进行及时的相应。
4、以消费级视频中的人脸识别为例
前面谈到了很多设计思路,下面我想要借助消费级视频中的人脸识别技术来说明下前面提到的设计原则是如何在场景具体应用的。
我们在拿到一个具体应用中,需要明确系统的“输入”和“输出”。其实“输入”很简单,就是消费级视频具有场景多样、数据量大等特点,系统的“输出”是视频结构化的信息,结构化的基准是人脸的轨迹和轨迹识别标签。整个输出是整个人脸的一个列表,列表中的每一个元素就是一条人脸轨迹。每条人脸轨迹可用一系列的标签来描述,如起始祯号、轨迹长度、人脸坐标列表、识别结果标签和识别结果置信度等。总结这些属性,总共包括两方面。一是轨迹出现的位置和时间,第二是轨迹识别的标签。
由此我们可以想到,一个初步的算法设计框架,由计算机视觉的人脸检测跟踪算法来获得人脸轨迹的位置时间信息,再由深度学习神经网络来识别人脸的标签。
在开始算法设计前,需要牢记消费级视频场景负责、数据量大、类别多样的特点,以及识别准确率和处理速度的要求。
1)模块一:视频结构化,将视频用镜头分割
对于消费级视频而言,镜头的切换非常频繁,而任何轨迹目标的提取都应该在单一镜头里面进行的。所以镜头分割成为一项重要的预处理环节。在设计镜头分割模块算法的时候,我们依然要权衡准确率和处理数据速度的指标。
在这一环节中,通常采用全局特征和局部特征相结合的方法。全局特征检测全局颜色的分布突变,然后借用局部特征获得的人脸识别的跟踪结果、跟踪轨迹的断续来判断视频是否具有镜头切换。跟踪来判断镜头切换有一个很大的优点,因为后续的步骤也会采用相似的算法,所以这一步骤所需的算法是可以重复使用的。
2)模块二:人脸轨迹提取
完成了镜头分割以后,就可以分割好的单一镜头里进行人脸轨迹提取。在轨迹提取的算法上,同样要考虑准确率和速度的指标。要实现速度和准确率的平衡,可以有以下两种途径:
1. 间隔采样 or 逐帧处理
2. 检测 & 跟踪的配合
间隔采样仅仅需要处理时间点上的帧,这样就能大大降低处理的数据量,从而提升处理的速度。但是这一方法也同时丢失了时间序列的前后帧的关联信息,会影响后续视频的准确率。由于消费级视频场景复杂的特点,单帧图像的质量往往比较差,所以我们摒弃了提取关键帧作为识别依据的做法,所以我们采用检测跟踪和逐帧的处理整条人脸轨迹进行分析。
我们的设计思路是尽量获得更多的帧,来弥补单祯质量的不足。而在逐帧处理的策略下,我们采用的是跟踪模块,能够最大限度地利用时间信息来降低获取人脸位置的开销。因为跟踪比检测的计算量要小很多。
接下来,我们设计了检测和跟踪算法的配合策略,同样是为了实现准确率和速度的平衡。在等间隔时间等量进行人脸的检测,以发现新出现的人脸目标,然后对其进行跟踪。在跟踪的时候,会在跟踪框周围进行简单的检测,用检测框对检测结果进行修正,提高检测的准确度。从而在这一情况下实现速度和准确率的平衡的目标。
然而,在人脸轨迹提取中还存在一些复杂情况。一个是多目标,另一个是要注意尺度的变化。这些情况在消费级视频中还挺常见,需要额外的计算开销,这也是在算法设计中需要权衡的变化。
3)模块三:人脸识别
有了人脸轨迹之后,我们就可以开始进行人脸的识别了。但是在将人脸数据输入深度网络之前,还需要对其进行必要的变换和处理。其中一部分变换在针对人脸这一部分非常重要,尤其是在消费级视频里,那就是人脸的对齐。人脸对齐是利用人脸的特征点检测定位,将各种姿势的人脸图像还原矫正为正脸的过程。这需要对齐的原因是,人脸识别的模型是从人的正脸图片训练得到的。为了让训练模型保持和应用的一致性,人脸对齐在消费级视频里是必不可少的步骤。
在识别之前,对人脸数据的预处理还包括人脸质量的评估。这一模块的设计也是与消费级视频的特点息息相关的。由于消费级视频里的图片同样出现参差不齐的现象,所以一些低质量的人脸识别的结果是不可信的,这将干扰最终的视频结果。因此我们在算法框架中,加入了人脸质量评估的算法,以过滤低质量的人脸图片,保证人脸数据的准确率。
传统的人脸质量评估,包括客观评价指标和主观评价指标。就此,我们采用深度学习神经网络来进行评估。主要分为三个步骤。
标注人脸数据。从互联网获取到有信息量的图片,截取出人脸框,根据角度、旋转、尺度、光照等因素对样本的质量进行打分,记录分值,并将人脸截图和分值配对,建立训练处理集。
利用标注的人脸数据离线训练深度学习神经网络,网络的输入是人脸框,输出是质量评估分值。神经网络采用后续可以使用人脸识别相同的结果,这样可以共享部分的权值。
将每一张待输入的人脸图片直接输入到质量评估网络里,再把网络的输出作为该图片的质量评分。这一评分可用于后续人脸识别样本的过滤和置信度的参考。
经过一系列的人脸识别和变换,现在可以开始训练人脸识别模型。样本的准备依然是模型训练最基础也是最重要的一个环节。
针对消费级视频里的女性识别这一应用,我们征集了超过6000位女性一共50万张图片进行标注。另外还采用了公开人脸数据集,大约涉及1万人,50万样本,总的数据规模超过100万张。根据不同的应用要求,选择不同的卷积神经网络模型,以平衡计算的难度和精确度。
由于新的样本达到了足够的规模,可以采用直接训练的方式。Video++利用训练得到的模型对人脸样本进行特征提取,在测试的时候,在视频中检测到的人脸后,同样将其输入到生成的特征向量里,与人脸互动的特征向量进行匹配,从而找到在特征空间中最接近的一个样本。
4)模块四:识别结果融合
以上提到的人脸识别都是针对单帧识别的图片而言的,之前说到的系统识别结果都是针对整个人脸轨迹而言。因此,最后需要将人脸识别的结果与整条人脸轨迹融合起来,得到整个轨迹的识别结果。
识别结果的融合策略也有很多。简单的有投票策略,即将尾帧的识别结果是为一票,识别结果票数最高者则为轨迹的最终识别结果。也有用神经网络来实现这一融合,可以训练一个时间维度上的神经,将每一帧识别出的特征向量作为网络的输入,经过在时间维度上的一系列的参数变换得到最终的特征向量。
总结各个模块,可以得到消费级视频中明星产品——人脸识别的总体框架。总而言之,可有四个步骤:
视频结构的预处理,目的是把视频按镜头瓜分;
人脸轨迹的生成。用监测跟踪结合的策略生成单一镜头内人脸的轨迹;
人脸的识别。人脸图像经过对齐、质量评估后,输入人脸识别网络,生成单帧识别的结果;
对轨迹上各帧的识别结果进行融合,得到轨迹的最终识别结果。
(关于技术讲解的部分就到这里,下面第四部分的内容则由Video++视频产品负责人魏传勇先生来为大家分享)
四、基于人工智能的消费级视频分析产品
Video++在技术领域已经投入了很多,也有了一定的研发实力,所以给大家分享一下我们团队已经商业化的AI产品。
Video++现在的AI应用主要集中在一些国内主流的视频平台,像芒果TV、乐视TV、搜狐视频等,也有一些直播平台,如斗鱼、熊猫等。
如张奕博士在前文提及到的,Video++团队在消费级视频里借用人工智能技术,通过对人脸进行识别以及跟踪监测,从而将广告与视频建立起相应的关联性,算出广告插入的最佳时间以及位置,从而增加用户对该品牌的好感度。
这是Video++本次分享带来的第一个产品——“剧情卡牌”。该产品利用人工智能技术对视频中的场景、物体等进行辨识,然后去抓住与场景节点可以结合的点去设置剧情任务。
如这张图片所示,该视频中显现的是一个办公场景,所以“剧情卡牌”可能会从场景中挑选出现在镜头里的某个品牌的产品,设置一个与大家生活契合的主题,拟三个简单的问题以供用户作答。
以该视频中某个镜头举例,有一个场景是女主角在下雨天边讲电话边撑伞奔跑,那么“剧情卡牌”就会针对女主角手中的手机作为任务问题,让用户答题。事实上,该手机品牌正是Video++服务的一家企业。
上图演示的即为Video++的产品——关联云图。简单来说,就是关联视频内容推出与之匹配的动态效果广告,以可视的方式告知用户其使用该品牌商的产品,可以在哪些场景下使用。
“穿屏贴”也同样是一则与消费级视频的广告投放相关的AI产品。即将物品与视频内容建立关联性,从而推送动效广告,点击后可观看小窗贴片。用户在观看视频的过程中,看见这样的广告可能不致于反感,还能建立相关的趣味性。
此外,“情境中插”也是与前面提到的案例相似的产品。不同的在于,其能同时分析影视剧与TVC,在匹配度最高的节点播放中插入广告。
Video++视频还有一个产品,名为“关联海报”。意如其名,关联视频内容推送提示窗,点击提示窗可观看窗口贴片和品牌信息。
精彩问答
Q1:Video++有开放SDK吗?
答:Video++的AI产品其实分为两部分。一部分是对场景的辨识,这一块是不需要SDK的,只需要达到用户能够辨识的使用程度。还有就是可以在播放器上增加可预选的信息,同时提供更新的服务。另一方面就是SDK,这一部分可以实现各种各样的开源信息。
Q2:算法现在只是针对GPU和CPU进行优化吗?
答:现在不仅仅是针对GPU和CPU优化。我们需要在线上的基础上建立多方面的提取,所以不仅要优化GPU和CPU的订单,还要处理各个集群之间的内容,还有任务之间的调配。
Q3:老师提到,采集的训练样本必须要与应用环境中的样本分布尽量保持一致,但深度学习的训练需要采集大量的数据,那么在数据收集方面您有哪些好的建议?
答:由于针对某一具体应用,我们不可能收集到大量的训练样本,所以在这种情况下就可以采用一个有效的方式:在一个基础的训练之上,首先训练一个基础模型,然后再去收集跟你应用相关的数据,再在这一训练模型上利用相关数据进行参数微调。这样就能用少量的标注样本达到目的。
Q4:Video++现在的人脸识别的准确率能达到多少?
答:70%左右。包括人脸对齐,人脸检测的多个环节。
Q5:Video++除了广告推荐以外,还有其他的产品吗?
答:广告推荐是我们的一个方向,因为现在一些产品在这一领域的商业化也比较成熟。未来还会往新的方向去研究。
Q6:Video++支持多个人脸识别吗?那这一块的准确率是多少呢?
答:Video++本身设计的就是以多人脸识别的算法。如前文提到的,准确率在70%左右。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。