写点什么

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

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

    阅读完需:约 6 分钟

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

2 ML to Coding Performance

AV1 是一个实例,它采用了神经网络、机器学习的概念,使得 encoder 进一步提速。使得用神经网代替经验决策。


那么,神经网是不是可以帮助我们对视频压缩做压缩性能提升?下面,我举三个例子,分享一下我们从哪些方面可以把神经网和深度学习用在编码性能提升上。


第一个,是从超分的概念来分享。大家都知道,压缩造成了信息丢失。信息丢失以后我们希望在解码端或者编码端的 inloop 过程中,重建丢失的信息。如果我们可以做到,就可以达到编码性能的进一步提升。因为压缩是一体两制,或在一定码率下提升画质,或在一定画质下节省码率。如果可以在一定的码率下重建失去的信息,就可以进一步提升画质,之后可以进一步节省码率,通过画质提升将降码率后失真图像的质量还原到原来码率的画质水平。


AV1 中采用了更多的工具,从而使其可以比已有编码标准,比如 HEVC 有进一步的提高。其中一个工具称作 restoration,里面提供两个滤波器,一个是 Wiener filter,一个是 Self-guided projected filters,仅这一个工具的 BDRate 性能提升在 1 - 1.5% 之间。


如上方右图所示,它是一个 restoration 的描述。那么它是如何把信息恢复出来的呢?我们可以想象,任何一个像素点是多维空间的一点,那么一个小时的视频一定有 n 个图像帧,每个帧里有 m 个像素点。如果把每个点都想象成一维的话,任何一个视频实际上是高维空间中的一点。做这种想象以后,上方图右侧的 Xs 就是原始的视频,经过压缩,就得到了高维空间中的另一点,如果这两点重合,就是 lossless coding 的过程。这两点在高维空间中距离越远,失真度就越大。重建的过程就是力图将压缩后的 X 那一点带回来与原来的点越来越近的过程。


AV1 中有一个 guided filter 的概念,通过这个 filter 可以从解压以后的 X,恢复成 X1、X2 两点,也就是得到两个滤波器的结果。做完后发现,这两点离原来那点还是差得非常远。那么 AV1 进一步通过 X1、X2 建立一个平面,把原有的视频所对应的点,在现在这个平面上做投影。可以看到投影以后所得点就离原点近了很多,这就是一个重建的过程。


最终 AV1 只要求在码流中传递两个参数 α 和 β,需要高精度传输过去,在解码端用同样的 restoration 就可以恢复出比较高质量的图像。从这点可以看出,这一个工具就可以达到 BDRate 的 1% 以上的提升,我们可以用学习的概念得到更好的图像复原,所以很自然而然就想到超分方法的运用。


现在,超分辨率在机器学习中已经得到广泛应用。压缩以后的图像,通过学习可以重建出一个更高质量的图像,利用这个图像可以在我们现有的编码结构中加以运用,从而达到更好的 coding performance。


这是我们和杭师大的丁丹丹老师合写的一篇论文,主要探索重建图像。可以在四方面加以应用:第一,插值滤波;第二,In loop filter;第三,可以通过利用多个参考帧,重现出一个更清晰的参考帧;第四,Out loop post-processing filter。


这些都是从学习的角度,利用已知的参考帧重建出更高清晰更高质量的参考帧。或者是利用插值滤波,因为插值的获取也等价于重建出一些原有的信息。从我们训练集数据中得到的信息,存储到神经网络结构以及其相应的参数中,再加上已有的视频数据得到重建的信息,利用重建信息帮助我们提升编码的性能。


上图是进一步的一个例子,包括前向帧和后向帧在时空上进行的联合重建。


最后重建的结果是一个超分辨率图像。同样的码率,在解码端可以运用该技术使得视频质量得到进一步提升。视频在用多帧分辨率做重建的过程中,由于每帧的视频中有一个运动矢量的概念,所以这篇论文最主要的贡献,是在原有方法的基础上做了一个像素对齐,这是视频相对于图像在处理上比较特别的地方。


徐迈老师的另外一个工作,也是利用学习恢复在编码过程中失去的信息,不过不是提高分辨率,而是提高图像的质量,去除编码后图像的 artifacts。


我们在编码解码过程中会发现,每一帧的质量有波动,任何一个图像帧由于 QP 的不同,每帧质量会不同,有些帧的质量比较好,比如我们通常说的 Key frame,这篇论文中把这样的帧叫做 PQF。


如果我们可以把 PQF 的帧识别出来,用学习的办法把质量比较差的帧的质量弥补、提升,这样不仅可以提高原本质量差的帧的质量,更可以优化序列中各帧的质量到更高的水平。


视频帧与帧间的质量保持平稳是比较关键的。举一个例子,做针灸的时候要扎很多针,如果每一针的力度相差不多,患者会觉得 ok。如果突然一针的力度很大,人就会记住那一针的感觉。而人眼观看视频也是一样的。


首先第一个工作就是识别视频中哪些帧质量比较高,因为此时解码端的原视频是不可得的。这个工作主要利用类似无参考图像质量评价(no reference image quality assessment)的方法来进行。在没有原视频的基础上,有一项研究是无参考质量评估,这篇论文借鉴于那个领域的工作。


2019-11-30 22:46671

评论

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

第二周作业

大雄

依赖倒置

架构师训练营第二周学习总结

子豪sirius

极客大学架构师训练营--编程的未来 面向对象 依赖倒置原则 -- 第二次作业

John(易筋)

极客时间 极客大学 架构师 极客大学架构师训练营 依赖倒置原则

架构师训练营 - 第二周作业

Melo

架构师训练营第二周 - 总结

无心水

极客时间 架构师 极客大学架构师训练营 23种设计模式 面向对象设计原则

极客大学架构师训练营 编程的本质与未来 第三课 听课总结

John(易筋)

极客时间 极客大学 架构师 极客大学架构师训练营 编程的未来

OOD设计原则之DIP

无心水

极客大学架构师训练营 面向对象设计原则 OOD SOLID

第 2 周 - 课后作业

大海

软件设计原则

jason

架构师实现自己架构的主要手段

_MISSYOURLOVE

极客大学架构师训练营

设计原则之依赖倒置和接口隔离

极客大学架构师训练营 依赖倒置 设计原则 接口隔离

训练营第二周总结

Mr冰凉

第 2 周 - 学习总结

大海

极客大学架构师训练营

架构师训练营第二周作业 (3)

烟雨濛濛

架构师训练营-week2-作业

晓-Michelle

极客大学架构师训练营

训练营第二周作业

Mr冰凉

使用接口隔离原则优化 Cache 类的设计

极客李

第 02 周 开发编程框架 命题作业

Jaye

Week 02- 作业:设计原则

dean

极客大学架构师训练营

架构师训练营第0期第二周作业

无名氏

依赖倒置原则 DIP 依赖反转原则

分布式唯一ID解析

Chank

架构师训练营-week2-作业

sljoai

作业 week

架构师训练营」第 2 周作业

edd

架构 极客大学架构师训练营

架构师训练营 Week 02 作业

Wancho

架构师训练营 - 第二周作业

zcj

极客大学架构师训练营

架构师训练营第2周总结

Glowry

极客大学架构师训练营

Flink on Zeppelin (3) - Streaming篇

Geek_8o1tcx

大数据 flink 流计算 Zeppelin

依赖倒置原则

Halley

架构师训练营 -week2-总结

sljoai

架构师训练营--第二周作业

_MISSYOURLOVE

极客大学架构师训练营 第二周作业

小师妹学JVM之:深入理解JIT和编译优化-你看不懂系列

程序那些事

Java JVM JIT 签约计划第二季

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