当前位置:首页 > 嵌入式 > 嵌入式新闻
[导读]“No PP,No WAY”这是个眼见为实的世界,这是个视觉构成的信息洪流的世界。大脑处理视觉内容的速度比文字内容快6万倍,而随着智能手机的普及,图片、视频的产生和分享已经是人们在社交平台上的基本交流方式。用户通过手机、平板、电脑上传和分享自己的图片,而且这个趋势是每年都在增长(参见图1)。

背景

“No PP,No WAY”这是个眼见为实的世界,这是个视觉构成的信息洪流的世界。大脑处理视觉内容的速度比文字内容快6万倍,而随着智能手机的普及,图片、视频的产生和分享已经是人们在社交平台上的基本交流方式。用户通过手机、平板、电脑上传和分享自己的图片,而且这个趋势是每年都在增长(参见图1)。

 

图1. 2016年KPCB统计报告[1]

每天QQ相册、微信朋友圈上,用户上传的图片数量有上亿张,这些图片被后台服务器存储下来,再通过网络分发出去。如果每张图片可以进行压缩,使得图片存储和传输分发的数据量越少,既节省了用户带宽,也提高了用户下载图片的速度,用户体验更好。那么图片是可以进行压缩的么?1948年,信息论学说的奠基人香农曾经论证:不论是语音或者图片,由于其信号中包含很多的冗余信息,所以可以对其进行压缩。图像压缩算法有:JPEG、WEBP、H264(帧内压缩)、HEVC(帧内压缩),压缩能力是:JPEG < WEBP/H264(帧内压缩) < HEVC(帧内压缩), 这个压缩能力是通过计算复杂度的提高来实现,其中WEBP、HEVC的计算复杂度是 JPEG 压缩的 10 倍以上。 目前在社交平台上用户上传的大量图片是JPEG格式,通过后台服务器用更加复杂的算法如WEBP、HEVC(帧内压缩),进一步压缩以节省存储和带宽, 所以对图像的压缩,从本质上是通过提高计算算力来降低存储和带宽。同时更加复杂的算法也带来计算算力的大量消耗和处理延时的增加。

从业务角度来看,对于离线业务,可以通过业务在波峰和波谷之间闲置的计算算力进行图片转码处理;但对于在线业务,图片转码处理对于处理延时的要求就会有较高要求,为了满足处理延时的要求,有时候会先进行图片转码处理,把转码好的图片存储下来,当用户需要的时候直接传输,这样通过消耗存储资源为代价来解决处理延时的要求。但是这又带来一个新问题,用户查看图片的智能终端屏幕大小不一,如果都传同样大小的图片,显然不是最优。最优处理方法还是能够通过计算算力,实时进行图片转码处理。

在数据中心里面,计算算力通常由x86 CPU来提供,以前的x86 CPU性能每18个月就能翻倍(众所周知的“摩尔定律”),但目前工业界的发展方向是摩尔定律已经走到终点。例如,2016年3月24日,英特尔宣布正式停用“工艺年-架构年(Tick-Tock)”处理器研发模式,未来研发周期将从两年周期向三年期转变。而国际半导体技术发展路线图(International Technology Roadmap for Semiconductors,简写 ITRS)在维持了数十年,每两年更新一次,为全世界半导体行业提供建议和规划指南,也在2016年宣布不再做进一步的更新。

一方面处理器性能再无法按照摩尔定律进行增长,另一方面数据增长对计算性能要求超过了按“摩尔定律”增长的速度。处理器本身无法满足高性能计算(HPC:High Performance Compute)应用软件的性能需求,导致需求和性能之间出现了缺口(参见图2)。

 

图 2. 计算需求和计算能力的缺口发展形式

图像处理解决方案

图片服务支持的能力丰富多样,基础功能包括多种缩略剪裁方式、文字图片水印、格式转换、断点续传、镜像存储、防盗链等。我们结合当前图文时代的用户需求,提供图片的上传、存储、处理、分发的全方位一体化的解决方案。目前,互联网图片服务的解决方案中落地存储和下载大部分图片格式还是JPEG/WEBP,但随着新的编码标准HEVC的出现,在同等图像质量下,HEVC的压缩效率会比JPEG/WEBP好30%~70%,可以节省大量的存储和带宽,但是HEVC的算法复杂度高导致CPU的编码延迟和吞吐在线上环境中无法满足,因此,我们开发了基于FPGA的新的解决方案。FPGA图像处理方案可以很好的解决线上环境的需求,当然,FPGA图像处理解决方案也兼容当前用户线上系统的WEBP等其他图像转码格式,可以很好的适应不同用户的需求,提供低延迟,高吞吐,低成本的解决方案。

我们以HEVC FPGA 图像处理为例,来说明在互联网业务中图片上传,存储,处理和下载的架构。

 

图3. HEVC FPGA 图片上传存储,处理,下载解决方案

如图3所示,图片HEVC FPGA转码的部署主要是落地存储前以及下载前的转码服务器,使用FPGA做转码主要有以下优势:

FPGA转码落地存储HEVC,可有效节省存储成本。

1. FPGA转码服务器和CPU转码相比可以降低服务器成本。

FPGA转码HEVC图片和CPU相比吞吐量可以大大提高。

在下载时实时生成HEVC图片,使用FPGA进行图片转码加速,会大大降低转码延迟,提高用户体验。

图像编码算法分析

在图像和视频编解码算法中,各个模块都是基于像素级运算或者基于块操作,而且针对各个像素或者图像块的操作是相同和重复的。早期的图片压缩标准JPEG和JPEG200,原始图像首先经过基于块的DCT变换或者小波变换,变换后的系数经过量化后再进行熵编码(包括Huffman编码或者自适应算术编码),进而输出压缩后的码流信息。在解码端,通过反向操作,可将码流信息进行解码。在JPEG2000中,DCT变换被小波变换替代,可以更好的消除图像块内的冗余性,而且量化后的系统按照比特位平面进行自适应算术编码,可以达到更好的压缩性能。

除了JPEG这类对原始图像直接变换的方法,还有一种是基于块预测的方法。也就是对一个图像块先进行预测,原始图像块和预测块的残差再进行变换,量化和编码。比较典型标准就是从H.264的帧内预测发展而来的WebP。随着新一代视频编码标准HEVC/H.265的推出,其帧内编码的压缩性能,较上一代标准提升接近一倍[2]。因此,将HEVC的帧内编码用于图像压缩也成为一种趋势。HEVC的帧内编码过程如图4所示。[!--empirenews.page--]

 

图4. HEVC帧内编码的过程

在HEVC中,块划分的方式是基于非完全四叉树结构,这更适用于不同的图像场景。每一个最终确定大小的块只需要一个独立的预测模式。图5是HEVC图片编码中块划分和预测模式的一个例子。可以看出当一个块可以通过单独的某一个角度进行预测的时候,则不需要划分为更小的块。而场景信息较为复杂区域则需要划分为较小的块。编码器的一项重要任务,就是寻找最佳的块划分方式和最优的预测角度。

 

图5. HEVC图片编码块划分及预测模式

图6(a) 就是根据最终的块划分方式和预测模式得到的预测图片。预测图片和原始图片的差值(残差)通过DCT变换,量化之后,最终通过熵编码器输出。图片预测的残差如图6(b)所示。在解码器中,根据得到的残差数据,并进行和编码器相同的预测,可以得到最终的重构图片,图6(c)所示的就是重构数据。由于编码过程需要用到重构数据作为参考数据,因此在编码器也需要进行重构的过程。原始图片如图6(d)所示,可以看出,重构的图片和原始图片损失非常小。

 

图6. HEVC图片编码过程中的预测,残差,重构以及原始数据

在HEVC的帧内编码中,由于要进行最佳编码模式的搜索,造成编码器的计算复杂度高。传统的CPU无法达到理想的吞吐量。现在的GPU虽然也大量应用的图片和视频领域,然而GPU的并行化更适用的是各个像素点进行相同操作,完成之后再进行下一步的并行化操作。这并不利于HEVC图片编码各个模块控制较为复杂的情况。在Nvidia的GPU中,图片和视频编解码也采用的专用的芯片来处理。 而FPGA可以实现各个不同的模块的流水化运算,实现时间上的并行。 同时,由于只是进行帧内编码,不同图像之间是相互独立的,在FPGA中也可以设计多路的编码器,对不同的图片进行并行的编码压缩。

当然,对于基于块预测的图像编码方法,也存在一些限制FPGA并行化实现因素。但是,这些受到限制的部分,也可以通过FPGA设计的特点来解决。例如,如图4所示,帧内预测的参考点需要通过重构的方法得到,这就增加了不同块之间的依赖性,限制了块之间的并行化,和流水化设计。在实际的FPGA设计中,可以在进行预测模式初选时,用原始数据替代重构数据作为参考,而在最终编码时用重构数据在作为参考数据[3]。在FPGA的实现过程中,也可以更改扫描顺序,优先处理那些有依赖关系的像素点。此外,在自适应熵编码部分,由于存在更新码表和更新概率估计的过程,部分比特数据进行熵编码时,也存在依赖关系。 在实际的FPGA设计过程中,可以通过将这些需要进行编码的数据进行分组,将没有依赖关系的数据分为一组,同时,通过数据缓存,可以预先判断接下来的数据是否存在依赖关系,从而提高熵编码的吞吐量[4]。

HEVC图像编码算法的FPGA实现

FPGA图像编码架构

目前,我们图片业务已经实现WEBP和HEVC格式的FPGA硬件加速,下面以HEVC I帧图像硬件加速举例,说明图像编码在FPGA中是如何实现的。

FPGA的逻辑架构主要包括平台部分和HEVC编码器IP部分,其中FPGA平台主要包括PCIE DMA以及DDR总线相关逻辑,这部分逻辑主要实现和host CPU的数据通信以及和FPGA板卡上的DDR通信。如图7所示,FPGA架构上实例化了4个HEVC core(具体几个是和FPGA资源有关),每一个HEVC core完成HEVC编码算法的完整处理,这里4核心并行工作,也就是同一时刻,4个编码任务可以并行工作,同时输出4条HEVC码流。

 

图7. FPGA内部逻辑架构

FPGA内部逻辑主要包括:

HEVC CORE 0-3:H265编码器IP,实现HEVC的编码算法;

PCIE/DMA:实现和host CPU进行通信;

REGISTER RW/INT:寄存器读写以及中断处理;

HEVC RW ARBITER:总线读写仲裁模块;

AXI INTERCONNECT/DDRC/DDRY: 总线控制访问DDR逻辑;

FPGA图像编码流程

FPGA HEVC core内部算法处理流程如图8所示:分为当前图像载入,intra预测初选,intra预测精选,CABAC编码,码流输出。

 

图8. HEVC core内部算法处理流程

那么如何设计HEVC core实现算法功能呢?这里,编码器模块流水线设计成四级流水,如图9所示,四级流水CURLD/PINTRA/SEL/CABAC处理性能设计接近,并行起来后,平均处理每个LCU需要8400个周期,如果按照1080p图片一共510个LCU计算,单核理论上编码可以达到编46 帧/s (FPGA电路实现频率200M),这样4核并行能达到184帧/s。

具体来说,CURLD完成当前图像的载入逻辑,PINTRA完成intra预测初选35种模式的遍历,得到最优的预测模式,这级流水算法上做了优化,预测参考像素没有像传统方式选择重构像素,而是选择当前像素做参考像素,这样优化,使得intra预测初选可以单独划分为一级流水,和intra预测精选分开,使得编码器整体处理性能增加一倍。SEL完成帧内预测模式精选以及RDO模式选择,预测块大小支持32/16/8,由于涉及到变换量化等运算量大的逻辑,这一级流水是整个编码器的资源消耗大户,设计上在算法上以及逻辑资源消耗上做了权衡;CABAC模块完成头信息的码流生成以及每个LCU的语法元素和残差的编码,并完成码流的打包输出,这一级流水的主要问题在于CABAC的性能是否足够快,从而应对QP比较小编码更多bin的处理及时。[!--empirenews.page--]

 

图9. 运算模块流水线

性能和收益

用FPGA完成JPEG格式图片转成HEVC格式图片,图片分辨率大小为1920x1080,FPGA处理延时相比CPU降低7倍,FPGA处理性能是CPU机器的10倍,FPGA机型单位性能成本是CPU机型的1/3(参见图10)。

 

图10.图片转码FPGA和CPU对比

总之,图片算法的FPGA实现,如果不考虑FPGA资源、硬件实现架构和处理性能,CPU图像压缩算法可以完全在FPGA进行“复制”实现,FPGA算法压缩性能可以完全等同CPU。但是现实没那么理想,FPGA算法实现要统一考虑FPGA性能,资源,算法实现复杂度等要素,只有联合设计才能设计出最优秀的方案,为了发挥FPGA硬件实现的速度优势,算法进行优化是必须要做的,综合考虑各方面,我们在实际应用中,往往FPGA的算法实现要做一些“让步”。另外,某种型号的FPGA一旦被选定,它的运算以及布线资源往往有个理论值,算法的实现同时要考虑FPGA资源的利用情况,如何能在相同的FPGA资源上实现最好的压缩算法成为设计的难点。我们用FPGA进行算法实现的目标-----实现算法性能尽量接近CPU,图片处理吞吐量,以及处理延迟让CPU望其项背。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

2024年4月18日 – 提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 (Mouser Electronics) 很荣幸地宣布与Edge Impulse建立新的全球合作关系。Edge Im...

关键字: 机器学习 MCU CPU

无论您是在研究如何使用 10GigE 还是寻求所需考虑事项的建议,本文均提供有实践,帮助确保单相机 10GigE 视觉系统设置顺利并拥有良好性能。 我们列出了主机系统配置、布线和相机设置的实践。

关键字: 视觉系统 CPU 存储器

Apr. 16, 2024 ---- NVIDIA新一代平台Blackwell,包含B系列GPU及整合NVIDIA自家Grace Arm CPU的GB200等。TrendForce集邦咨询指出,GB200的前一代为GH2...

关键字: CPU GPU

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

人工智能是集合众多方向的综合性学科,在诸多应用领域均取得了显著成果[1]。随着航空领域人工智能技术研究的不断深入,面向开放式机载智能交互场景,人工智能的应用可解决诸多问题。例如智能感知、辅助决策等,可利用人工智能算法对多...

关键字: 人工智能 PCIe CPU

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

Pmod接口可以说是数字电路板的连接革命。随着科技的飞速发展,数字电路板间的通信与连接技术也在不断创新和进步。Pmod接口,作为一种新兴的数字接口标准,正逐渐成为数字电路板间通信的桥梁,为电子设备的连接和通信带来了革命性...

关键字: pmod接口 FPGA 数字电路板

CPU针脚弯了,用工具调正就不会有影响。开机自检也通过,CPU 再出问题就不是针脚引起的问题。针脚只要不断就没有问题,有的CPU出厂的时候针脚就有点弯,这并不是什么大问题,只要用镊子轻轻地弄直就可以了。

关键字: CPU 针脚 开机自检

通过大量的数据,训练出一个能处理此类数据的模型,使得这个模型可以根据已知的数据,准确率很高的判断出未知的数据,从而使得人类能够采取正确的方法去处理某些事情。

关键字: 机器学习 模型 图像

在监督学习中,系统会被给定一组已知输入和输出,需要学习到一种函数,使得该函数能够根据给定的输入预测出正确的输出。代表算法有线性回归、逻辑回归、决策树、深度神经网络等。

关键字: 机器学习 数据源 图像
关闭
关闭