近年来,内容业务在行业蓬勃发展。淘宝也在积极进行内容化转型,本次LiveVideoStackCon 2021 上海站大会我们邀请到了阿里巴巴淘系技术高级算法专家——王立波(庄恕),回顾淘宝从图文到短视频直播的发展历程,介绍音视频算法在其中的应用和未来的投入方向包括编解码、视频处理、音频通讯与互动。
很高兴与大家进行交流与分享,首先介绍一下自己,我是来自淘系技术部的王立波,花名庄恕,今天分享的主题是音视频算法在淘宝中的应用。刚接到这个任务时,觉得题目特别大,可以讲的东西特别多,经过考虑我还是决定集中讲3个观点,可以为大家介绍得更详细。
这三个观点分别是:视频压缩有效降低成本(这个观点在业界应该已经被大家所接受)、视频处理提升画质体验(随着阿里云的窄带高清的推广,也逐渐被大家接受)、音频技术是新的生产力(这是淘宝过去1-2年发力探索的方向,希望能够为行业带来新的思考)。
01
业务介绍
首先我简短介绍一下淘宝的内容业务。随着通信技术的发展,互联网内容生态从2G时代的文字,过渡到3G时代的图片,再到4G时代的直播和短视频;对于淘宝来讲,同样也面临“内容化”的全面升级。
淘宝从PC走向移动,从图文走向直播短视频,从传统电商走向内容电商再到发现电商、兴趣电商。在过去的2020年,淘宝直播的GMV突破4000亿,去年双十一一天之内有超过7亿人次观看淘宝直播;2020年底随着点淘,逛逛的推出,短视频成为内容业务发展的新引擎;在这个飞速发展过程中面临巨大的成本压力。
02
视频压缩有效降低成本
2.1 从图片压缩说起
第一个观点,视频压缩有效降低成本。
说起编解码,可能不得不先提图片压缩了,这是一张小小的商品详情图,在直播短视频兴起之前,图片是大家获取信息主要手段,随着用户增长,成本压力越来越大,过去几年中,淘宝图片日均播放量超过千亿次,如果通过降低质量来降低成本会牺牲大家的体验,所以我们希望依靠技术升级来提高压缩效率。
2.1.1 图片压缩标准的演进
大家应该很熟悉图片压缩。图片压缩实际上是一个去除空间冗余的过程,从标准发展上来看,主要经历了JPEG,基于VP8内核的WebP,以及HEVC MSP三代。
这里我对各种格式做了一个简单总结,JPEG是目前使用最广泛的图片压缩标准,从1992年公布至今已经接近三十年,它非常简单高效。10年前左右,Google基于VP8内核发布了WebP格式。WebP在块划分,预测,变化,量化,熵编码方面比JPEG更优,且增加了Deblock功能;HEVC则比WebP更进一步,通过多个工具的升级来提升压缩效率,另一方面,由于Tile划分及Wpp技术的引入,HEVC给Codec工程实现提供很多并行化的手段,这对现代多核CPU来说比较友好。
为了比较三种格式在不同场景数据集下的压缩效率,我们设计图中实验。得出的结论是WebP比JPEG大约提升29%的压缩性能,HEVC对比JPEG大约提升接近50%压缩效率。
2.1.2 淘宝自研APG格式
APG是淘宝自研的图片格式,有三个特点。第一,有非常高的压缩效率,对比JPEG节省50%码率,非常接近HEVC;第二,高效率的移动端解码器,对比Webp减少20%解码时间;第三,支持Alpha通道和动图,动图被广泛使用的是GIF格式,而GIF没有考虑到帧与帧之间的相关性,压缩效率不高,而APG对比GIF节省10倍体积;
除此之外,我们对整个系统的架构方面也进行了大量工作,比如高并发实时响应、CDN的下发策略、存储和计算分离,多内容灾等策略,最终实现了淘宝千亿级的实时图片处理系统,在大大节省业务成本的同时也保障了画质体验。
2.1.3 内容业务进化为视频为主
随着内容业务的进化,视频和直播占据了主要流量。一方面信息表达从空间维度拓展到时间维度,另一方面,分辨率也提升到720P,1080P甚至4K,消费时长也成倍增长,(刚才陈老师有数据,每个人花费在视频的平均时间可能有好几十分钟)。我们也知道,每一代视频压缩标准相比上一代有50%的码率节省,从MPEG4到H.264/AVC到H.265/HEVC,再到去年发布的的H.266/VVC,很自然我们会想到通过升级编码标准来节省视频成本。
2.1.4 HEVC在视频业务落地挑战
首先我们探讨一下HEVC在视频业务落地的挑战。HEVC标准在2013年公布已有8年时间,但直到最近几年才在业务上大规模落地,这里主要有以HM下几个原因:
首先是编码速度,H265的官方模型HM,在普通PC上编码720P视频时只能达到0.1fps,想象一下,压缩一段十分钟的视频需要花费一天甚至几天的时间。业界最好的开源编码器X265,在慢速档也只有6.8fps,距离30fps实时编码的需求有相当大的差距;
其次是编码质量,由于复杂度的原因,X265仅比X264节省18%的码率,远远达不到HEVC相比AVC理论上的上限值(HEVC标准在设计时以50%的码率节省为目标);
第三是码率控制,业界有许多场景的码率控制方法,比如ABR、CBR、CRF,但现在实时音视频的业务场景非常复杂,无法直接使用这样的码率控制方法;
第四是解码的兼容性和性能,也是大家普遍关心的问题。用户观看环境多种多样,有Android、IOS、Web的H5观看,H265在H5上的支持不太好,限制了它的发展,硬解设备兼容性也不完善,所以在解码兼容性方面也面临着很大的挑战。
2.1.5 S265编码内核优化
S265编码器是2017开始研发的,花费三年多时间使之达到较好的状态。我们主要在编码工具、快速算法、工程优化、码控方法、框架优化方面做了大量的优化工作从而提升压缩效率和编码速度。
下面为大家详细介绍一下速度优化的相关技术。
1、Cu深度预测算法,HEVC的块划分从64划分到8*8,深度有4层,如何预测出CTU的划分深度是具有挑战性的事情。HM为了确保编码性能会对每一层都计算其RDcost,我们这里结合纹理复杂度、时空域相邻块及前处理运动信息,做到比较准确的Cu深度预测。进一步深度预测方面有许多研究,比如一些机器学习,深度学习的方法能够精准预测块的划分层级。
2、自适应的EarlySkip算法和RecursionSkip算法。这两个算法比较类似,EarlySkip的目的是在本层跳过其它模式的计算,而RecursionSkip目的是跳过当前层不再Split。X265也有类似的技术,我们比X265更进一步,做RS时会同时考虑skip和merge模式子块的satd,做ES时,会同时考虑最佳模式的cost大小避免残差过大,我们的结果做到在相同速度条件下对比X265相当程度的节省码率。
3、All Zero Block的检测。如果一个块经过量化后是全零块,就没有必要进行RDO及编码了,但怎样预测一个块是All Zero Block。我们发现一种方法可能适合于一种大小的块,在8*8中比较准确,但放在32*32中不可用,所以要根据块大小及内部纹理强度,更加精确地预测出是否是All Zero Block。
4、Fast Intra Prediction。这个技术有很多人研究,H.265总共有35种预测方式,如何快速找到预测角度,有许多相关论文。我们使用Bayes估计模型,在横向及纵向找到准确方向,再去做细分角度预测,提高角度预测的速度。
5、分像素的搜索。传统的分像素的搜索在整像素最佳点上下左右找4或8个点,相对来说计算量比较大,根据整像素结果通过误差平面估计模型推导出分像素点的位置,从而节省分像素的计算个数。
6、多参考帧的选择。为了提高压缩效率,现在的编码器会选择更多参考帧,比如在一个方向选择3到4个参考帧,我们会根据参考帧的质量,距离来做加权,选择适合的参考帧。在拿到一个比较好的结果后如何提前跳出其它参考帧的遍历?多参考帧是提升压缩质量的一个很好选择,但需要避免计算复杂升高。
7、Distortion的快速估计。在RDO过程中要对误差进行仔细估计,如果用传统下的SATD做的话,效率不高,但如果做完整的RDO计算非常耗时,所以我们有残差的预估模型,从量化后的系数中用模型推导出Distortion的结果避免再做反量化,反变化。还有像Bits估计,RDCost的另一个分量是Bits代价,用一次完整的熵编码会非常耗时,如果用一个分段线性模型能够估算出来Bits来,我们就可以快速做出RDO的计算。
其它的比如Deblock,SAO优化偏一些工程方面手段。
除了快速算法之外,我还对压缩性能做了一些总结,速度不变的前提下,相比于X265,我们有>30%的性能增益。我们的编码器在以下几个方面有性能收益:
1、第一个码率控制。码率控制的目标是把码率分配到更有价值的地方。它分帧级别码控和块级别码控。在帧级别码控中,我们对I帧码控和P帧码控做了精确的预分析,在块级别码控中,我们设计了增强型的Cu-tree算法。
2、分层B帧以及参考结构的优化。分层B帧在实现方面不难,对压缩效率方面有大的帮助。前面介绍了GOP结构的优化,我们会对参考帧的选择会做权衡。
3、大家知道在静止场景下,分层越多压缩效率越高,但在运动场景就不那么有效,所以我们实现了自适应的GOP Size,并自研了Scenecut算法。能够适应不同运动强度、场景切换的需求包括淡入淡出的需求。
4.此外,在Bi-Search,GPB,LTR这几个工具,在开源软件X265是没有的,但对提高预测效率很有帮助;MCTF工具对编码噪声的去除非常有帮助,我们将这几个技术加入到S265之后获得了5%以上的BD-rate收益。
5、2-pass是在求解一个全局最优的Qscale,它在离线转码场景中被用到,允许对视频做更多分析,但在求解过程中,失真度量是MSE,我们对度量函数进行了重新推导,获得5%压缩性能;
6、Dynamic CRF和Pboffset,常规做法是是固定帧级P,B帧的Offset,我们会根据帧的复杂度来调节帧级QP值;
7、AQ和RDO的代价计算通常基于MSE,但如果是针对SSIM指标的话,可以推导SSIM的模型,RD也一样。
8、针对会议场景,我们还实现了IBC工具,对PPT投屏有帮助。并专门设计了对屏幕内容优化的搜索算法,传统的快速算法如菱形搜索、六边形搜索在SCC场景下效率很低,很难找到最优解,但如果用自研的算法搜索就有较好的效率提升。
上述是S265技术的介绍,记得在2016年的时候,金山KS265第一次参加MSU比赛获得了非常好的成绩,后来国内有不少同行参赛也获得了不错的名次。阿里巴巴S265从2017年开始投入研究到2020年首次参加MSU比赛, 我们在比赛中获得了3项第一:1080P 30FPS PNSR指标第一、1080P 1FPS PNSR指标第一、1080P 30FPS主观质量第一。
2.2 场景自适应编码
除了核心编码器之外,在编码器应用方面,我们还自研了一套场景自适应编码方法,分为三个步骤:
1、视频分析:利用机器学习方法做视频切分,并得到高层语义分类,比如动画,体育,秀场,商品介绍等;
2、另一个维度看利用信号分析手段检测出视频的底层特征,比如运动强度,纹理特征,噪声强度,亮度特征等,根据高低维度信息决定编码参数。
3、自适应决策引擎(ADE):根据语义特征和信号特征以及网络状况,决策出最佳编码参数组合。这个决策过程被建模为一个带约束优化模型;
2.3 S265解码提升覆盖率
一直以来,H265的解码兼容性是大家关心的话题,假如生产端编码出265码流,但播放端不能支持265解码,需要在服务端转码成264格式,这不仅不能减少CDN带宽,反而会增加转码成本。在解码这一侧我们做了很多工作:
1、硬解码适配。对市面上基本所有机型(>1000款)都进行了适配;
2、自研高性能Native H265解码器,在小米5 720P的设备上做测试得到240帧左右的速度,通过很低的功耗实现实时解码。
3、H5的解码。H.265在H5中没有支持,我们基于WebAssembly技术来支持H5的播放。目前可以做到在i7电脑上1080P 30fps的实时解码,CPU消耗在30%以内;
2.4 淘宝编码器落地历程
基于以上的编解码内核和应用方面的探索,我来介绍一下淘宝编码器的落地历程。2017年开始投入S265的研究,经过一年多时间,开始在直播业务的落地;2019年的Q1第一版上线后结果不算太好,大约节省30%码率;2020年Q1第二版上线后节省40%码率;今年的Q1第三版结合窄带高清技术实现了50%码率节省。短视频方面,我们尝试将S265应用到淘宝短视频转码,2019年Q3第一版上线,2020年上线第二版。
基于在S265核心编码器上的积累,我们从2020年Q2开始了S266编解码器的研发工作,并率先在行业内公布了可商用的S266解码器。
解码器方面对比VTM实现单核3.5倍提速,多核16倍提速;在高端的手机(IPhone12、P40)实现4K 30FPS解码,低端手机720P双核实现30FPS解码。720P内存消耗<35m< span="">和Binary<1m< span="">,对大型APP来说非常关键,包过大时安装下载会受阻。
我们内部正在做VVC编码器,目标是1FPS Slow档对比X265 Veryslow节省50%码率;30FPS Fast档对比X265 Medium节省40%码率。大家知道VVC比HEVC会更慢,一段1分钟的4k视频用HEVC的HM压缩需要几天,而如果用VVC的VTM则可能需要一个月,时间消耗会非常长。目前我们Slow档已经做到比VTM提升100倍速度但是压缩效率接近。
总结一下,淘宝的S265智能编码方案目标是让视频更清晰,覆盖所有业务场景,包括图片压缩、会议SCC、直播、云转码甚至云游戏。
业务策略上包括场景分类自适应、智能码控、针对不同场景的延时需求,做延时的适配及优化(在非常低的延时下达到接近不限延时的压缩效率)、算力自适应(根据不同的设备自适应调节编码的速度档次)。
编解码内核包括码控及前处理、编码工具集、快速算法,编码框架等优化。系统平台包括基于ARM平台的(armV7/arm64)及X86实现(SSE/AVX)、目前在考虑基于FPGA、ASIC的实现,还有质量评价系统和训练集群来辅助编码器研发。
03
视频处理提升画质体验
下面介绍视频处理提升画质体验的观点。
3.1 视频处理提升画质
视频失真来源于很多方面:包括过曝失曝、缩放、失焦、频闪、色彩损失、压缩损失、噪声、抖动、帧率下采样。我们有自己的视频增强工具集做对应适配比如去块失真(DeBlk)、超分辨率(偏向端侧的和服务端不同版本的模型)、纹理细节增强、视频去抖(DEI)、色彩增强、暗光增强、时空域去噪。
3.2 淘宝短视频窄带高清转码
淘宝短视频的整个转码迁移到窄带高清技术上,从视频生产链条分为内容编辑、上传(上传要求上传成功率高、速度快,我们有多PASS上传,切分上传、转码、审核(有低质、失真视频需要筛选)、播放(根据播放设备能力做后处理及渲染)。
向大家介绍一下转码服务,它的核心技术是窄带高清和S265,分别有两个视觉处理模型。首先是窄带高清的处理模型包括质量分类,细小纹理去除、脱焦区域弱化(节省码率)、易感知纹理增强(增强视觉体验)、人脸保护(避免过度增强引起体感不好)、马赛克修复、去隔行扫描。S265视觉压缩模型有三个点,人眼感知与失真拐点(BD-rate曲线刚开始较陡,向后较缓,要找到高性价比的点,感觉不出更多的失真又可以达到合适码率)、码率与分辨率甜蜜拐点(不同码率在不同内容上适合于不同分辨率压缩。如果一个非常低的码率300K强行压缩1080P出来都是块主观体验很差,如果压缩540P、360P可以获得更高的视觉体验)、场景分类编码(不同分类场景适合不同编码参数、码率的选择)。
3.3 电竞场景中的美颜
在内容生产中美颜作为一项基础功能,已经被人们广泛接受,但是常规美颜在电商场景中存在一些问题,比如过度美化,商品变色,背景模糊,资源消耗大等等;在PixelAI美颜中,我们使用了Face3D重建来保障形变的自然,使用AI肤色模型来保证美颜不会伤害到背景和商品。
3.4 HDR10端到端系统
随着采集和显示设备的发展,HDR 10Bit逐渐有一些应用,我们觉得HDR10有三项核心技术:第一是动态范围。在低照度、曝光过度场景下帮助我们看清内容;第二是色域空间。支持BT2020提升色彩还原;第三是10bit位深。HDR对我们的商品还原会非常有帮助,因为电商直播和短视频中最核心的是还原商品而不是美化商品。
但HDR是一个端到端的系统,需要考虑到各种设备的兼容,所以我们做了一些适配来提升用户体验,比如普通相机拍出的内容就用普通通道传输解码,而一些高端设备支持HDR10,可以把内容做10Bit压缩,传输,在对端根据播放设备能力,做HDR To SDR、10Bit To 8Bit的转换来保证质量,对于好的手机就可以得到最好的HDR体验,一般手机也能得到基础的HDR体验。图中可以看到HDR技术使照片颜色更接近实物颜色。
04
音频技术提升体验和生产力
第三个观点是视频技术提升体验和生产力。音频在过去几年都伴随视频出现,而在去年Clubhouse的发布,大家觉得音频可以独立玩,这对音频技术来说是一个很好的启发。除此以外,音频的技术还可以辅助我们做内容的生产、审核及各种音频处理,个人认为音频会是后续很重要的生产力。
4.1 业务:用户数和时长
对内容业务来说,最核心的是用户数和时长。对于技术来说,如何提升消费体验,提升主播生产效率,做好平台治理工作是核心工作。在这几个方面音频都可以起到非常重要的作用。
在主播角度,音频技术可以来做口播自动剪辑、来客提醒(不用一直守在电脑旁边)、开播辅助、字幕和配乐生成。在用户角度,音频的互动可以支持连麦、游戏、猜价格、语音评论。在平台角度,音频可以监管黄暴政、盗播、盗链、检测空镜。
分享几个典型案例。第一,音频技术提高音质体验。这是一个简单的音频传输系统,采集、预处理、AEC/ANS/AGC、编码、网络传输(FEC/NACK技术)、对端(Jitter Buffer/NETEQ)、解码、重采样。要实现高音质体验,我们在每个环节都需要做非常细致的工作:采集中做高保真,双声道处理(Alidenoise、回声抑制、智能美声),编码中做自适应码率(HE-AAC),传输过程要保障传输质量QOS(FEC/NACK),接收中还需要原音频数据(PLC/NETEQ),播放中应用各种音效技术(3D音效、空间音效、重低音)来提升收听体验。
直播内容中,对音频的适配也非常重要。(陈老师提到一个例子:如果是音乐直播间,用普通模板做音质会很差,所以需要几套针对不同类型直播间的声音模板。)在这样的系统上,我们支持淘宝直播,语音聊天室等业务。
4.2 AliDenoise——让声音更清晰
淘宝自研的AliDenoise技术是一个智能降噪技术,可以使声音更清晰。传统的降噪是根据时域傅里叶变换 维拉增益来做,痛点是对非平稳噪声抑制差,在低信噪比失效,而AliDenoise根据端到端的语音降噪,用数据驱动方式,基于先验信噪比方法做模型训练。还有Cache Buffer的流式处理以及1D卷积 模型小型化的工作,核心优势是降噪能力强、语音保真度高(我们做了一些竞品对比,AliDenoise的主客观指标都超过竞品)、极轻量小模型(1.6M的模型可以在普通手机实现降噪,且CPU消耗只有6%)、延时可控(可根据设备能力做延时调节)。
有三段音频,第一段是街边的场景,是原声;第二段是RTC处理后的效果(汽车走过的声音比较明显);第三段是AliDenoise处理后的效果,可以听出它对非平稳噪声的抑制很好,且人声保留度高。
第二个例子是端上互动。直播答题是前几年非常火的互动玩法,2020年双十一点淘推出了猜价格活动,答题交互从触屏到语音,需要低延时、高并发、低误识率。如果用服务端ASR做,会需要上千台服务器来支持同时在线10万人。基于这样的痛点,我们采用了自研离线ASR技术,在端上做语音识别。可以做到模型大小13M,内存大小50M,字错误率1.3%,识别延迟<50ms的水平。
第三个案例,语音技术可以辅助短视频的直播编辑生产。在“亲拍”APP中可以做到辅助“逛逛”的内容生产。内容生产中有非常多需求,包括删除无用片段、自动添加字幕,旁白、音乐标签,自动配乐、音频变速,变声,降噪。借助后台一整套技术和曲库(虾米1000万曲库、ASR以及信号处理算法),我们提供一键导入、一键编辑这样的音频功能比如停顿删除、感知配乐、自动字幕、自动变声。通过音频技术大大提高编辑效率,原先30min的编辑通过可以降到3min,质量也会比较有保证。
4.3 直播短视频音频解决方案——TaoAudio
我们给淘宝业务提供了一套直播短视频音频解决方案——TaoAudio。在业务上支持淘宝直播、点淘、逛逛、亲拍、语音聊天室等需求。在应用方案上有直播看点、直播互动、直播安全、短视频编辑。在算法技术中有三个核心技术是音频处理、音频安全、语音交互。基础设施包括端上推力引擎、云上资源、端侧设备等。
总之音频的核心是良好的音质、很强的互动体验及平台安全,在未来可能还有丰富的音乐体验。
05
淘宝音视频算法的发展
最后和大家分享淘宝音视频算法的发展。
1、下一代APG2要做到比前一代有更高的压缩效率;
2、S266的落地,将S266真实的应用到业务场景中;
3、AR 3D 多视角直播的探索。传统的直播已经固化很多年了,我们希望通过更多技术提高交互和沉浸式体验;
4、下一代窄带高清技术。以更高的质量和更低的成本呈现;
5、端侧ASR技术。前面提到的“猜价格”应用到ASR,还需要进一步提高准确率并降低成本;
6、场景自适应语音增强。传统的语音增强没有考虑到语音环境也没有做更多的自适应(比如在一个嘈杂的环境或是安静的环境分别要用怎样的模型),加入场景检测机制可以适配收音场景和听音的环境;
7、智能的音乐配乐服务;
8、大规模无参考评价系统。
以上是本次分享的内容,谢谢大家!
The cover from creativeboom.com