随着视频与交互在日常生活中的作用日益突显,愈发多样的视频场景与不断提高的视觉追求对视频编码提出更高的挑战。相较于人们手工设计的多种视频编码技术,AI 编码可以从大数据中自我学习到更广泛的信号内在编码规律。工业界与学术界发力推动 AI 视频编码标准并进行新框架的探索。

阿里云视频云在 JVET 面向人眼的视频编码标准和 MPEG 面向机器视觉的视频编码标准上均做出重要贡献,对标准发展产生强有力的推动。结合产业需求强劲的视频会议、视频直播等场景,阿里云视频云还开发了 AI 生成式压缩系统,在同等质量下比 VVC 节省 2-3 倍码率,实现真正的超低码率视频通信。

在 LiveVideoStackCon 2021 北京峰会,阿里云智能视频云算法专家王钊,为大家解读阿里云在 AI 视频编码技术的新探索。

文 | 王钊

整理 | LiveVideoStack

大家好,我是王钊,就职于阿里云视频云,今天的分享主题是 “拥抱智能,AI 视频编码技术的新探索”。主要想和大家介绍阿里云视频云的两个前沿工作。

分享包括四部分,背景与动机、人物视频生成编码、机器视觉编码和未来展望。

1. 背景与动机

我将从人眼视觉、机器视觉两方面延伸介绍阿里云视频云探索 AI 视频编码技术的背景与动机。

视频本身的数据量非常大,一张 4K 图像原始大小为 24.3MB、4K 未压缩视频的带宽需求约为 6Gbps、一个超清摄像头每天产生的原始视频高达 63TB,只有进行了视频编码才可以传输、存储。

随着时代的发展,智能安防、自动驾驶、智慧城市、工业互联网等场景中的视频也可以被机器接收、感知、理解。

以自动驾驶为例,一辆车主要具备的系统或设备包括摄像头系统(检测前方物体)、夜视红外、雷达测距器、惯性传感器、GPS 定位器及激光雷达(360° 进行扫描),这些都由机器采集图像和视频,再交付给机器进行分析、发现并解决问题、完善功能。

机器在某些维度上的能力优于人类,比如观测精度、感知灵敏度、工作强度耐受性(机器可以全天候运转)、客观性、可量化性。

据 Cisco 统计,以机器视觉为主的从机器到机器的数据传输将占据全球数据传输的 50%,这是非常大的量。

无论是人眼视觉还是机器视觉,视频编码的原理都是一样的,即依靠视频信号本身存在的相关性:一幅图像中相邻的像素值接近,这是空域相关性;相邻图像的像素值接近,这是时域相关性;如果将像素从空域变换为频域,其中也存在相关性。这就是视频压缩的三个最基本相关性,空域冗余、时域冗余,信息熵冗余,由此诞生了视频编解码的三个主要模块,帧内预测、帧间预测,变换 / 熵编码。

冗余消除本身是无损的,但视频压缩会出现失真,失真是如何造成的呢?这是为了进一步提高压缩率,把视频信息变换到某个域上,例如传统编码通常变换到频域,再按照其重要性进行优先级排序,把优先级低的如高频信息直接丢弃或量化操作进行消除从而大幅度提高压缩率,所以是量化在提高压缩率的同时带来了失真。

综上,视频压缩依靠两个维度,一是相关性的消除,不会造成失真。二是将信息变换到某个域上进行优先级排序,对优先级低的信息进行丢弃、消除或量化。

基于以上视频压缩原理,在过去的 50 年中,全球范围内的视频编解码工作人员推出了一代又一代的视频标准,虽然标准一代一代更新,但都是基于划分、预测、变换、量化、熵编码的框架没有变过去年 JVET 社区定稿了 VVC 标准,在 VVC 之后也致力于传统编码和神经网络编码的两方面探索。

国内在定稿了 AVS3 之后,也在深挖传统编码和神经网络编码以希望进一步提高视频编码效率。在机器视觉领域,MPEG 成立了面向机器的视频编码工作组(VCM),国内成立了面向机器智能的数据编码工作组(DCM)。

以 VVC 为例,去年制定的 VVC 对比 2013 年颁布的 HEVC 标准,虽然压缩性能提升一倍,但深入研究每个模块中模式数量的变化,会发现帧内预测、帧间预测及变换都增加了很多模式,这意味着平均每个模式能够带来的压缩性能增益变得更小。

每个编码模式都是由视频编解码专家根据自身所学及理解对视频信号进行数学化表达,每个模式的本质都是数学模型,而人们掌握的数学模型都很简单,比如线性模型、指数函数、对数函数、多项式等。模型的参数量不会很多,一般是几个,最多是几十个。压缩性能提升愈发困难的原因也在此,人们能够规律化总结的数学模型相对简单,表达能力有限,但视频内在的规律性却是无限的。

从模型角度,基于人工智能的神经网络模型可以通过更多的参数不断提高数学表达能力。数学领域已严格证明神经网络能够表达任意函数空间,只要参数足够,表达能力就会越来越强。手动设置的参数只有几个或几十个,但神经网络设计的模型中参数可以多达几百万个,甚至 Google 推出了亿级参数的超大模型。

从上限来看,基于 AI 编码的视频压缩一定会比基于传统编码的视频压缩有着更高的性能上限。

从视频信号本身的冗余性角度,上文提到传统的视频编解码在过去的五十年里都在消除空域冗余、时域冗余和信息熵冗余。

除了这三个冗余,其实还有其它的冗余对视频压缩来说有很大的性能提升空间。首先是结构冗余,右下方的两朵花很相似,在编码中,如果已经编码好第一朵花,那么编码第二朵花时的很多信息就可以从第一朵花的编码中推导出来,无需完全编码。第二个是先验知识冗余,见右上图,如果用手遮住右半部分人脸,只留左半部分,由于人脸接近对称,我们依然可以想象出被遮住的部分,这是因为人们的脑海里有了人脸近似对称的先验知识。那么也可以让机器记忆先验知识,就无需把信息从编码端编码到解码端。

所以对于视频压缩来讲,结构冗余和先验知识冗余也很重要,传统编码并不是不能利用这两者,只是人工智能和神经网络在额外利用结构冗余和先验知识冗余上更高效,更游刃有余。

2. 人物视频生成编码

首先看一个简单的两帧编码问题,编码端先将第一张图像的信息告诉解码端,解码端已经接受了第一张图像并且解码出来,我们将其作为参考帧。此时,如何压缩当前帧?

(右上两图)在传统编码中,方法是将当前图像分为一个个图像块,每个图像块在参考帧中找到最相似的参考块,当前图像块与参考块之间的相对位移称为运动矢量,这样就可以基于参考块预测当前块的预测值,拿到当前图像最可能的预测帧,再将预测帧和当前帧的差值编码过去就可以了。

相对于图像压缩来说,视频编码的效率非常高,因为视频编码的时域预测、时域相关性非常强。但这个码率也不会很低,因为要编码的东西很多,比如图像块划分的划分信息,每个图像块的运动信息、残差值等。所以压缩效率虽然相比图像压缩高很多,但也达不到超低码率。

为了实现超低码率压缩,我们提出了 AI 生成压缩方法。(右下两图)不再将整张图像划分为一个个的图像块,而是将它当做整体,将整张图像通过神经网络转换至某种特征域,在特征域上提取少数关键点,只需将关键点传输到解码端,解码端收到后并基于参考帧就能够驱动生成当前帧的图像。

其中,关键点数目可变,例如实例中有十个点,所以每幅图像只需传输几十个数值即可,码率高出传统编码方式非常多。

对于整个视频来说,可以先用传统编码传输第一幅图像,再用 AI 生成编码传输接下来的图像,在编码端提取每一帧的关键点传输到解码端。解码端如何生成这一帧?首先提取参考帧关键点将其和当前帧解码的关键点一起送入神经网络中,得到特征域上的稀疏运动场。

两幅稀疏运动场都会被送入 Dense motion Net 中得到密集运动场,并同时得到一张遮挡图。参考帧、密集运动场和遮挡图再一起被送入生成器中,从而生成当前帧。

这是关键点在特征域的可视化结果。

以第一行的图像为例,第一副是参考图像及其关键点,第二副是当前需要编码的图像及其关键点,中间十副带颜色的图像是每个关键点在特征域上反映的运动信息。其中第三副反映的是整体人脸正面的运动情况,后面几副可能反映头部外侧的运动情况,靠近右侧的几副可能反映下巴或嘴唇的运动情况。最后,十副特征图上的运动场会融合在一起得到密集的运动场。

这是在整个驱动生成的 pipeline 过程中每个环节的主观展示。

第一列是参考帧,第二列是当前帧,第三列是编码过去关键点之后在解码第一步首先生成的稀疏运动场,在目前的案例中,稀疏运动场对每个图像来说使用的是 4图片4 矩阵,图中可以看到有 4图片4 个方格,这是一个稀疏的运动图。将稀疏运动场作用在参考帧上就可以得到第四列中当前图像的简图,可以看到第四列人脸的位置和运动已经非常接近当前帧,只是在纹理细节上还存在差距。接着,稀疏运动场通过更加复杂的运动模型后得到密集运动场,再重新将密集运动场作用到简图上得到第六列中运动场作用后的更精细的图像。最后将遮挡图作用到运动场后的图得到当前帧的生成图。

在人物讲话的数据集上对 AI 生成压缩方案进行测试,能够看到以下主观上的对比。

左边两列视频是最新的 VVC 参考软件编码的结果,右边两列是 AI 生成压缩方案编码的结果,我们的码率略低于 VVC,但能明显对比发现画面质量远远好于 VVC。VVC 本身的块效应、模糊度都非常严重,而 AI 生成压缩方案无论是在头发、眼睛、眉毛上的细节图都更优,在整个头部运动的流畅度、表情的自然度方面也有明显提升。

这是在码率接近的情况下的质量对比,可以说已经达到了代差级的质量提升。

在更低的码率场景下使用 AI 生成压缩方案会有什么效果呢?

实验中,VVC 码率不变,AI 生成压缩方案的码率变为 VVC 的 1/3,结果显示生成质量依然优于 VVC 的画面质量。

这里的测试视频分辨率是 256图片256,对于这个分辨率,AI 生成压缩方案只需使用 3~5k 的码率就可以实现用户之间的视频通话。由此可以推断,在弱网甚至是超弱网环境下,AI 生成压缩方案依然能够支持用户进行音视频通话。

3. 机器视觉编码

我们在机器视觉编码这块工作的最初动机是,现在的视频应用场景中,视频的编解码、视频的处理和机器视觉的分析都是分开的,而我们希望在未来能够将这几点结合,形成统一的系统进行端到端的优化和训练。

我们选择了物体检测任务,例如这张图像(右上图),可能来源于监控摄像头或自动汽车摄像头,物体检测就是判断图像中有哪些物体,这里的物体包括两个信息,物体定位 (图中的方框) 和类别识别(判断是行人、车辆等物体类别)。

选择物体检测任务的原因在于物体检测在当代机器视觉领域中,是应用最广需求最大的技术,其次它是众多机器视觉任务的基础,只有先完成了物体检测,才能进行姿态识别,例如只有先检测出 “物体” 是人,才能进一步判断他是摔倒或是行走等其他行为,在姿态识别完成后才能继续做事件分析。

对于一张输入图像来说,在编码端会有神经网络将图像从像素域转换到多个特征图,将特征图通过熵编码传输到解码端,解码端基于特征图进行解析,在重构出图像的同时完成机器视觉检测任务。

我们在编码端提出了创新性的 Inverse-bottleneck 结构(右图),网络模型是先宽后窄的设计。机器视觉领域的网络模型一般随着层数的加深通道越来越多,这样每一层才会更密集,视觉任务精度更高。但对于压缩来说不行,压缩是为了降低码率,不可能传输太多的数据,那么如何统一压缩和视觉呢?

我们发现,在特征通道图之间存在大量的、高度的冗余,而这些冗余信息是可以被压缩的,所以我们将模型设计为先宽后窄的反瓶颈结构,在基本不影响机器视觉检测精度的前提下大大提高压缩效率。

由于整个系统既要做压缩任务又要做机器视觉识别任务,我们把人眼视觉和机器视觉的损失放在一起形成了联合损失函数进行整体优化,并提出了迭代搜索来确定各损失项之间的权重关系。

在 MPEG-VCM 标准组上,全球很多公司进行提案。

我们的机器视觉压缩方案对比最新的 VVC 标准,在 COCO 数据集上的测试结果显示压缩性能提升了 41.74%,在近几次的 MPEG-VCM 会议上,我们的提案性能都保持第一名。

这是性能对比的几个例子。

左上方图像,拍摄环境光线很暗,对于机器来说需要识别图像中有多少人,最左边是 ground truth,它会框出人像位置,并标注 “person“,预测概率是 100%。VVC 和我们的方案均使用相同的码率来压缩这样一张图像,解码端各自得到失真后的解码图像。

在 VVC 的解码图像上进行识别,没有检测出穿红色短袖的男生,而我们的方案能够检测出这个男生,并框出位置,标注 “person”,预测概率是 98%,虽然没有达到 100%,但相比 VVC,已经提升了很多。

右下角的 ground truth 框出了六个人,同样在相同的码率下压缩这张图像,在 VVC 的解码图像上只能识别出一个人(白框),而我们的方案可以识别出四个人,对比 VVC 有非常大的性能提升。

4. 未来与展望

首先在人物视频编码方面,我们的目标是实现多人、多物、多运动的复杂场景下的超低码率视频通话及视频会议。

在视觉分析任务方面,我们的目标是实现可分离的多任务编码,编码端单通道、解码端多分支来实现多任务的统一系统。

以上是本次的分享内容,谢谢!

「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。公众号后台回复【技术】可加入阿里云视频云产品技术交流群,和业内大咖一起探讨音视频技术,获取更多行业最新信息。

拥抱智能,AI 视频编码技术的新探索的更多相关文章

  1. 直播平台搭建之音视频开发:认识主流视频编码技术H.264

    H.264简介 什么是H.264?H.264是一种高性能的视频编解码技术.目前国际上制定视频编解码技术的组织有两个,一个是"国际电联",它制定的标准有H.261.H.263.H.2 ...

  2. H.265视频编码与技术全析(上)

    H.265视频编码与技术全析(上) 一. 概述 作为新一代视频编解码格式,H.265得到越来越广泛的应用.不久之前,苹果公司在翘首期盼中发布了iPhone6,该款手机较之以往的iPhone,不仅仅只是 ...

  3. MPEG-4视频编码核心思想

    1 引言   当今时代,信息技术和计算机互联网飞速发展,在此背景下,多媒体信息已成为人类获取信息的最主要载体,同时也成为电子信息领域技术开发和研究的热点.多媒体信息经数字化处理后具有易于加密.抗干扰能 ...

  4. 【图像处理】DVR H.264视频编码基本知识

    视频编码技术基本是由ISO/IEC制定的MPEG-x和ITU-T制定的H.26x两大系列视频编码国际标准的推出.从H.261视频编码建议,到 H.262/3.MPEG-1/2/4等都有一个共同的不断追 ...

  5. 深度 | AI芯片之智能边缘计算的崛起——实时语言翻译、图像识别、AI视频监控、无人车这些都需要终端具有较强的计算能力,从而AI芯片发展起来是必然,同时5G网络也是必然

    from:https://36kr.com/p/5103044.html 到2020年,大多数先进的ML袖珍电脑(你仍称之为手机)将有能力执行一整套任务.个人助理将变的更加智能,它是打造这种功能的切入 ...

  6. 浅谈AI视频技术超分辨率

    泛娱乐应用成为主流,社交与互动性强是共性,而具备这些特性的产品往往都集中在直播.短视频.图片分享社区等社交化娱乐产品,而在这些产品背后的黑科技持续成为关注重点,网易云信在网易MCtalk 泛娱乐创新峰 ...

  7. EasyNVR智能云终端接入AI视频智能分析功能,用户可自定义接入自己的分析算法

    视频分析的需求 人工智能的发展和在行业中的作用就不用多说了,已经到了势在必行的一个程度了,尤其是对于流媒体音视频行业来说,这基本上是人工智能重中之重的领域,视频人工智能,也就是视频视觉分析的应用方式大 ...

  8. 视频直播技术-视频-编码-传输-秒开等<转>

    转载地址:http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653547042&idx=1&sn=26d8728548 ...

  9. iOS视频硬编码技术

    iOS视频硬编码技术 一.iOS视频采集硬编码 基本原理 硬编码 & 软编码 硬编码:通过系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软 ...

  10. H.265视频编码与技术全析(下)

    H.265视频编码与技术全析(下) 四.帧内预测模式 共35个(h264有9个),包括Planar,DC,33个方向模式: 除了Intra_Angular预测外,HEVC还和H.264/MPEG-4 ...

随机推荐

  1. SPI扩展点在业务中的使用及原理分析

    1 什么是SPI SPI 全称Service Provider Interface.面向接口编程中,我们会根据不同的业务抽象出不同的接口,然后根据不同的业务实现建立不同规则的类,因此一个接口会实现多个 ...

  2. JAVAweek5

    学习内容 进制 1.(十进制):752=2*10(0)+5*10(1)0+7*10(2)=752 (二进制):1011(二进制的数)=1*2(0)+1*2(1)+0*2(2)+1*2(3)   = 1 ...

  3. C#/.NET/.NET Core优秀项目和框架2023年11月简报

    前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍.功能特点以及部分截图等(打不开或 ...

  4. HTTPClients使用

    一. 创建httpclient对象用于发送get.post等请求 1. HttpClients.custom()的方式--自定义httpclient对象,多用于含有cookie的请求 1. Cooki ...

  5. MD5在文件安全中的应用与重要性

    一.MD5简介 MD5(Message-Digest Algorithm 5)是一种广泛应用的密码散列函数,由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)于1992年提出.它主 ...

  6. 算法2:Hanoi塔

    汉诺(Hanoi)塔 一.背景介绍 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了 ...

  7. Spring源码学习之Web数据绑定器WebDataBinder

    WebDataBinder 1.描述 特殊的数据绑定器用于从web请求参数到JavaBean对象的数据绑定.专为web环境,但不依赖于Servlet API;作为更具体的DataBinder变体的基类 ...

  8. Python——第二章:列表的概念

    在编程中,列表(List)是一种常用的数据结构,用于存储一组有序的元素.列表是Python中的内置数据类型之一,它允许你在一个变量中存储多个值,并且这些值可以是不同的数据类型,包括整数.浮点数.字符串 ...

  9. Pikachu漏洞靶场 XSS(跨站脚本攻击)

    XSS 关于xss的我也是一知半解,所以只放出payload来. 反射型xss(get) 修改maxlength属性之后提交如下内容: <script>alert(/xss/);</ ...

  10. P9344 去年天气旧亭台 代码

    不带滚动数组代码: #include <iostream> #include <cstdio> #include <cstring> #define int lon ...