浅谈视频编码
随着社交网络与移动互联网井喷式的发展,视频内容已经占据了全球互联网五分之四的流量。而今,我们无时无刻不在与视频打交道,视频俨然已成为我们日常生活中不可或缺的一种信息载体,作为一种极富表达力的媒介,它有着文字与图片难以企及的传情达意之功用。在平时生活中我们观看视频,分享视频,拍摄视频,大多数人会以为视频就是一帧帧的图片的堆叠,正如播放时所看到的那样,由无数个色彩斑斓的像素点构成,也许只有在需要自己剪辑视频时,抑或是自己化身主播,搭建一个简易的直播系统时面对满屏纷繁复杂的视频编码参数而一头雾水,才会意识到,互联网上无处不在的视频似乎并不是我们想象中的那么简单。
事实上,我们平时所看到的视频都是解码完成后的视频,而视频本身需要被编码成一定格式后才能在互联网上传输与存储。那么视频能否不编码而直接用于存储与传输呢,我们可以试想一下,一张未经压缩的1920x1080的彩色图片,包含1920x1080x3个字节,占用约6MB的存储空间,假如视频帧率为30fps,那么未经压缩的1080p的视频一秒钟便需要占用超过180MB的存储空间,这样的数据量是惊人的。如若不对视频进行编码压缩,视频内容的传输与存储会给网络以及终端设备带来不可承受的负担。
数字视频编码技术最早可以追溯到上世纪五十年代初,计算机的诞生提供了海量数据编码的算力基础,香农信息论的提出奠定了熵编码理论基础,但此时的编码技术主要停留在逐像素基于统计模型的编码。直到上世纪八十年代,H.261标准的提出与制定成为现代视频编码标准的里程碑,此后,基于图像块的预测-变换混合编码框架一直沿用至今。随后,国际电信联盟ITU继续制定了H.26x系列标准,移动图像专家组MPEG同期制定了MPEG-x系列标准,其中为人所熟知的是两个组织合作推出的H.262/MPEG-2、H.264/MPEG-4 AVC、H.265/HEVC以及2020年崭新出炉的H.266/VVC标准。在视频编码的领域里,人们也有着类似摩尔定律但并不准确的经验性总结,也即编码标准每十年一次更新,新标准能比旧标准提高50%的压缩效率。
正所谓长江后浪推前浪,新的标准往往是对旧标准各个模块的一次全方位升级,而自H.261起所确定的编码框架却至今未变。具体来说,现代编码标准大体由四部分构成,即预测编码、变换量化、熵编码与环路滤波。一帧图像首先会被划分为一个个的编码块作为基本的编码单元,从先前已经被编码的图像帧的重建帧上找到和当前块最相似的像素块作为预测块,与当前编码块相减获得残差,这个过程便是预测编码;对预测残差进行数学上的线性变换得到更紧凑的表示形式,之后对变换系数进行量化,这便完成了变换量化过程;将量化系数送入熵编码模块进行熵编码,之后进行封装后便得到了编码后的码流。由于编码是分块进行的,通过上述操作编码后重建的图像在视觉上能感受到明显的块效应,这时就需要引入环路滤波模块,对重建帧上编码块边缘位置进行压缩噪声的滤除,通过环路滤波模块来提高重建帧质量,进而提高了预测编码性能,从而获得更好的压缩性能。
近年来深度神经网络在计算机视觉任务上取得了巨大成功,也给视频编码领域注入了新的活力,通过引入神经网络来提高视频编码性能成为了研究的热点。现有的研究大体可以分为基于神经网络的模块化优化和端到端优化。模块化优化是指,用训练好的网络模型来替换传统编码框架中的某一模块,或者作为一个插件嵌入传统框架之中,这种做法的好处是不改变原有编码框架及码流格式,与传统编码框架完全兼容。缺点体现在网络模型的引入大幅提高了编解码器的计算复杂度,对于一些算力较低的终端设备往往是难以承受的。所以对于模块化优化的方案,如何设计轻量的网络模型,在性能和复杂度之间取得折中是其实际落地时的一个难点。而端到端的模型则是一种革命性的方案,鉴于端到端模型在图像压缩领域取得了巨大成功,在其基础上,近来的一些端到端视频压缩方案试图通过更准确的光流预测和码流的上下文建模来提高视频压缩效率。现有的端到端的方案在压缩效率上已经逼近甚至超过当前主流的传统编码器,但受限于终端算力,模型的部署同样是一大难点。
总的来看,在可以预见的五到十年间,基于传统的混合编码框架仍然是主流的视频编码方式,且通过更加精细化的设计与调优,传统编码器性能仍有进一步提升的空间。同时随着设备算力的提升和针对深度学习优化的芯片架构的发展,以及神经网络模型的迭代和性能提升,端到端的视频编码有着十分广阔的发展前景,可以期待不久的将来端到端的模型给视频编码领域带来真正的变革。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!