写点什么

机器学习在视频编解码中的探索(一)

  • 2019-11-30
  • 本文字数:2058 字

    阅读完需:约 7 分钟

机器学习在视频编解码中的探索(一)

在 RTC 2018 实时互联网大会上,Visionular Inc 联合创始人兼首席科学家 Zoe Liu 进行了主题演讲,与大家一起分享了一场视频编解码的前沿探索。

1 Why Video Codec Matters?

大家都知道,从技术复杂度来讲,视频的编码和解码并不对称,编码器要比解码器复杂很多。那么,机器学习对编码可以做哪些优化呢?


大家目前讨论的比较多的是 3 个编码标准:一个是 MPEG 组织的,一个是从 VP9 到 AV1 的开源、免除版权税的,另外一个是我们自己在国内研发的从 AVS 到 AVS2、AVS3 系列。


编码的标准日新月异,一直在向前发展。而大家都会问,为什么视频编码那么重要?


以 JPEG 为例,它是一个图像标准,经历了几十年的发展。那么为什么几十年来 JPEG 没有被打败,反而被广为应用呢?很大程度上受益于它的广泛的商业用途和易实现性。接下来,我希望通过下图,和大家解释为什么视频编解码这么重要。


2013 年时,为了取代 H.264 编码器,谷歌推出了 VP9。海外用户看 YouTube,一般是两类手机,Android 上看到的是 VP9 的码流。由于 Apple 不支持 VP9 硬件解码,因此 iPhone 用户看到的是 H.264 码流。


谷歌曾做过一个统计,对比了世界范围内(不包含中国), VP9 和 H.264 的播放时长。从上图中我们可以看到,在印度、非洲等网络带宽不佳的市场,由于 VP9 的应用,大大优化了用户体验,首屏时间大幅缩短,并且卡顿大幅减少。


与此同时,采用新一代 codec 的应用,带来了用户体验的提升和新业务推进的可能性,这正印证了 Video codec 的重要性。


在编码器中,不论是 HEVC 或 AV1,都有 partition 的概念。熟悉编码的朋友都知道,HEVC 和 AV1 中都有一个四叉树的 partition。


比如,它的 superblock 在 AV1 中的大小是 128128,它可以继续向下做四叉树的划分,每个 128128 的图像块可以分成 4 个 6464,每个 6464 又可以分成 4 个 3232。以此类推,例如在 AV1 中可以分解到最小为 44 的图像块。


对于图像宏块而言,要做出一个 partition 的 map。统计表明,Video encoder 端 partition RDO 评估的计算会占到编码器复杂度的 80% 以上。


那么此时如何利用机器学习来尝试做优化呢?


如上图所示,第一行四张图是帧内压缩,第二行四张图是帧间压缩的实例。它展示了对于不同的图像块需要有不同的 partition。


原因就在于,每个图像块内容不同。对于帧内压缩,细节、纹理越多的地方,分块就越细致。对于帧间压缩,主要是对残差分块,主要是要看帧间的预测是如何进行的。从这个角度来讲,分块本身是由内容和预测模式决定的。


那么,对任一图像块,我们可以在内容上提取一定的 feature。大家都知道,当 QP 取值比较大时,即失真度比较高时,整块的内容就趋于平滑,那就会选择比较大一些的分块。QP 比较小时,会选择比较细致的分块。从这些方面可以看出,从块的角度,在 partition 的情况下,可以从内容、编码模式中提取相应的 feature,通过离线训练可以从机器学习中获得决策结果。


上图中这篇论文是北航的徐迈老师与他的学生们所做的一项工作。他们基于神经网(这里主要用卷积神经网)做出的对 partition 的基本分类。


在真正做 partition 时,一般的做法是分级进行的,比如块的大小是 6464,此时需决策是否要往下走,做 4 个 3232,到 32 再往下做决策是否继续划分,即决策是一层一层向下推进的。


这篇论文做了一个初步的尝试,经过神经网的训练学习,输出的是图像块最终的完整的划分结果,将多级的决策结果一次性输出为最终的划分图。这种方法的优势在于,能够最大限度地降低神经网本身带来的复杂度,一次性导出结果。


另外,它在采用卷积神经网络决策的过程中,包含了 early termination 的决策。因为当网路深度和每层节点数增加的情况下,神经网本身也会引入一些新的复杂度。这篇论文的结果是跟 HM 比对的,在 encoder 端的速度大约提升了 50%。


AV1 是开放的标准,是一个开源的 codec。我们和谷歌合作一起贡献了 libaom 开源代码。上图是我们的截屏。由于采用了机器学习的方法,使得 encoder 进一步优化。


从图中可以看到,这个 CL 中不是深度学习,而是采用了一个非常简捷的神经网。一般 CL 中的神经网构造是一层到两层,每一层的节点在 128 个左右。所以这里并不是深度学习,是采用了一个比较简捷的网络结构。


以往在优化编码器时,常常采用 empirical 的想法,即做 partition 时,从一级、二级到三级,可以提取当前 block 层的方差,也可以将当前的 block 一分为四,提取每一个 subblock 的方差,对其进行一些分析,然后做出决策,给出 hard-coded 阈值。当块参数的大小低于某个阈值或高于某个阈值时,继续往下做 partition。所有这些决策可以用神经网代替,因为此时可以通过积累大量数据对一个简单的网络进行训练,同时再用这个网络生成决策,判断是否需要四叉树继续下分。


从上图可以看出,用一个简单的神经网就可以把 encoder 速度提升 10 - 20%。所以,我们在采用机器学习的方法时,不一定是深度学习,因为神经网的概念已经存在很久了,主要是用大数据做训练,从数据集中设计网络,对相对复杂的非线性关系建模,从而使得 encoder 的速度以及编码效率进一步提升。


2019-11-30 22:461075

评论

发布
暂无评论
发现更多内容

一文看懂博睿数据AIOps场景、算法和能力

博睿数据

web前端培训Vue3 setup() 启动函数的原理

@零度

前端开发 Vue3

不面试别看!字节跳动2022年Java架构师岗面试题(试行版)发布

Java架构追梦

Java 程序员 java面试 后端开发

基于云效AppStack实现环境管理 | 开箱即用

阿里云云效

阿里云 研发管理 研发 应用交付 环境管理

直播回顾:SIMD 指令集在 OpenJDK 中的现状与未来 | 龙蜥技术

OpenAnolis小助手

Java Openjdk simd arm 龙蜥社区

最佳实践 | 运维效率提升10倍的秘诀

星汉未来

DevOps 云原生 智能运维

观测云新增俄勒冈站点,布局全球可观测服务网络

观测云

DeepMind爆发史:决定AI高峰的“游戏玩家”|深度学习崛起十年

OneFlow

人工智能 深度学习 DeepMind AGI

首版架构师全栈”成长笔记“一经发布就获得一致好评,我不允许你没看过

Java架构追梦

Java 程序员 java面试 后端开发

服务器与普通台式机的对比及发展趋势

Finovy Cloud

gpu 云服务器 GPU服务器 GPU算力

多商户商城系统如何对接电商收付通?

CRMEB

浅谈商业模式---《北大-真格创业课》笔记(30/100)

hackstoic

商业模式 创业公司

ImageKnife组件,让小白也能轻松搞定HarmonyOS图片开发

HarmonyOS开发者

HarmonyOS ArKUI 3.0

博云首批通过欧拉技术测评,联合解决方案通过验证

BoCloud博云

新闻

高级Java面试经验总结:多家大厂简历优化+面试题目+面经+薪酬等

Java架构追梦

Java 程序员 面试 后端开发

时序数据库 VS 工业实时数据库

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

Tapdata Cloud 2.1.4 来啦:数据连接又上新,PolarDB MySQL、轻流开始接入,可自动标记不支持的字段类型

tapdata

SaaS 云数据库 Real Time DaaS polarDB DaaS

新思科技连续六年获评Gartner魔力象限领导者殊荣

InfoQ_434670063458

新思科技 应用安全 Gartner

算法交易的最佳编程语言是什么?

非凸科技

rust 编程语言 交易系统 策略

看端点科技如何以行业实践探索企业数字化转型新路径

科技热闻

Android C++系列:vector最佳实践

轻口味

c++ android 4月月更

阿里云弹性计算对视觉计算的思考与实践

阿里云弹性计算

Metaverse 视觉计算

“数聚赋能”,让实时数据中台成为惠企、惠民政策服务应用的源头活水

tapdata

数据中台 数字政务 实时数据 智慧政务

PlatoFarm生态进展不断,通缩推动PLATO价值提升

小哈区块

「可视化案例Vol.3」数字孪生可视化园区,开启园区智慧管理新篇章

ThingJS数字孪生引擎

物联网 可视化 数字孪生

2022,「大厂云」还在找新着力点

ToB行业头条

全网最细的短网址系统设计与实战

星牛君

MySQL redis 布隆过滤器 Java EE

PlatoFarm生态进展不断,通缩推动PLATO价值提升

西柚子

【国产】ETL自动化调度运维管理平台 TASKCTL 8.0 分布式部署

敏捷调度TASKCTL

Docker DevOps 国产开源 大数据运维 TASKCTL

新品发布 | OpenHarmony面向教育行业的发行版+大赛预告来了~

拓维信息

活动 操作系统 OpenHarmony OpenAtom OpenHarmony OpenHarmony 3.1 Release

低代码之火,何以燎原?

BeeWorks

机器学习在视频编解码中的探索(一)_文化 & 方法_声网_InfoQ精选文章