我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 帧内编码 >

为了发挥FPGA硬件实现的速度优势 算法进行优化是必须要做的

归档日期:06-06       文本归类:帧内编码      文章编辑:爱尚语录

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  当然,对于基于块预测的图像编码方法,也存在一些限制FPGA并行化实现因素。但是,这些受到限制的部分,也可以通过FPGA设计的特点来解决。例如,如图4所示,帧内预测的参考点需要通过重构的方法得到,这就增加了不同块之间的依赖性,限制了块之间的并行化,和流水化设计。在实际的FPGA设计中,可以在进行预测模式初选时,用原始数据替代重构数据作为参考,而在最终编码时用重构数据在作为参考数据。在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码流。

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

  那么如何设计HEVC core实现算法功能呢?这里,编码器模块流水线所示,四级流水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的处理及时。

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

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

  集成了数据通信、本地服务和视频娱乐功能的高端汽车信息娱乐系统需要高性能的可编程处理技术支持,将FPG...

  Uber上个月加入了Linux基金会,并加入了AT&T和诺基亚等其他科技公司的行列,支持LF深度学习...

  以单片机和可编程逻辑器件(FPGA)为控制核心,设计了一个程控滤波器,实现了小信号程控放大、程控调整...

  过采样技术是数字信号处理者用来提高模数转换器(ADC)性能经常使用的方法之一,它通过减小量化噪声,提...

  针对传统磁通门信号处理电路中模拟元件的缺点,设计一种基于现场可编程门阵列(FPGA)的数字磁通门系统...

  FPGA 设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。反过来说...

  高层次的设计可以让设计以更简洁的方法捕捉,从而让错误更少,调试更轻松。然而,这种方法最受诟病的是对性...

  被广泛应用于各种产品,具有开发时间短、成本效益高以及灵活的现场重配置与升级等诸多优点。很多新型FPG...

  FPGA是可编程ASIC。 ASIC:专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造...

  大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表、...

  瑞萨电子提供的PowerNavigator GUI软件可帮助用户加速电源设计、测试、定型和调试。用户...

  用户使用搭载商汤超分辨率算法的vivo X23幻彩版拍照,照片放大后,远景细节呈现更加真实,线条光滑...

  香港– 2018年12月13日 – 可编程产品平台和技术创新企业Efinix®今天宣布提供Trion...

  导读:人才是集成电路发展的根本,除了学校教育以外,企业的参与可以帮助学生快速理解市场需求,近日在南京...

  打开例程工程后,我们可以查看工程源代码和仿真TestBench来学习,对工程进行更详细的研究和IP核...

  这一节我们实现一个稍微复杂一点的功能——测量未知信号的频率,PS和PL通过AXI总线交互数据,实现我...

  在FPGA上设计一个DDS模块,在DE0 开发板上运行,在FPGA芯片内部合成出数字波形即可。

  LED光通信,就是用LED光来实现无线通信,主要是靠发光二极管(LED)发出的高速亮灭闪烁信号来传输...

  如今随着芯片工艺的演进,一方面我们看到芯片尺寸越来越小,性能越来越提升,另一方面集成度也在不断提高。...

  人工智能是当下最火爆的话题。据说,与人工智能相关的市场规模十分巨大,是继PC市场、移动互联网市场之后...

  2018年12月5日—— 在5G、机器学习和物联网(IoT)联合推动的新计算时代,嵌入式开发人员需要...

  无论是汽车驾驶辅助、智能视频监控、工业自动化、航天与国防或是无线通信等终端应用,功能的日益复杂使得嵌...

  在芯片架构设计领域中,可重构计算技术并非一项新的存在。20世纪60年代末,加利福尼亚大学的Gerai...

  在芯片架构设计领域中,可重构计算技术并非一项新的存在。20世纪60年代末,加利福尼亚大学的Gerai...

  另一方面,在基于闪存的FPGA中,配置模式保存在芯片上的非易失性存储器单元,甚至电源被移除时,闪存单...

  当博通收购高通案遭到美国总统特朗普的阻止后,下一个被华尔街分析师看准的“目标”便锁定在圣何塞芯片厂商...

  当你的项目终于做完了,到了发布的关键节点,为了防止自己的心血被别人利用,最好对产品进行bit加密。 ...

  Plunify Cloud 云平台为 FPGA 工程师极大地简化了使用云服务器的技术与安全要求。

  FPGA编程语言为何叫硬件描述语言? 硬件即FPGA硬件,硬件描述语言,也就自然地告诉...

  该组项目将使研究机构和公司能够使用Achronix高性能Speedcore eFPGA技术快速构建低...

  11月27日,紫光国微在互动平台表示,科创板是科技型创新企业对接资本市场的良好渠道,公司也在关注具体...

  TMP411设备是一个带有内置本地温度传感器的远程温度传感器监视器。远程温度传感器,二极管连接的晶体管通常是低成本,NPN或PNP型晶体管或二极管,是微控制器,微处理器或FPGA的组成部分。 远程精度为1 C适用于多个设备制造商,无需校准。双线串行接口接受SMBus写字节,读字节,发送字节和接收字节命令,以设置报警阈值和读取温度数据。 TMP411器件中包含的功能包括:串联电阻取消,可编程非理想因子,可编程分辨率,可编程阈值限制,用户定义的偏移寄存器,用于最大精度,最小和最大温度监视器,宽远程温度测量范围(高达150C),二极管故障检测和温度警报功能。 TMP411器件采用VSSOP-8和SOIC-8封装。 特性 1C远程二极管传感器 1C本地温度传感器 可编程非理想因素 串联电阻取消 警报功能 系统校准的偏移寄存器 与ADT7461和ADM1032兼容的引脚和寄存器 可编程分辨率:9至12位 可编程阈值限...

  TMP468器件是一款使用双线 C兼容接口的多区域高精度低功耗温度传感器。除了本地温度外,还可以同时监控多达八个连接远程二极管的温度区域。聚合系统中的温度测量可通过缩小保护频带提升性能,并且可以降低电路板复杂程度。典型用例为监测服务器和电信设备等复杂系统中不同处理器(如MCU,GPU和FPGA)的温度。该器件将诸如串联电阻抵消,可编程非理想性因子,可编程偏移和可编程温度限值等高级特性完美结合,提供了一套精度和抗扰度更高且稳健耐用的温度监控解决方案。 八个远程通道(以及本地通道)均可独立编程,设定两个在测量位置的相应温度超出对应值时触发的阈值。此外,还可通过可编程迟滞设置避免阈值持续切换。 TMP468器件可提供高测量精度(0.75C)和测量分辨率(0.0 625C)。该器件还支持低电压轨(1.7V至3.6V)和通用双线制接口,采用高空间利用率的小型封装(3mm×3mm或1.6mm×1.6mm),可在计算系统中轻松集成。远程结支持-55C至+ 150C的温度范围。 特性 8通道远程二极管温度传感器精度:0.75&...

本文链接:http://theferrari348.com/zhengnabianma/49.html

上一篇:没有了

下一篇:视频编码的发展历程