写在前面:
本文根据《优酷技术沙龙——优酷认知实验室专场》现场,阿里巴巴高级算法专家飞霏的演讲《多模态视频内容理解和审核质控》整理成文。
大家好,非常高兴有这个机会和大家一起分享近期做的一些工作。我今天主讲的内容是优酷的多模态视频内容理解和审核质控,将会围绕两个具体的项目来跟大家讨论一下当前主要的一些技术思路。
首先简单介绍一下业务概况。
多模态,是说视频内容本身呈现了多个模态,第一是图像模态,包括视频的封面图、视频帧,从帧的角度来看,视频不光是一些静态图,它还是一个有时序信息的图集。第二是文字模态,包括视频的标题,弹幕评论,以及OCR、ASR产生的一些文字信息。第三是音频模态,也包含了非常重要的信息。图像方面,会涉及到图像的分类或物体识别。文字方面,涉及NLP层面的理解。多模态方面,可以做视频、音频的理解。
主要的业务应用,一是内容的安全分级和安全准入,二是支持内容分发和内容生产的一些基础标签。
在内容安全方向,第一个例子就是质量分级,优酷有大量来自用户和专业制作者上传的短视频,质量参差不齐,我们通过算法进行高中低的质量打分,去支持不同内容分发的场景。第二个例子是风险分类,是安全维度的内容标签,打上风险标签的内容有些是不能准入的,有只能在特定场景进行分发。第三个例子是风险目标检测,如敏感人物、敏感标识物等等。
多模态视频内容理解的工作包括视频字幕,视频中的场景、动作、物体检测等等。
技术思路主要分解成三部分,包括问题、数据、模型。
—— “问题”:刚才看到了很多的业务问题,我们怎么把这些业务问题拆解到技术问题?这些技术问题的优化目标和评价方法是什么?
—— “数据”:对于很多真实的工业场景来说,数据是非常重要的一部分。有没有现成的数据集?如果没有的话我们怎么去构建?很多真实的数据是对算法并不友好的数据,我们怎么样来更好地利用这些数据?
—— “模型”:如何进行模型选型?如何融合多个模态或多个模型?
接下来我会围绕两个典型项目去讨论我们的技术思路,希望对大家有借鉴意义。
一、字幕OCR
OCR通常的解决方案分成两步:
第一步:文字区域的检测。输入图像,输出是其中的文字区域,它是一个目标检测任务。
第二步:文字识别。输入是文字区域,输出是文字序列。
字幕问题中最简单的是标准字幕,它是位于图像下方的横向文字序列。非标准字幕在综艺中比较多,有时文字方向是竖向的,有时会大小不一,还有各种花体字。标准字幕和非标准字幕都是视频后期添加的文字。视频当中还有一些是原生的背景文字,这些不是字幕OCR要解决的范畴。
在文字区域检测和文字识别两个方向上,都有一些比较典型的工作,在做baseline模型选择时,一般会选择比较新的解法,因为CV这个领域确实每年的进步都很大,但是也要了解最新的解法是在优化哪些问题,是否适用自己的业务场景。比如OCR这个问题,有很多最新的工作是在解决背景文字的多角度变化,并不适用字幕OCR这个场景。
有了模型选型之后,再来看数据。坏消息是字幕没有现成的标注样本集,好消息是字幕本来就是后期添加,我们可以利用字幕生产软件构造百万甚至千万级的样本数据。
有了Beseline Model之后,我们再去思考怎么样可以把这个问题做的更好。比如说在文字区域检测时,采用了基于anchor的检测方法,我们可以去除一些不必要的长宽比的anchor,并基于字幕会出现的位置去缩小检测范围,从而提升检测性能。从时间维度来看,并不是每一帧字幕都会发生变化,并且在一个视频当中,字幕的位置也是相对固定的,所以引入帧间的信息,还有进一步的提升空间。
经过这些定制优化,我们研发的字幕OCR比通用OCR在精准度上可以提升3到4个百分点,高清字幕的识别准确率达到97%以上。
二、场景/动作识别
接下来介绍场景/动作识别的相关工作。比如说今年北京台春晚说我不想看主持人,请把其中唱歌跳舞的片段给我找到,大家觉得这件事儿应该怎么做?如果按照分类任务来解,有三种解法:
习惯做图像分类任务的,我们可以把视频都抽成图像帧,做图像的分类,检测每一帧是否属于唱歌跳舞,然后再把帧级的结果做合并。
第二个办法是对整个视频打标签,这种方法比较适用于短视频,上面提到的任务是无法解决的。
第三个办法是把视频先进行分镜,每一个镜头的场景比较单一,更内聚一些,对每一个镜头进行视频分类,然后再把镜头级的预测结果进行合并。
在工业界中,适用于不同的业务场景,这三种解法都比较常见。单帧就可以定义和解决的问题,可以用图像分类的方法,比如审核上的软色情识别;短视频分类,一般采用对整个短视频进行打标;上文提到的任务属于长视频中的动作检测,更适用于先分镜再检测,或者把动作分类和动作起止时间都做为模型学习的目标。在动作检测任务中,还可以引入音频信息,甚至音频可以做单一维度的模型就可以达到较高的精准度。
以下是对based Mode选型的一个总结。模型的精准度以及inference的复杂度都是需要重点考虑的问题。
上面的方案都是分类问题,会遇到一些共性的难点,如类别分布不均、困难样本和样本噪声等。
样本增强是处理样本缺失的惯用手段,一个样本可以生成无限多的差异样本,但本质上这些样本也是非常相似的,要小心过拟合。
样本均衡化和困难样本的处理,有一些比较经典的处理手段。
另外就是噪声样本的问题,在工业界我们有很多数据,但是大部分是有非常大噪声的数据。因此非常重要的问题就是噪声样本怎么处理?一般的做法是直接丢弃或者做降权。最近有一些工作提出把噪场样本降权比直接丢弃相比,模型的鲁棒性会更强一些,这个问题最好结合具体任务来看。
这里有两个挑战:第一是能否用模型化的方法去自动检测噪声样本。这里面有一些典型的工作大家可以去follow。第二是噪声样本和困难样本的区分。模型难以区分的样本,可能是噪声样本,也可能是困难样本,困难样本需要加权,噪声样本需要降权,如果做得不好,会导致在train和test数据集中的效果与在实际应用场景中的效果产生比较大的diff。
最后讲一下多模态融合的方案。
刚才提到,视频有很多的模态,图像的模态、语音的模态,文字的模态等。一种解决方案是端到端的方案,把所有的模态做特征维度的融合,最后输出统一的模型,支持业务应用。第二个方案是每一个模态都单独建立模型,联合多模态的标签做业务应用。
端到端的方案在做视频级的分类任务里用的比较多,需要有比较大的训练数据,模型才可以学得比较充分。它的可解释性会稍微差一点,因为你甚至都不知道具体哪个模态出了问题,标签融合至少还能解释到一个具体的模态。另外在业务应用经常变化的业务中,端到端的方案不如标签方案更灵活和可复用。
在视频动作检测任务当中,我们主要选用了对分镜结果进行分类,再对分镜预测结果进行合并的方案,标签具体到时序RGB帧和音频等具体模态,再对多模态结果进行融合,应用于多模态搜索和视频智能切条。
最后,视频理解是非常有挑战的一个方向,也是当前CV领域的一个研究热点,尤其是结合具体的工业级应用,在算法问题定义、数据集挖掘和处理、模型精准度和性能等方面,都有非常多有挑战性的问题等待被攻克。
相信随着算法能力的不段增强,会有更多有趣的算法应用逐步解锁,为视频生产和分发去赋能。