宋利:编码既是技术也是艺术

  1. 云栖社区>
  2. 博客>
  3. 正文

宋利:编码既是技术也是艺术

livevideostack 2017-12-20 00:00:00 浏览674
展开阅读全文

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

责编 / Ant


“好为人师,博而不精,杂而不纯。”——宋利。


收到对宋利的采访邮件,正文开始是一段自嘲,让原本枯燥的技术采访变得生动。相比于之前几个采访,本文的信息量更大,不得不对严谨的学术界敬佩三分。本文是『下一代编解码』系列采访的第6篇,邀请到了上海交通大学任研究员,博士生导师宋利,他全面的解读了编解码器的现状与未来趋势。


LiveVideoStack:请简要介绍下自己,以及目前主要的工作方向,对哪些技术或领域感兴趣?


宋利:谢谢邀请。我目前在上海交通大学任研究员,博士生导师,研究方向是视频编码、图像处理与计算视觉。了解上海交通大学多媒体实验室,可以访问这里 http://medialab.sjtu.edu.cn


我属于兴趣广泛型的,对各类奇技都心生好奇。就视频而言,从视频生产、分发到消费,整个链路的相关技术都会留意,近期关注点有:


  1. 视频生产(production): UHD/HDR,360VR等新型视频内容的采集、加工、合成技术; 基于人工智能的视频处理技术;Video over IP;云化媒体生产系统;

  2. 视频分发(distribution/delivery):新型编码标准/技术、混合云+边缘媒体处理架构,低延迟传输相关协议和技术(CAMF、WebRTC、HTTP2)

  3. 视频消费(endpoint):新型视频播放器/终端软件,支持跨屏同步,动态渲染(VR)、强交互(AR)和AI

  4. 视频体验评价(QoE),视频内容保护(DRM)等,如区块链和媒体服务的联姻。


关于编解码器


LiveVideoStack:什么样的编解码器是一个好的编解码器?视频质量、码率、算法复杂度、对数据丢失或错误的鲁棒性等。


宋利:当我们评价一个东西是好或者不好,首先需要给出一个测度。从广义上看,编解码器的测度是多个维度的函数,维度包括:压缩效率(即码率和质量)、算法复杂度(时间、空间复杂度)、实现复杂度(平台支持能力、技术人员市场占比)、系统指标(可并行性、可扩展性、延迟大小、抗误码能力)等。由于这些维度之间是互相制约的,实际研发中只能取主要维度而牺牲其他方面,取得某种平衡。比如在视频内容生产领域用的JPEG2K、TICO等编码器,就强调低复杂度,压缩比并没有分发领域的HEVC、H264等高。再比如H264编码器,会分为不同的profile或类型,直播编码器码率通常是离线编码器1.5到2倍,就是为了降低延迟而牺牲了压缩效率。


LiveVideoStack:当下对于编解码器的研发,业界主要的研究方向是什么?其难点是什么?有没有一些典型或您十分看好的应用场景?


宋利:编解码的研发,大致有三类人:『吃碗里的,看锅里的,想田里的。』

第一类人是业界视频编码技术人员。大家主要关注于编解码的优化,解决的是低成本、高效率的问题,以Netflix、Youtube、Twitch、Hulu,奇艺、腾讯、优酷土豆等为代表。最近听到他们的一些报告,主题有内容自适应ABR、窄带高清、多流联合优化等,都是围绕降码率,提效率,帮公司运营省钱。


第二类人是业内标准或联盟的研发人员,工作在MPEG、AVS、AOM等阵营。视频编码这个领域有点像无线通信领域,工业界组成的标准组织带着往前走,每隔8~10年同步一下,update一代标准。背后的基本技术逻辑是RD(Rate Distortion Efficiency,率失真,可以替换成编码效率)倍增定律和摩尔定律(用来对抗复杂度的增加),目前比较热闹的是两大阵营:ITU/MPEG的FVC 和 AMO/谷歌 的AV1,作为两个编码技术聚集池,前者已经正式Call for Proposal(CfP)了,明年2月份对各个应标方案进行评测,确定新的参考平台1.0,前期的算法探测软件JEM在RD效率上已经超过30%的增益(主观性能更高),因此2020年出台下一代视频编码标准H.266应该是有把握的,不过编解码复杂度目前比较高(10倍)。AV1推进速度更快,已经close了,今年底将正式release最终的Spec。AV1在性能方面主要是和之前的VP9相比,Netflix和Google的测试,RD效率提升30%以上。AV1解码复杂度控制的较好,与VP9相比,只增加2倍多。所以,这两个阵营近期的工作重点应该是不一样,FVC还将主要集中在编码算法模块的提出和优化,参与标准打擂;AV1 从明年开始应该集中在平台设计与优化、降低编码复杂度等方面。


第三类人是第二类的硬化团队和颠覆技术的探险者。以往每一代视频编码产业周期中,基本按技术,标准,软件,硬件的顺序推进。一般做硬件的要等到标准定下,部署和需求达到一定规模时候才出手,所以做硬件的团队大多还在迭代当前市场上部署的版本,对新标准保持观望状态。不过互联网的阵营迭代速度很快,AV1在做软件的同时,硬件参考设计和IP核基本同步推进,相差也就几个月到半年时间。因此,预计2018年下半年AV1的硬编码就会有release。


另外一波人学界的居多,目前在尝试使用全新的技术对编码架构进行革新,比如人工智能,神经计算模型等。做编码的都了解,视频编码基本结构(波形混合编码)在过去几十年都没怎么变化,主要在于预算、变换和熵编码三大部件(及零件)的不断替换和完善。近期,学界已经提出了一些用深度学习对HEVC进行编码提升的研究工作,不过大多集中在环内滤波或后处理方面,还是属于模块级提升,没有结构突破,无End to End 学习能力。FVC和AV1阵营专家普遍认为,短期内深度学习还是干不过人工fine tune的各种编码模式(算子),还得继续潜伏一阵。


应用场景方面,个人比较关注两块:一是实时视频服务场景(像抓娃娃,在线示教,视频会议等),另一个是大分辨率浸润式VR视频服务,把视频编码推向更高、更快、更强。尽管VR在2017年遇冷,但暗流涌动,技术脚步丝毫没有减缓,各大玩家都在蓄力,预计后面两年会有大的机会。 


LiveVideoStack:大家已经开始研究H.266、AV1以及国产的AVS2,他们有哪些特点?各自的优势应用场景是什么?


宋利:首先来看H.266,准确来说是FVC(Future video coding),正式的H.266要等到2020年标准发布到ITU后才算数。它是HEVC/H.265的继任者,目前来说还在CfP阶段,在前期Study和CfE(Call for Evidence)阶段不少有潜力的技术已经亮相。代表性的工具有包括:


  1. 块结构方面:四叉树加二叉树(QTBT)块结构,大的编码优化单元(CTU最大256x256,TU最大64x64);

  2. 帧内预测:65个方向,多抽头插值,高级边界滤波,跨CTU的预测(CCLM),位置相关的组合预测(PDPC),自适应的参考样本平滑等;

  3. 帧间预测:OBMC模型,仿射运动补偿,双向光流,局部光照补偿(LIC), 更高精度MV,局部自适应MV, 高级MV预测,子PU级MV预测,解码端MV refine等(DMVR);

  4. 变换方面:DCT/DST多核变换,模式相关的不可分二次变换,信号相关的变换等;

  5. 环内滤波方面:双边滤波器(BLF), 自适应环内滤波器(ALF), 内容自适应限幅等;

  6. 熵编码方面:变换系数的上下文模型选择,多假设概率估计,更好的上下文模型初始化等。需要说明的是,正式打擂还没开始,上述有些模块完全可能被新模块替换或者踢出去,有些模块将被进一步完善和优化。应用方面,现在说可能还为时尚早,但UHD/HDR,VR等大分辨率视频服务应该是主要的出口。


AV1方面,尚没有全面深入地分析,下面的一些信息来自于Google团队今年的文章和报告,代表性的工具有包括:


  1. 编码结构方面:SuperBlock,大小可以为128x128。

  2. 帧内预测方面:65个方向预测,Top-right边界扩展,用于光滑区域的Alt模式,亮度预测色度,参考像素平滑。

  3. 帧间预测方面:8种矩形+契型,OBMC,扩展参考帧(ERF), Dual MC插值滤波(水平和垂直滤波器可以不一样),全局运动补偿,新的MV预测方法等。

  4. 变换方面:扩展模式(水平和垂直变换可以从不同类型变换核组合),递归模式(根据残差特性自适应地切分变换单元),合并模式(变换单元覆盖多个预测单元),长方形变换等;

  5. 环内滤波方面:方向Deringing滤波(DDF),有条件的低通滤波器(CLPF),维纳滤波器等。

  6. 熵编码方面:非二进制的多符号熵编码,自适应上下文,新的标识集合等。需要说明的是,他们在过去的1年中代码迭代速度比较快,有些模块级技术已经被替换或者合并掉。应用方面,AV1应该是和HEVC抢夺市场,特别是IPTV和OTT领域。


AVS2方面,总体来说,大部分模块技术是对齐HEVC的,特色技术是针对视频监控场景引入的背景帧预测技术,在静止摄像机场景下性能突出,显著优于HEVC(40%~50%增益)。关于AVS2的技术细节,北京大学深研院的『智媒之音』微信公众号,有系列的技术帖子进行介绍,在此不再赘述。应用方面,国家新闻出版社广电总局前段时间发文,明确要求4K超高清电视终端支持AVS2,将会推动AVS2落地。


LiveVideoStack:在做编解码器的开发或优化时,会考虑相关专利及其产生的费用成本吗?


宋利:因为我不是做商业编码器的,所以一些思考仅供参考。研发编码器公司大致有三类:靠编解码器赚钱的;自研编解码器自个用的;卖硬件平台送编码器的。


第一类公司是专业编码器公司或团队,代表性如哈雷、Atmel、Envivo(被爱立信收购),Elemental(被Amazon收购)等,规模其实都不算大,市场估值也不算高,因此专利方面其实不是太顾虑,MPEG LA也好,HEVC Advanced也好,不指望从他们身上捞油水。所以这些公司主要是根据市场需求和成熟度来决定开发和优化的节奏,自然HEVC是他们目前主要的产品对象。


第二类公司主要是互联网大玩家,像Youtube、Netflix,以及国内的爱奇艺、腾讯、优酷土豆,这些团队大部分都是以开源软件如ffmpeg/x264/x265/vp9等为基础进行优化,这类公司要么太牛叉,自己说了算,用自家的或free的,像Youtube、Netflix,要么追求快速落地也不差钱,终端也大多是自家能掌控的,目前用H.264的居多,H.265的也开始用,不清楚交没交过专利费(十有八九没交)。


第三类公司代表的是Intel、Nvida、ARM等公司了,这些平台级的巨头,估计不在乎这点专利费,为了巩固江湖地位,都是通过SDK方式免费送合作伙伴的。不过因为照顾面比较宽,往往初期性能优化的一般,给前两类公司或人员留下了空间。但是随着时间的推进,性能逐步都上来了,比如Intel Media SDK新版本已经把H265优化的相当不错了。


LiveVideoStack:普遍认为,硬件编解码器的画质没有软件编解码器的效果好。有没有一种能将硬件编解码器的海量处理能力与高画质结合起来的解决方案?


宋利:当说到硬编码器时,我脑海中default的应用场景是直播,并且是直连信号源(摄像机或者通过contribution编码器送过来的解码视频)。在这种应用中,受限于时延和线性快编,留给编码器时间窗口比较短,加之硬件编码器计算和buffer资源有限,像multipass、lookahead等一些复杂的编码优化手段就会disable掉,因此压缩效率会受限。软件编码器的应用场景更多的是点播或者延迟直播,并且可以部署在弹性的云上,如果并行扩展性设计的好的话,一些高级的复杂编码模式都可以开启,压缩能力能够充分施展,压缩效率自然更好。


此外,当我们说到画质的时候,其实更多的说的是重建视频的主观感受,并不是我们优化编码器时通常使用的PSNR(或者SSIM等)。对于特定的视频帧,无论是那个metric,码率或者QP的变化,画质的相对变化都能直接反应出来。难在不同内容的视频,人对画质的感受是很implict的,从不好到好的刻度是不均匀和非线性的。这给编码器优化带来了较大的自由度,也是各位编码老铁们发挥的空间。窄带高清,per-title,感知编码、视觉优化、内容自适应等都是工作在这个区间。我们常说,编码既是技术(Tech)也是艺术(Art),这里面有很多know-how的tricks,有工匠精神的老司机们往往更胜一筹。举个例子,我们曾对国外一款商业编码器和 x265,HM进行过对比测试,单看PSNR,商业编码器比不过HM,甚至x265,但是在体育比赛,歌舞晚会等实际场景中,画面的均匀性和一致性等主观方面(如画面之间闪烁性低),商业编码器优势明显。


另外补充一点,画质的好坏不只取决于编解码本身,预处理和后处理也很十分重要,甚至带来的画质提升效果要大于编码优化本身。


LiveVideoStack:FPGA/ASIC做编解码的前景怎么样?


宋利:我理解,问题的本意是想讨论一下硬件编解码工程师和软件编解码工程师的职业前景。首先,视频作为所谓最大的大数据,存取和交换都离不开压缩和解压。因此,背后的编解码技术(及工程师)是被需要的,短期不会被冷落。但是换个角度看,正是因为编解码无处不在,高频和基础的特点,尽管逻辑上常常放在应用层,但技术下沉或者说硬核化的趋势很明显。解码就不用说了,播放器大都调用芯片内置的硬解码。编码方面,情况好一些,NTT,索喜(Socionext)、富士通这些专业做编码芯片的厂商主要集中在专业领域。真正走量的互联网视频服务商大多还是用云+软编码的方式。不过如前面提到的,平台厂商有抄底的趋势,Intel和Nvida就是代表。特别是Intel,本身就是云计算的主力平台,其新的CPU+FPGA的计算平台值得期待,尽管现在主打AI对抗Nivida。但视频方面不难推测,Media SDK应该逐步支持到FPGA层面。从这个意义上看,FPGA/ASIC 做编解码前景还是不错的,适合于练内功的人,但就业口子不大,集中在少数几家。相比来说,软件编解码门槛低,口子宽但变化快。


LiveVideoStack:对于应届生或从其他研发领域转行学习编解码、多媒体开发的技术人,有哪些建议?


宋利:正好发挥点好为人师的特点,说点道的层面(惯用忽悠学生的套路)。我称之为又“红”又“专”,或者T型学习模型。“红“表示的是水平维度,强调知识面,”专“表示的是垂直维度,强调技术特长。处在一个技术层出不群和加速创新的时代,一方面需要在自己的领域中不断积累,形成核心竞争力,就视频编码而言,包括架构、算法或平台等很多不同的层面,很少有人对所有的方面都很精通,对初入行的人来说更是如此。面面俱道结果往往是蜻蜓点水,不如发挥自身特点,专攻一技之长。另一方面,也不能只顾低头拉车,不抬头看路。在不断积累特长的同时,也要通过多种方式扩展相关的知识体系,了解行业的上下左右。比如做编码算法优化的,要时刻关注新的平台(下层变化)、新的架构(上层变化)、新的应用(左侧变化)、新的通道(右侧变化)。之所以强调这一点,是因为各领域都在进步,隔壁老王没歇着,一不留神,可能就被人旁通或者截胡了。举个例子:近两年深度学习在图像超分辨率上取得很好的效果,编码4K视频的时候,可以通过先下采样成HD然后编解码,再通过后处理超分成4K。这个放在前几年可能只在低码率的应用上有效果,但现在这个优势可能提升至中码率了。这比直接在4K上做RDO优化要省事的多。所以既要见自己,也要见天地、见众生。


LiveVideoStack:能否推荐一些系统学习编解码、多媒体开发的图书、资料?


宋利:不说具体资料,之前采访中,大牛们已经给的比较具体了。说说术层面的东西,总结为8个字:


  1. 勤学:读论文,泡社区,看帖子;

  2. 苦练:多媒体领域最不缺参考代码了,从jm/hm/jem, 到 ffmpeg, x264/265, vlc...,花时间练剑; 

  3. 多想:这个类似于练心经,需要把知识和技能有机关联,形成自己的体系和toolbox,即插即用;

  4. 常聊:遇高人不能失之交臂,脸皮厚,多和高手讨教,是进步最快的方式


总之,『Never stop learning, learning from everyone. 』


欢迎自荐或推荐技术人加入『下一代编码器』系列采访,请邮件editors@livevideostack.com。


LiveVideoStack招募全职技术编辑和社区编辑


LiveVideoStack是专注在音视频、多媒体开发的技术社区,通过传播最新技术探索与应用实践,帮助技术人员成长,解决企业应用场景中的技术难题。如果你有意为音视频、多媒体开发领域发展做出贡献,欢迎成为LiveVideoStack社区编辑的一员。你可以翻译、投稿、采访、提供内容线索等。


通过contribute@livevideostack.com联系,或在LiveVideoStack公众号回复『技术编辑』或『社区编辑』了解详情。

网友评论

登录后评论
0/500
评论
livevideostack
+ 关注