抖音App端到端画质提升和评测

1650次阅读  |  发布于3年以前

背景介绍

抖音投稿和消费

[2020 抖音数据报告(完整版)]

抖音作为短视频社区,拥有海量的用户和短视频内容,日活用户规模超过 6 亿,日均视频搜索次数突破 4 亿,因此多媒体内容处理的成本与体验之间的平衡,不断为我们带来了新的挑战和新的惊喜。

画质对用户影响

随着基础设施的提升,5G 的到来,可以看到,2019-2020 一年时间 5G 设备数量翻了 8 倍多,越来越高的画质诉求,目前我们也在不算的提升分辨率;码率,帧率,位深度,以及支持 HDR 等视频全链路采集,编辑,播放等等;

下面我将介绍哪些因素会影响高画质,主要从分辨率,位深度,帧率,色域,亮度五个方向展开介绍。

1. 分辨率 = 图像细节的精细程度

分辨率指图像中的像素数量。在特定屏幕尺寸下,分辨率越高,像素越多,显示的细节更精细。4K 超高清分辨率是 3840x2160,这意味着显示的图像数据是标准全高清的四倍。

2. 位深度 = 色彩渐变的精细程度

位深度指每个像素可以显示的颜色数量。位深度越大,可显示的颜色越多,从而使渐变更平滑、更自然。例如,8 位显示器可以显示大约 1677 万种颜色,而 10 位显示器可以显示大约 10.7 亿种颜色。

3. 帧速率 = 运动的平滑程度

帧速率指一秒内显示的图像数量。电影的帧速率一般是 24p(24 张图片,或每秒帧数),而标准电视的帧速率通常是 60i 或 30p(每秒 30 帧)。

8K 广播标准 BT.2020 包含帧速率(最高可达 120p)的定义,该帧速率下的运动平滑程度几乎和真实世界一样。

4. 色域 = 色彩的生动程度

色域指可以显示的所有颜色的范围。右侧图表显示了人眼能够感知的所有 RGB 值的范围。三角形表示色域:三角形越大,可以显示的颜色越多。4K/8K 广播标准 BT.2020(Rec.2020)比现有全高清广播标准 BT.709(Rec.709)涵盖了的颜色范围更广泛。

5. 亮度 = 图像照明的强度

亮度指可以显示的图像照明强度的范围。人类眼睛所能感知的最暗和最亮物体之间的差异范围(动态范围)通常为 1012,而传统显示设备最多只能显示 103 的动态范围。HDR 将动态范围扩展到 105 — 比目前的显示设备高出 100 倍 — 允许以一种更接近人眼所能感知的方式呈现光与影。

抖音端到端全链路

抖音端到端全链路路径十分复杂,各个环节都会对画质产生很大的影响;下面我们从安卓端大概梳理一下目前的链路,可以看到我们拿到手机拍摄就要经过 sensor 进行光电转换,然后电信号经过 ISP 的处理,这个过程中厂商都会加入很多增强算法,多帧 HDR,超分,降噪等等;然后通过安卓的 camera1,2 API 的采集,一些大的厂商也会提供 SDK,我们可以通过这些 SDK 调用到和系统相机一样的图像处理能力;

在经过抖音的生产端业务逻辑,比如特效 SDK,增强算法 SDK,编辑 SDK,上传 SDK 等等,这里经过了美颜,磨皮等特效算法,以及编辑过程的软硬编解码,还有各类 software ISP 的画质增强算法最终传给了服务端;

服务端又要经过重重的处理,包括视频的基本信息分析,然后进行增强处理,最后转码成各个档位,通过 CDN 分发下去,这个过程服务端核心处理就是图像增强算法前处理和转码;

下发到消费端有播放器有需要做很多处理,解封装,解码,通过算法增强 SDK 处理,最终上屏渲染处理,比如 HDR,超分等等;

可以看到上面整个大致的链路已经十分复杂了,因此对各个环节的画质效果的线下评测就应运而生,我们会通过多媒体实验室进行主客观评测,提前洞悉用户对算法效果的喜好,及时调整画质调试方向,来保证算法能够在上线之前到达最优效果;目前我们已经在抖音整个链路上线了超分,降噪,插帧,HDR 等画质增强算法,画质上取得了令人瞩目的收益。

画质评测

业界痛点

目前业界的痛点在于客观指标不能很好的映射到主观质量,举个例子,比如 PSNR 高的视频画质一定就好吗,不一定,因为 PSNR 只是一个相对参考的指标,如果视频源的质量很差,PSNR 再高也没什么用,另外很多时候我们看 PSNR 很多时候只是看整体视频所有帧数的均值,但是如果其中某些少数帧出现 badcase,比如转场出现大量的马赛克,也是会非常影响用户的主观体验,而这些从 PSNR 的数值上都不能很好的体现出来,同时如果在服务端经过锐化,超分,降噪,插帧等等一些前处理的算法的话,那么全参考的指标基本无法使用了,综合来看,PSNR 等全参考客观指标有很大的局限性;

主观质量和用户行为不存在必然正向关系。即使在测试阶段对主观质量有了一定的评估,主观质量的变化首先需要被用户感知或感受之后,才会对用户的行为产生影响,这种影响对单个用户或单次行为可能是非常微小的,比如多看了一个视频或者某个视频多看了几秒,但现阶段学术界对人类视觉系统的运作规律依然知之甚少;再举个举个极端的例子,我们现在大幅提高码率和分辨率,用户的画质必然会变好,但是用户的播放流畅度,耗电量等指标必然无法接受;

所以我们需要通过不断的 AB 实验来观察用户的 QoE/QoS 指标,从侧面反映及理解用户的真实行为,找到一个最佳的平衡点,就是画质带来的视觉体验的正向收益大于对于用户手机性能带来额外消耗的负向体验,使得整体的业务数据整体呈现正向。

QoE 指标核心:

画质正向>其他负向。

AB 实验的核心 QoE 指标如下:

用户量、内容浏览量、人均播放时长、人均播放量、人均完播数、人均点赞数、多日留存等等。

一般在算法开发阶段我们会分三个阶段:

  1. 算法仿真 tuning 阶段
  2. 工程化测试阶段
  3. 线上 AB 实验阶段

因此线下算法仿真开发阶段,我们会重度依赖主客观质量的评估,来确保算法各方面的效果尽可能的达到最优状态,后面会展开介绍目前我们的算法迭代流程。

视频质量评估

什么是图像质量?

图像信息技术被广泛应用的情况下,对图像质量的评估变成一个广泛而基本的问题。由于图像信息相对于其它信息有着无可比拟的优点,因此对图像信息进行合理处理成为各领域中不可或缺的手段。在图像的获取、处理、传输和记录的过程中,由于成像系统、处理方法、传输介质和记录设备等不完善,加之物体运动、噪声污染等原因,不可避免地带来某些图像失真和降质,这给人们认识客观世界、研究解决问题带来很大的困难。

比如,在图像识别中,所采集到的图像质量直接影响识别结果的准确性和可靠性;又如,远程会议和视频点播等系统受传输差错、网络延迟等不利因素影响,都需要在线实时的图像质量监控;因此,图像质量的合理评估具有非常重要的应用价值。

对于图像质量有两种定义。

定义一:不同成像系统采集,处理,储存,压缩,传输信号的准确度。

定义二:符合人眼感知的角度评价图像质量:图像所有视觉上重要属性的加权混合。

定义一是从信号处理的角度,关注成像系统中信号的准确性。

定义二是从人眼视觉的角度,关注观测者的感受,审美水平不同的观测者,反馈的结果也不同。

那么从图像质量的定义上,就引申出了两种图像质量的评测方法,从有没有人参与的角度区分,图像质量评价方法有主观评价和客观评价两个分支。

客观质量评估算法大概分三类,主要取决于是否使用无损的源视频作为参考。

图卡客观评价

目前世界上主流的图卡测试系统有三家:imatest,DXO 和 Image Engineering。

客观评价的指标下面给大家列出来,下面我主要介绍几种最常用到的指标。

MTF

MTF,Modulation Transfer Function。中文为调制传递函数。在各个摄像头镜头中经常采用 MTF 描述镜头的 MTF 曲线,表明镜头的能力。这些曲线是通过理想的测试环境下尽量减少其它系统对镜头的解析力的衰减的情况下测试得出的。当然,MTF 也可以涵盖对整个成像系统的解析力评价。

SNR 信噪比

由于噪声和信号总是混在一起,如果一张图片去除噪声的同时也消除了信号,那么也不是优质的图像。所以为了评判图像的好坏,经常用 SNR 信噪比来表示。

我们一般用 dB 表示:

所以 SNR(dB)= 20 log 10(S / N)。

SNR 最显著的缺点就是容易被降噪算法作弊。一张 SNR 很高的图片可能涂抹严重。另外相同 SNR 的两张图,噪声感受可能差别很大。

CIE Lab 中的色差计算

建立色彩空间,是为了方便的表示色彩。那么有了两个颜色的坐标,就可以开始进行色差计算。

这时我们遇到了第一个问题,应该如何选择色彩空间。

标准的制定者考虑了两点。

  1. 色彩空间必须符合人眼视觉,能够比较线性的色彩。
  2. 要在设备无关的色彩空间中进行计算,不能因为换了个显示方式,影响色差计算。

于是 CIE Lab 就在这样的需求中诞生了。L 表示亮度,ab 分别表示色彩分量。

当时认为 CIE Lab 是一个如果均匀线性空间,于是初代的色差公式就是两个颜色在色彩空间中的欧式距离:

delta_Eab = sqrt(delta_L.^2 + delta_a.^2 + delta_b.^2);
delta_Cab = sqrt(delta_a.^2 + delta_b.^2);
其中delta E为整体色彩,deltaC 排除了亮度的影响(不计算L值)

之后色差公式在应用中逐渐被认识到一些缺点仍然存在。CIE 2000 年又再次更新了标准。这次的公式更加符合人眼感知。

公式如下:

中间变量的计算过程被我省略了,只展示了最终的公式。有兴趣的同学可以到附录下载 CIE 2000 色差公式 matlab 函数。

客观实验室介绍

客观实验室相信大家也很熟悉,我们主要依赖标准图卡和可控制的光源环境,来进行可控制变量的重复测试,目前实验室的详细介绍可以看我们之前的文章:

[画质评测实验室简介]

  1. 24 色卡
  2. 枯叶图
  3. SFRplus 图卡
  4. ISO12233
  5. 灯箱
  6. 图卡支架

无参考打分算法

目前我们自研无参考打分算法也在内部有一定的使用;

1. 线上视频质量监控

海量视频数据的质量监控是不得不面临的棘手问题之一,视频质量服务包括视频质量检测、视频质量评价和视频质量监控。如果可以针对海量视频提供快速正确的审核或监控方案,则可以全天候不间断地检测视频质量,大幅降低人工成本,减少线上服务的风险和事故率。

2. 视频前处理检测

目前,在抖音端到端的视频处理技术有:去块效应、锐化、超分辨率、视频降噪等技术等。视频处理技术的最大特点就是很难找到一个客观指标,告诉你参数调到什么程度才能让用户满意。

如下图可以提供对多种来源的图像和视频,进行全面、多维度的场景和画质分析的能力,包括但不限于:场景语义、人脸检测、视频类型、运动程度、噪声、亮度、曝光、清晰度、色彩表现、artifacts 等,可用于 QA 评价监控体系(如画质打分、美学打分、线上画质监控等)和画质修复增强算法体系(如:基于场景的算法路由、动态算法分支、算法自动开启关闭、算法条件输入等)。如下图所示为 AnalysisKit 可能包含的分析检测模块,及其可以服务于的业务或算法场景:

对场景和画质分析检测算法进行集中规划、开发和看护,形成整套可重复利用的解决方案,可用于不同场景和任务类型,提高算法的适用性,避免各个需求来源重复开发检测算法,有助于需求的对齐澄清,避免需求冷启动。

目前应用:

3. 推荐提供评分标签

短视频正逐渐成为互联网上的一种重要的信息传播方式,为短视频打上各种有用的标签,可以帮助优化推荐系统或搜索引擎,从而为用户提供精准的短视频推荐或搜索服务。

目前应用:在抖音线上的质视频筛选,优化推荐权重。

实景主观评价

  1. 头模-不同肤色 我们通过高仿真的人像头模,来模拟不同肤色群体,进行相关的人像画质测试;
  2. 实景模拟 主观测试最大的难点就是场景的可重复性,如果一旦确认这个场景出现问题,我们很难在自然界再次重复一模一样的场景,所以就需要我们在实验室人为的造就这样的实景,方便我们重复测试;
  3. 灯光环境 光线条件也是非常重要的一环,因此我们搭建了吊光光源,方便我们模拟 D65,D50,A 光等各种光照条件,进行主观场景测试。

画质评测工具

我们也通过很多自研的工具来提升画质评测的效率和自动化方案,目前研发了 24 色卡,SFRplus 图卡分析算法,防抖检测算法,视频基础参数分析,卡顿分析,编码分析等等,下面列一部分的 UI 界面。

画质评测流程

内部画质算法的迭代流程中期很长,下面简单介绍一下算法的迭代流程,方便大家清楚了解我们任何一个算法的上线都是经过的研发和评测巨大的努力,最终才在线上呈现给到用户的;

算法从立项开始,就需要开发和评测 tuning 同学内部闭环,不断进行调试,在这个过程中达到可交付状态之后,然后通过内部的图卡计算和无参考的客观指标计算,在合理的阈值范围内的话,我们才会交付到专家评测组(大概 40 个人)进行评测,专家多维度的评测结论通过之后,我们通过线上的众测平台,发送给到线上的部分内测用户(每次大概 300 人),通过用户众测最终通过之后,我们才会决定工程化落地上线;上述的任何一个环节如果出现负向的话,我们都会打回重新调试。

众测方式

上面说到众测,我们需要重点介绍一下我们的众测系统,目前的众测是集成在抖音线上,内测用户可以通过站内信或者扫描二维码等方式参与到众测过程;

目前众测方式分四种方式:

1 . 同屏对比

2 . 分屏对比

3 . 单屏对比

4 . 重叠对比

什么是 JND?

众测有一个重要的指标就是 JND,我们通过 JND 量化的方式来决定我们上线的标准;

举个例子:一根蜡烛的房间,增加一根蜡烛,亮度的增加是明显可感知的。十根蜡烛的房间,增加一根蜡烛,感受不明显。一个铃铛在摇晃,增加一个铃铛,声音变大也是明显可知的。十个铃铛在摇晃,增加一个铃铛,感受不明显。那么物理增加量和心理感知量如何量化呢?

韦伯定律是表明心理量和物理量之间关系的定律,即感觉的差别阈限随原来刺激量的变化而变化,而且表现为一定的规律性,用公式来表示,就是 △I/I=K,其中 I 为原刺激量,△I 为此时的差别阈限。

而可被感知的最小 △I,就被称为 JND,Just noticeable difference,即最小可觉差。

把最小可觉差(连续的差别阈限)作为感觉量的单位,即每增加一个差别阈限,心理量增加一个单位。感觉量与物理量的对数值成正比,也就是说,感觉量的增加落后于物理量的增加,物理量成几何增长,而心理量成算数级数增长,这个经验公式被称为费希纳定律或韦伯-费希纳定律。适用于中等强度的刺激。S = k lg I + C(S 为感觉量、K 为常数、I 为物理量,C 是积分常数)

常见应用:

下面是我们实际使用的一些 case:

多媒体评测实验室

那么我们主要做什么呢?主要从下面四个方向把控抖音端到端的全链路画质质量:

工程优化--厂商合作--编解码--算法增强

细分下来,主要通过手机厂商新机合作测试,图像增强算法测试;工程迭代优化测试,比如 1080P 全链路测试;编解码画质测试;竞品调研分析;评测视频库;评测平台建设;自动化监控等等。

画质提升

目前我们将整个内部的评测链路分成 3 个端,生产端,服务端,消费端,下面从这三个端依次介绍一下我们做了哪些画质提升的事情。

生产端

Software ISP

在画质处理链路上,很多位置都可以用后处理增强。不同位置的画质特点不同,了解这些特点有助于设计更好的后处理增强算法,因此我们自研的后处理算法的 software ISP 应运而生。

Software ISP

什么是棱镜系统?

核心平台能力

目前抖音线上的一键增强功能:

结合用户和图像场景,智能分析并增强其图像和视频的画质,动态调整出更为清晰、绚丽的图像,打造绝佳的视频沉浸体验,从下图可以看到增强之后的效果视觉感官体验明显好于右边。

左边是增强后的效果,右边是没有增强的效果:

camera 采集

什么是 camera1,camera2?

都是 google 官方提供的两套 Camera API,在 Andriod 5.1 之后取消了对 Camera1 的更新,主要维护 Camera2。

Camera1 和与 Camera2 在实现和使用方式有较大的差异,详见下图;

Camera1 的使用多在存量的旧机型以及部分存在兼容性问题的机型中,Camera2 主要在新机型上使用;

相对 Camera1,Camera2 增添了许多新特性,功能也更加强大,如:

目前抖音大部分场景已经切换到 camera2,我也通过跟国内的主流手机厂商合作,比如华为,小米,oppo,vivo 等等,使用厂商提供的 SDK 调用更多系统相机才有的能力,进一步提升我们的生产画质。

编辑 SDK

目前也逐步从软编切换到硬编码,从下图可知,硬编码的功耗低,性能更强大;

通过对客户端的机型进行性能打分和测速,同时对视频内容进行预编码提前感知,综合这些信息,算法抉择出一套最适合当前场景的编码参数;

对导入的视频支持上屏渲染,转码支持 HDR 显示,同时也支持 HDR tone mapping 到 SDR,避免用户产生 badcase;

目前生产端已经最高支持 1080P,60fps 的视频了,后续我们还会继续上探,尽可能为用户提供更高清的视频;

当然我们不是一味的提升画质,目前我们通过各种软硬编码和上传 SDK 结合策略,已经达到画质和码率的均衡,尽可能在提升画质的同事,不影响用户的投稿体验,目前内部评估中生产端的效果在各个竞品表现最优。

特效 SDK

在生产端我们特效的 SDK 也做了很多优化工作,下面举几个例子:

之前我们的磨皮效果会对全局场景进行处理,导致人物后方的背景也不够清晰,同时磨皮的处理导致人物面部的纹理细节太少,缺乏实感,后续我们针对性的上线了人脸磨皮,只对人脸检测区域进行处理,同时上线精致磨皮,能够保留人物质感。

在夜景的情况下,默认滤镜会放大画面噪声,通过夜景检测算法,自动的对白天和夜晚使用不同效果的滤镜,来尽可能实现滤镜效果最优化。

上面虽然说到抖音已经支持导入视频上屏渲染支持 HDR,但是加入特效之后,要支持的难度非常大,需要 2W 多个道具进行遍历生产 10bitHDR 的素材,目前我们也在逐步的支持特效的 HDR。

服务端

服务端目前处理 pipeline 大致分成三块,视频分析,视频前处理,视频转码。

视频分析

视频分析上面我们有内部自研的无参考打分算法,详见之前的文章。

多媒体质量评价系统简介

同时我们还有其他的分析处理,比如 ROI,基础特征分析,复杂度分析,视频基础参数等,依赖上述分析进行最终决策处理。

视频处理

视频前处理上,目前已经和正在研究的算法类型非常多,我们通过端到端数据联合起来进行决策处理,目前主要使用的有超分,插帧,低质增强,去压缩失真等等。

视频编码

编码标准定义的是解码器的格式和流程,而编码端是可以被各家公司各自优化的,如对于运动搜索的模块,可以在范围、大小、模块的选择上再进行算法设计和优化。因此同样一个标准的编码器,是可以有不同的编码器算法的,各个公司都有自己独特的设计。

同样,我们公司也有自研的编码器算法,目前已经应用到了各个业务中。我们自研的编码器在 MSU 比赛中也取得了不错的成绩,获得了 17 项第一的好成绩。

消费端

消费端目前我们也上线了超分和其他画质增强的处理,下面是超分在播放器上简单的 pipeline,这个过程也是经过很长时间的实验,达到性能和画质的平衡。

这个是线上实际超分效果 demo,从视频可以看出,超分带来的清晰度收益十分的显著;内部的数据显示:超分实验组业务核心指标(人均时长、人均 vv 和人均完播率)均显著正向,全用户次日留存波动偏正,人均活跃天数持续正向未显著。

目前超分在内部的业务应用十分广泛,抖音,点播,直播,西瓜,头条,皮皮虾等等;超分不仅带来了画质的收益,同时通过不同的策略,还能带来卡顿优化,带宽优化等。

未来展望

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8