视频不良画质检测

抖音目前亿级日活,当用户投稿的视频经过抖音整个链路处理后若出现明显的画质劣化,如常见的花屏、绿屏、黑屏、浮雕屏等现象,造成的影响面将非常大。为了防止这种画质劣化导致的大量用户体验的下降,多媒体评测实验室作为抖音画质“守护官”自研了花屏、绿屏、黑屏、浮雕屏等视频异常检测算法,预期在投稿用户投稿后,对投稿到最终被用户消费的整个链路进行“画质诊断”工作,第一时间发现线上问题进行排查解决,在视频流到用户之前就解决劣化问题。针对该目标,目前我们已经研发了业务常见不良视频检测算法,并取得了一定的业务收益。接下来,本篇文章将介绍一下多媒体评测实验室研发不良视频画质检测算法的背景、算法的基本原理及算法在业务落地收益。

研发背景介绍

抖音每天有大量的用户投稿,投稿后由于视频处理的链路较长,且观播侧的环境、设备等情况多样,导致了各种各样的画质异常反馈。针对这些画质反馈,我们处于一种被动的地位,即问题发生了经过用户反馈我们才能感知到,这样已经对用户的体验造成影响,这与我们为用户提供最好的画质体验的初衷不符,因此,我们有必要在用户感知之前发现这些问题。此外抖音每天的投稿量和消费量巨大,人工去线上捞取视频诊断画质问题,耗时耗力且覆盖力度不够,因此多媒体评测室针对上述痛点问题,成立了视频异常检测算法研发专项,期望通过自动化检测算法检测出线上画质异常问题。

画质模拟器

画质算法要解决各种画质问题,而有画质问题的数据是关键。很多画质问题的数据难以获得且效果难以把握,所以就需要一个模拟器来生成各种画质问题的数据。通过画质模拟器,我们可以复现画质问题产生的过程,批量生产具有画质问题的数据用于模型训练、效果评估。图片

这里举花屏case的构造为例说明我们在数据集的构造上所做的工作。花屏产生的原因有许多,常见的原因为网络导致的参考帧的丢失或设备性能不足导致的丢帧,在上屏渲染时由于参考帧部分丢失或全部丢失无法正常解码而产生的现象,如下:图片

基于花屏产生的原理,在模拟器中我们模仿线上不稳定的网络环境对投稿视频进行自动参考帧部分或全部丢帧,并在上屏渲染时进行录制,从而获取和线上用户真实的花屏case进行模型的训练。

视频不良画质检测框架设计

整体架构设计

抖音多媒体评测实验室视频不良画质检测算法(VideoGuardian)框架主要分接口层、管理层、原子能力层。原子能力层包含由业务逻辑组成的相对独有能力;管理层实现了各种管理模块,包括注册、工厂、加载模块等。接口层封装了同步/异步RPC接口,PYI package 来使算法能力更方便的集成到上层的应用中。图片

任务调度设计

在实际的业务问题中,往往需要多种算法的组合叠加来解决问题,因此需要不良检测框架在算法执行层面做到可灵活插播,这就需要多个处理单元组装成DAG(有向无环图)来执行。

不同的检测算法之间存在复杂的依赖关系,比如,我们需要检测图像是否过曝,首先要调用白天黑夜检测的算法,再调用曝光检测,那么曝光检测这个任务执行的条件是它的前置任务已经执行成功或者不存在前置任务才可以执行。

因此,我们运用了DAG来描述任务之间的依赖关系,来实现任务调度。图片

算法实现简介

VideoGuardian包含数十种视频异常内容的检测算法,如黑屏、绿屏、雪花屏、interlace、花屏、三明治、画面撕裂等等,本文简要介绍花屏检测、三明治检测、边缘锐度检测的实现方法。

花屏检测

问题概述

花屏是视频处理中常见的画质问题,花屏图像具有明显的撕裂或者错位特征,严重影响用户对视频的观看体验。

花屏的形成主要由三个原因:

渲染脏数据,即视频渲染未完成的时候便被送到编码器编码;

视频传输过程中丢帧也会造成花屏,视频编码后帧与帧之间存在强烈的依赖关系,丢帧会引起严重的信息缺失、图像细节失真。

此外,视频渲染或播放阶段图像格式转换错误也会引发花屏的问题。

图片

识别方案

我们设计了一套基于CNN(卷积神经网络)的方法来识别图像/视频是否存在花屏问题。

首先,我们通过人工构造丢帧视频的方法来生成花屏样本,同时筛选出无花屏问题的正常样本,基于这两类样本来做二分类模型的训练,以达到区分图像/视频是否存在花屏的目的。

三明治检测

问题概述

如今短视频app大都是竖屏播放,而很多影视作品视频源都是横屏。为了适配竖屏,很多视频采取了在原始视频上下两边填充“黑边”的方式,并在黑边内配相应的文字,来达到更好的观看效果,这种内容拼接的视频也叫三明治视频。而在视频处理算法中,例如视频质量评价,视频种类识别,视频黑边的存在无疑干扰了这些算法的准确性。因此,有必要设计一种算法将此类拼接视频/图片的中心内容检测出来。

图片

检测方案

我们设计了一种基于深度学习和传统算法结合的拼接图像检测方案,能够更准确的识别出三明治内容。

1.基于传统sobel算子的拼接图片检测方法实现。

(a).图像转灰度、经过垂直方向sobel算子计算得到垂直方向的边缘矩阵     sobely。

(b).取出两个梯度值和最大的行作为roi顶点和底边,并返回bbox区域。

2.利用以上算法,筛选图片数据,并利用sobel算子检测算法进行标注,挖掘复杂样本(上述算法容易在百叶窗、楼梯等梯度变换较明显的场景误检)

(a).准备数据集,包含拼接图像正样本和负样本。

(b).使用传统算法对数据集进行推理,得到是否为拼接图片的标签,如果识别为拼接图片,还会获取中心roi区域bbox 信息。

(c).对传统算法识别出的结果进行人工审核,有以下三种情况。

  1. 传统算法判断是否为拼接图片识别错误,将人审为非拼接图片的作为负样本(相对复杂样本)。
  2. 传统算法判断是否为拼接图片识别正确,但是bbox识别有偏差,丢弃该数据。
  3. 传统算法判断是否为拼接图片识别正确,且bbox识别正确,作为训练集正样本。

3.模型训练

(a).使用yolox-nano作为检测模型的baseline。yolox-nano模型的大小只有7M,推理速度更快。

(b).训练过程中,关闭默认的moasic数据增强;使用mix up增强,并在训练的最后15个epoch关闭,可大幅增加模型准确率。在最后15个epoch关闭mixup数据增强是为了拟合真实任务。

(c).使用拼接图片增强:在训练前对一个非拼接图片上下两边随机padding黑边、高斯模糊图像,并根据padding的宽度生成bbox标签,这样能很好的模拟黑边、模糊图像拼接图像的场景。

边缘锐度检测

问题概述

失真的视频往往在边缘细节的表现能力上较差,通过对边缘锐度的计算可以发现模糊、块效应等画质问题。

检测方案

首先,我们使用自适应的方案选取ROI边缘区域:对图像进行边缘检测,选取梯度值较大的部分作为算法计算的ROI区域。

然后我们对边缘ROI区域做边缘宽度计算:

计算梯度方向图片

计算边缘宽度:图片

w_max(x)和w_min(x)分别是该点到block内像素最大值、像素最小值的距离。

计算m(x),这个指标随着宽度增加而衰减,从而增加对比度对分数的权重。图片

最后计算边缘锐度总分,总分越低代表边缘锐度越差。图片

业务应用

目前我们的不良检测算法已在抖音投稿侧的画质巡检、播放画质监控及APP级别版本画质防裂化中小规模试运行阶段,检测链路如下。其中在播放画质监控中,通过我们的检测算法已经准确拦截到多例异常case并进行反馈上报。而我们也通过积累线上的case,不断优化迭代我们的检测算法,提高检测算法在不同业务中的检测准确率,降低更多人力成本,及时感知线上画质问题,做到用户无感知修复。图片

作者:抖音多媒体评测实验室

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(2)

相关推荐

发表回复

登录后才能评论