一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

图像处理中的频率特定压缩与补偿技术的制作方法

2022-02-22 17:56:36 来源:中国专利 TAG:

图像处理中的频率特定压缩与补偿技术
1.相关申请的交叉引用
2.本公开要求2020年10月20日提交的美国申请no.17/075,241的优先权权益,上述申请的全部内容通过引用合并于此。
技术领域
3.本公开总体上涉及图像处理技术,尤其涉及一种图像处理中的频率特定压缩与补偿技术。


背景技术:

4.数字图像的有损压缩用于减少存储、处理和传输内容的数据大小。可以调整压缩程度,以允许在存储大小、网络传输带宽和图像质量之间进行可选择的折衷。目前的有损图像压缩技术,如jpeg、jpeg-2000、bpg(big picture group,大图片组)等,由于人眼对低频信息比较敏感,一般采用舍弃高频分量而保留低频分量的方法来压缩图像。与舍弃高频信息相比,即使去除低频率信息的一小部分也会显著降低图像质量。然而,大多数信息位于低频且需要大量的比特来表示图像。因此,很难通过仅去除高频分量来获得较高的压缩程度。在不降低图像质量的情况下实现更高的压缩率的需求日益增加。基于机器学习技术,人们一直在努力提高图像质量。


技术实现要素:

5.参照以下描述和附图可以最佳地理解本公开,所述附图用于说明本公开实施例的图像处理中的频率特定压缩(frequency specific compression)与补偿技术。
6.本公开的一个目的是实现在不降低图像质量的情况下实现更高的压缩率的加速器。
7.本公开实施例提供了一种图像补偿方法。所述方法包括:基于第一图像估计所述第一图像的频率分量的变换系数;在所述估计变换系数与所述频率分量相关联的基函数(basis function)之间执行点乘运算以生成补偿图像;结合所述第一图像和所述补偿图像,以生成组合图像。
8.本公开实施例提供了一种用于图像补偿的设备。所述设备包括:存储器,用于存储指令集;以及至少一个处理器,被配置为执行所述指令集以使所述设备执行:基于第一图像估计所述第一图像的频率分量的变换系数;在所述估计变换系数与所述频率分量相关联的基函数之间执行点乘运算以生成补偿图像;将所述第一图像和所述补偿图像相结合,生成组合图像。
9.本公开实施例还提供了一种终端,所述终端包括:编码器,用于通过去除频率分量来压缩图像;以及设备,用于补偿压缩图像的重构图像的频率分量。所述设备包括:存储器,用于存储指令集;以及至少一个处理器,被配置为执行所述指令集以使所述设备执行:基于重构图像估计所述重构图像的频率分量的变换系数;在所述估计变换系数与所述频率分量
相关联的基函数之间执行点乘运算以生成补偿图像;以及将所述重构图像和所述补偿图像相结合,生成组合图像。
10.通过上述方案,使得可以在不降低图像质量的情况下实现更高的压缩率。
11.本公开实施例的附加特征和优点将在以下描述中部分阐述,并且部分将从描述中显而易见,或者可以通过实施例的实践来学习。本公开实施例的特征和优点可以通过权利要求中阐述的元件和组合来实现和获得。
12.应当理解,前面的一般描述和下面的详细描述都只是示例性的和解释性的,并且本公开的实施例不以此为限制。
附图说明
13.在下面的详细描述和附图中示出了本公开的实施例和各个方面。图中所示的各种特征没有按比例绘制。
14.图1示出根据本公开实施例的神经网络的示意图。
15.图2a示出根据本公开实施例的示例性神经网络加速器结构。
16.图2b示出根据本公开实施例的示例性神经网络加速器核结构。
17.图2c示出根据本公开实施例的示例性云系统的示意图,所述云系统包括神经网络加速器。
18.图3示出根据本公开实施例的示例性计算单元配置。
19.图4a示出根据本公开实施例的示例性图像压缩设备的框图。
20.图4b示出根据本公开实施例的图4a的量化单元的框图。
21.图5a示出根据本公开实施例的示例变换过程。
22.图5b示出根据本公开实施例的示例变换系数分布。
23.图5c示出根据本公开实施例的变换系数分布的标准偏差值与压缩率之间的示例关系。
24.图5d示出根据本公开实施例的生成量化表的示例过程。
25.图6示出根据本公开实施例的传统技术和本公开实施例之间的示例性能比对。
26.图7示出根据本公开实施例的示例图像压缩方法的示例性流程图。
27.图8a示出根据本公开实施例的示例性频率分量补偿设备的示意图。
28.图8b示出根据本公开实施例的示例频率分量补偿过程。
29.图9示出根据本公开实施例的传统技术和本公开实施例之间的示例性能比对。
30.图10示出根据本公开实施例的频率分量补偿方法的示例性流程图。
具体实施例
31.现在将详细说明本公开的实施例,其示例在附图中示出。下面的描述引用附图,其中不同附图中的相同数字表示相同或类似的元件,除非另有表示。在示例性实施例的以下描述中阐述的实现并不代表与本发明一致的所有实现。相反,它们仅仅是与所附权利要求中所述的与本发明有关的方面一致的装置和方法的示例。
32.jpeg(joint photographic experts group,联合图像专家组)是一种常用的数字图像有损压缩方法。数字图像有损压缩用于减少存储、处理和传输内容的数据大小。可以调
整压缩程度,允许在存储大小、网络传输带宽和图像质量之间进行可选择的折衷。目前的有损图像压缩技术,如jpeg、jpeg-2000、bpg等,由于人眼对低频信息比较敏感,一般采用舍弃高频分量而保留低频分量的方法来压缩图像。与舍弃高频信息相比,即使去除低频率信息的一小部分也会显著降低图像质量。然而,大多数信息位于低频且需要大量的比特来表示图像。因此,很难通过仅去除高频分量来获得较高的压缩程度。在不降低图像质量的情况下实现更高的压缩率的需求日益增加。
33.机器学习或深度学习已经广泛应用于各个领域,神经网络的应用已经扩展到图像处理。目前基于滤波器的机器学习算法致力于图像去噪以去除伪影。也就是说,基于机器学习的方法通常用于减少伪影问题,并在这些问题上显示出良好的性能。然而,因为基于机器学习的方法试图恢复所有频率信息,所以这种基于机器学习的方法可能需要非常大和复杂的dnn(deep neural network,深度神经网络)模型(例如,大于100层)。
34.根据本公开的一些实施例,可以通过动态地为每个图像生成量化表来提供有效的图像压缩方案。根据本公开的一些实施例,可以通过选择性地去除包括低频分量的一个或多个频率分量来获得图像的高压缩率。根据本公开的一些实施例,可以提供用于图像的特定频率分量补偿方法。根据本公开的一些实施例,可以提供需要相对小的计算量的频率分量补偿方案。根据本公开的一些实施例,可以在不降低图像质量的情况下实现更高的压缩率。
35.图1是神经网络(neural network,nn)100的示意图。如图1所示,神经网络100可以包括输入层120,输入层120接收输入,例如,输入110-1至输入110-m。输入可以包括用于由神经网络100处理的图像、文本或任何其他结构或非结构化数据。在一些实施例中,神经网络100可以同时接收多个输入。例如,图1的神经网络100可以同时接收多达m个输入。附加地或可选地,输入层120可以快速连续地接收多达m个输入,例如,使得在一个周期中输入层120接收输入110-1,在第二周期中输入层120接收第二输入,输入层120将来自输入110-1的数据推送到第一隐含层,等等。可以在同时输入、快速连续输入等中使用任意数量的输入。
36.输入层120可以包括一个或多个节点,例如,节点120-1、节点120-2、
……
、节点120-a。每个节点可以将激活函数应用于对应的输入(例如,输入110-1至输入110-m中的一个或多个),并通过与节点相关联的特定权重对来自激活函数的输出进行加权。激活函数可以包括赫维赛德阶跃函数(heaviside step function)、高斯函数(gaussian function)、多元二次函数(multi-quadratic function)、逆多元二次函数(inverse multi-quadratic function)、sigmoidal函数,等等。权重可以包括介于0.0和1.0之间的正值或任何其他数值,这些数值被配置为允许层中的一些节点具有比对应于层中其他节点的输出更大或更小的对应输出。
37.如图1中进一步描述的,神经网络100可包括一个或多个隐含层,例如,隐含层130-1至隐含层130-n。每个隐含层可以包括一个或多个节点。例如,在图1中,隐含层130-1包括节点130-1-1、节点130-1-2、节点130-1-3、
……
、节点130-1-b,隐含层130-n包括节点130-n-1、节点130-n-2、节点130-n-3、
……
、节点130-n-c。类似于输入层120的节点,隐含层的节点可将激活函数应用于来自前一层的连接节点的输出,并通过与节点相关联的特定权重对来自激活函数的输出进行加权。
38.如图1中进一步描述的,神经网络100可以包括输出层140,输出层140确定输出,例
如,输出150-1、输出150-2、
……
、输出150-d。输出层140可以包括一个或多个节点,例如,节点140-1、节点140-2、
……
、节点140-d。类似于输入层120的节点和隐含层的节点,输出层140的节点可将激活函数应用于来自前一层的连接节点的输出,并通过与节点相关联的特定权重对来自激活函数的输出进行加权。
39.虽然在图1中描述为全连接,神经网络100的层可以使用任何连接方案。例如,可以使用卷积方案、稀疏连接方案等连接一个或多个层(例如,输入层120、隐含层130-1至隐含层130-n、输出层140,等等)。这样的实施例可以在一个层和前一层之间使用比图1所示的更少的连接。
40.此外,尽管在图1中描述为前馈网络,但神经网络100可以附加地或替代地使用反向传播(例如,通过使用长短期记忆节点等)。因此,尽管神经网络100被描述为类似于cnn,但神经网络100可以包括递归神经网络(rnn)或任何其他神经网络。
41.图2a示出了根据本公开实施例的示例性神经网络加速器结构。在本公开的上下文中,神经网络加速器也可称为机器学习加速器或深度学习加速器。在一些实施例中,加速器200可称为神经网络处理单元(neural network processing unit,npu)200。如图2a所示,加速器200可包括多个核202、命令处理器204、直接存储器访问(dma)单元208、联合测试动作组(joint test action group,jtag)/测试访问端(test access end,tap)控制器210、外围接口212、总线214,等等。
42.可以理解的是,核202可以基于所传送的数据执行算法运算。核202可包括一个或多个处理元件,所述处理元件可包括单指令多数据(simd)结构,所述单指令多数据结构包括一个或多个处理单元,所述处理单元被配置为基于从命令处理器204接收的命令执行一个或多个运算(例如,乘法、加法、乘加,等等)。为了对所传送的数据包执行运算,核202可以包括用于处理所述数据包中的信息的一个或多个处理元件。每个处理元件可以包括任意数量的处理单元。根据本公开的一些实施例,加速器200可以包括多个核202,例如四个核。在一些实施例中,多个核202可以彼此通信地耦合。例如,多个核202可与单向环形总线连接,其支持用于大型神经网络模型的高效流水线。将参照图2b详细说明核202的结构。
43.命令处理器204可以与主机单元220交互并将相关命令和数据传递到对应的核202。在一些实施例中,命令处理器204可以在内核模式驱动程序(kmd)的监督下与主机单元220交互。在一些实施例中,命令处理器204可以修改对每个核202的相关命令,使得核202可以尽可能并行地工作。修改后的命令可以存储在指令缓冲器中。在一些实施例中,命令处理器204可被配置为协调一个或多个核202以并行执行。
44.直接存储器访问单元208可以协助在主机存储器221和加速器200之间传送数据。例如,直接存储器访问单元208可以协助将数据或指令从主机存储器221加载到核202的本地存储器中。直接存储器访问单元208还可以协助在多个加速器之间传送数据。直接存储器访问单元208可以允许片外设备在不引起主机cpu中断的情况下访问片上存储器和片外存储器。此外,直接存储器访问单元208可以协助在加速器200的组件之间传送数据。例如,直接存储器访问单元208可以协助在多个核202之间或在每个核内传送数据。因此,直接存储器访问单元208还可以生成存储器地址并启动存储器读或写周期。直接存储器访问单元208还可以包含若干硬件寄存器,所述硬件寄存器可由一个或多个处理器写入和读取,所述硬件寄存器包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器和其他类型的
寄存器。这些寄存器可以指定来源、目的地、传输方向(从输入/输出(i/o)设备读取或写入输入/输出设备)、传输单元的大小或一次突发传输的字节数的某些组合。应当理解的是,加速器200可包括第二直接存储器访问单元,所述第二直接存储器访问单元可用于在其他加速器结构之间传输数据,以允许在不涉及主机cpu的情况下多个加速器结构直接通信。
45.联合测试动作组/测试访问端控制器210可以指定实现串行通信接口(例如,jtag接口)的专用调试端口,所述专用调试端口用于低开销访问加速器,而不需要直接外部访问系统地址和数据总线。联合测试动作组/测试访问端控制器210还可以具有片上测试访问接口(例如,tap接口),所述片上测试访问接口实现协议以访问一组测试寄存器,所述测试寄存器呈现芯片逻辑电平和各个部件的设备性能。
46.如果外围接口212(例如pcie接口)存在,则外围接口212用作(并且通常是)芯片间总线,外围接口212提供加速器和其他设备之间的通信。
47.总线214(例如i2c总线)包括芯片内总线和芯片间总线。正如系统结构要求的那样,芯片内总线将所有内部组件相互连接。虽然并非所有组件都连接到每个其他组件,但所有组件都连接一些与其需要通信的其他组件。芯片间总线连接加速器与其他设备,例如片外存储器或外围设备。例如,总线214可以提供跨核的高速通信,并且总线214还可以将核202与其他单元连接,所述其他单元例如是片外存储器或外围设备。通常,尽管在一些实现中,总线214仍可能与专用的总线间通信有关,但是如果存在外围接口212(例如,芯片间总线),则总线214仅与芯片内总线有关。
48.加速器200还可以与主机单元220通信。主机单元220可以是一个或多个处理单元(例如,x86中央处理单元)。如图2a所示,主机单元220可以与主机存储器221相关联。在一些实施例中,主机存储器221可以是与主机单元220相关联的集成存储器或外部存储器。在一些实施例中,主机存储器221可以包括主机盘,所述主机盘是配置成为主机单元220提供附加存储器的外部存储器。主机存储器121可以是双倍数据速率同步动态随机存取存储器(例如,ddr sdram)等。与集成在加速器芯片内的片上存储器相比,主机存储器121作为更高级的高速缓存,可以被配置成以较慢的访问速度存储大量数据。存储在主机存储器121中的数据可被传送到加速器100以用于执行神经网络模型。
49.在一些实施例中,具有主机单元220和主机存储器221的主机系统可以包括编译器(图中未示出)。编译器是程序或计算机软件,所述程序或计算机软件将用编程语言编写的计算机代码转换成指令,以为加速器100创建可执行程序。在机器学习应用中,编译器可以执行各种操作,例如,预处理、词法分析、解析、语义分析、输入程序到中间表示的转换、神经网络的初始化、代码优化、代码生成,以及其组合。例如,编译器可以编译神经网络以生成静态参数,例如神经元之间的连接和神经元的权重。
50.在一些实施例中,包括编译器的主机系统可以将一个或多个命令推送到加速器200。如上所述,这些命令可由加速器200的命令处理器204进一步处理,临时存储在加速器200的指令缓冲器中,并分配给对应的一个或多个核(例如,图2a中的核202)或处理元件。一些命令可以指示直接存储器访问单元(例如,图2a中的直接存储器访问单元208)从主机存储器(例如,图2a的主机存储器221)将指令和数据加载至加速器200。然后,可以将加载的指令分配给分配有相应任务的每个核(例如,图2a的核202),并且所述一个或多个核可以处理这些指令。
51.可以理解的是,核202接收到的前几个指令可以指示核202从主机存储器221将数据加载/存储至核的一个或多个本地存储器(例如,图2b的存储器2032)。然后,每个核202可以启动指令流水线,指令流水线包括(例如,通过定序器)从指令缓冲器取指令,译码指令(例如,通过图2a的直接存储器访问单元208),生成本地存储器地址(例如,对应于操作数),读取源数据,执行或加载/存储操作,然后写回结果。
52.根据一些实施例,加速器200可进一步包括用作主存储器的全局存储器(图中未示出),全局存储器具有存储器块(例如,8gb第二代高带宽存储器(hbm2)的4个块)。在一些实施例中,全局存储器可以通过直接存储器访问单元208存储来自主机存储器221的指令和数据。然后,指令可以被分配到分配有相应任务的每个核的指令缓冲器中,并且核可以相应地处理这些指令。
53.在一些实施例中,加速器200还可以包括存储器控制器(图中未示出),所述存储器控制器被配置为管理往来于全局存储器内的特定存储器块(例如,第二代高带宽存储器)的数据的读和写。例如,存储器控制器可以管理来自另一个加速器的核(例如,来自直接存储器访问单元208或对应于另一个加速器的直接存储器访问单元)或来自核202(例如,来自核202的本地存储器)的读/写数据。可以理解的是,在加速器200中可以提供不止一个存储器控制器。例如,全局存储器内的每个存储器块(例如,第二代高带宽存储器)可以有一个存储器控制器。
54.存储器控制器可以生成存储器地址和启动存储器读或写周期。存储器控制器可以包含几个硬件寄存器,所述硬件寄存器可以由一个或多个处理器写入和读取。所述寄存器可以包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器、以及其他类型的寄存器。这些寄存器可以指定来源、目的地、传输方向(从输入/输出设备读取或写入输入/输出设备)、传输单元的大小、一次突发传输的字节数、或存储器控制器的其他典型特征的某些组合。
55.在本公开的一些实施例中,尽管图2a的加速器200可用于卷积神经网络(cnn),但可以理解的是,图2a的加速器200可用于各种神经网络,例如深度神经网络(dnn)、递归神经网络(rnn),等等。此外,在一些实施例中,可配置各种处理架构,例如神经网络处理单元(npu)、图形处理单元(gpu)、现场可编程门阵列(fpga)、张量处理单元(tpu)、专用集成电路(asic)、任何其他类型的异构加速器处理单元(hapu),等等。
56.图2b示出根据本公开实施例的示例性核结构。如图2b所示,核202可包括一个或多个计算单元(例如,第一计算单元2020和第二计算单元2022)、存储器引擎2024、定序器2026、指令缓冲器2028、常量缓冲器2030、本地存储器2032,等等。
57.一个或多个计算单元可以包括第一计算单元2020和第二计算单元2022。第一计算单元2020可以被配置成对接收的数据(例如,矩阵)执行运算。在一些实施例中,第一计算单元2020可以包括被配置为执行一个或多个运算(例如,乘法、加法、乘加、元素运算,等等)的一个或多个处理单元。在一些实施例中,第一计算单元2020被配置成加速卷积运算或矩阵乘法运算的执行。将参照图3来详细说明第一计算单元2020的示例。
58.第二计算单元2022可以被配置为执行池化运算、内插运算、感兴趣区域(region-of-interest,roi)运算,等等。在一些实施例中,第二计算单元2022可以包括内插单元、池化数据路径等。
59.存储器引擎2024可以被配置为在对应核202内或在两个核之间执行数据复制。直接存储器访问单元208可以协助复制对应核内或两个核之间的数据。例如,直接存储器访问单元208可以支持存储器引擎2024从本地存储器(例如,图2b的本地存储器2032)复制数据到对应计算单元。存储器引擎2024还可被配置为执行矩阵转换,以使矩阵适合于在计算单元中使用。
60.定序器2026可与指令缓冲器2028耦合,被配置为获取命令并将命令分发到核202的组件。例如,定序器2026可以将卷积命令或乘法命令分发到第一计算单元2020,将池化命令分发到第二计算单元2022,或者将数据复制命令分发到存储器引擎2024。定序器2026还可以被配置为监控神经网络任务的执行、以及并行化神经网络任务的子任务,以提高执行效率。在一些实施例中,第一计算单元2020、第二计算单元2022和存储器引擎2024可以根据存储在指令缓冲器2028中的指令在定序器2026的控制下并行运行。
61.指令缓冲器2028可以被配置为存储属于对应核202的指令。在一些实施例中,指令缓冲器2028与定序器2026耦合并向定序器2026提供指令。在一些实施例中,存储在指令缓冲器2028中的指令可以由命令处理器204传送或修改。
62.常量缓冲器2030可以被配置为存储常量值。在一些实施例中,存储在常量缓冲器2030中的常量值可由诸如第一计算单元2020或第二计算单元2022的计算单元使用于批量归一化、量化、逆量化,等等。
63.本地存储器2032可以提供具有快速读/写速度的存储空间。为了减少与全局存储器的可能交互,可以实现具有大容量的存储空间的本地存储器2032。利用海量存储空间,可以在核202内执行大部分数据访问,减少了由数据访问引起的等待时间。在一些实施例中,为了最小化数据加载延迟和能量消耗,集成在芯片上的sram(静态随机存取存储器)可以用作本地存储器2032。在一些实施例中,本地存储器2032可以具有192mb或以上的容量。根据本公开的一些实施例,本地存储器2032均匀地分布在芯片上,以缓解密集布线和发热问题。
64.图2c示出根据本公开实施例的示例性云系统的示意图,所述云系统包括加速器200。如图2c所示,云系统230可以提供具有人工智能(ai)能力的云服务,并且云系统130可以包括多个计算服务器(例如,计算服务器232和计算服务器234)。在一些实施例中,计算服务器232例如可以包括图2a的神经网络加速器200。为了简单和清楚,图2c以简化的方式示出了神经网络加速器200。
65.在神经网络加速器200的协助下,云系统230可以提供图像识别、面部识别、翻译、3d建模等的扩展人工智能能力。可以理解的是,神经网络加速器200可以以其他形式部署到计算设备。例如,神经网络加速器200还可以集成在计算设备中,例如智能手机、平板电脑和可穿戴设备。
66.图3示出了根据本公开实施例的示例性计算单元配置。根据本公开的一些实施例,计算单元可以是图2b中的第一计算单元2020。计算单元2020可以包括第一缓冲器310、第二缓冲器320和处理阵列330。
67.第一缓冲器310可以被配置为存储输入数据。在一些实施例中,存储在第一缓冲器310中的数据可以是在处理阵列330中用于执行的输入数据。在一些实施例中,可以从本地存储器(例如,图2b中的本地存储器2032)获取输入数据。第一缓冲器310可以被配置为支持将在处理阵列330中使用的数据的重用或共享。在一些实施例中,存储在第一缓冲器310中
的输入数据可以是用于卷积运算的激活数据。
68.第二缓冲器320可以被配置为存储权重数据。在一些实施例中,存储在第二缓冲器320中的权重数据可用在处理阵列330以供执行。在一些实施例中,存储在第二缓冲器320中的权重数据可以从本地存储器(例如,图2b中的本地存储器2032)获取。在一些实施例中,存储在第二缓冲器320中的权重数据可以是用于卷积运算的滤波数据。根据本公开的一些实施例,存储在第二缓冲器320中的权重数据可以是压缩数据。例如,权重数据可以是精简数据,以节省芯片上的存储空间。在一些实施例中,计算单元2020还可包括稀疏引擎390。稀疏引擎390可被配置为解压要在处理阵列330中使用的压缩权重数据。
69.处理阵列330可以具有多个层(例如,k个层)。根据本公开的一些实施例,处理阵列330的每一层可包括多个处理串,多个处理串可并行执行计算。例如,包括在处理阵列330的第一层中的第一处理串可以包括第一乘法器340_1和第一累加器350_1,并且第二处理串可以包括第二乘法器340_2和第二累加器350_2。类似地,第一层中的第i处理串可以包括第i乘法器340_i和第i累加器350_i。
70.在一些实施例中,处理阵列330可以在单指令多数据结构控制下执行计算。例如,当执行卷积运算时,处理阵列330的每一层可以用不同的数据执行相同的指令。
71.根据本公开的一些实施例,如图3所示的处理阵列330可被包括在核(例如,图2a和图2b中的核202)中。在一些实施例中,当包括在处理阵列330的一层中的处理串的数量(例如,i个处理串)小于工作项的数量(例如,b个工作项)时,处理阵列330可以执行i个工作项,随后处理阵列330可以执行剩余的工作项(b-i个工作项)。在一些其他实施例中,i个工作项可以由处理阵列330执行,而剩余的工作项可以由另一个核中的另一个处理阵列330执行。
72.根据本公开的一些实施例,处理阵列330还可包括元件运算处理器360。在一些实施例中,元素运算处理器360可以位于处理串的末尾。在一些实施例中,处理阵列330的每一层中的处理串可以共享元素运算处理器360。例如,处理阵列330的第一层中的i个处理串可以共享元素运算处理器360。在一些实施例中,处理阵列330的第一层中的元素运算处理器360可以顺序地对来自累加器350_1到350_i的每个输出值执行其元素运算。类似地,处理阵列330的第k层中的元素运算处理器360可以顺序地对来自累加器350_1到350_i的每个输出值执行其元素运算。在一些实施例中,元素运算处理器360可以被配置为执行多个元素运算。在一些实施例中,由元素运算处理器360执行的元素运算可以包括激活函数,诸如relu(修正线性单元)函数、leaky relu(带泄露修正线性单元)函数、sigmoid函数、tanh(双曲正切)函数,等等。
73.在一些实施例中,乘法器340或累加器350可被配置为对不同于元素运算处理器360对其执行运算的数据类型执行其运算。例如,乘法器340或累加器350可以被配置为对整型数据(例如int 8、int 16等)执行其运算,并且元素运算处理器360可以对浮点型数据(例如fp24等)执行其运算。因此,根据本公开的一些实施例,处理阵列330还可以包括逆量化器370和量化器380,元素运算处理器360位于两者之间。在一些实施例中,因为逆量化器370和批量归一化运算都可以通过带常量(可以从常量缓冲器2030提供常量)的乘法运算和加法运算来执行,所以批量归一化运算可以合并到逆量化器370。在一些实施例中,批归一化运算和去量化运算可以由编译器合并到一个操作中。如图3所示,常量缓冲器2030可将常量提供给逆量化器370以用于去量化或批归一化。
74.在本公开中,图像可以是数字图像。数字图像是由图像元素(也称为像素)组成的图像,每个像素的强度或灰度具有有限、离散的大量的数字表示。在本公开中,图像可以是构成视频的图片,所述视频是按时间序列排列的静态图片(或“帧”)的集合。为了减少存储空间、传输带宽等,可以在存储和传输之前对图像进行压缩、以及解压缩以显示。压缩和解压缩可以通过由处理器(例如,通用计算机的处理器)或专用硬件执行的软件来实现。用于压缩的模块通常称为“编码器”,以及用于解压缩的模块通常称为“解码器”。编码器和解码器可以统称为“编解码器”。编码器和解码器可以实现为各种合适的硬件、软件或其组合中的任何一种。例如,编码器和解码器的硬件实现可以包括电路,例如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑或其任何组合。编码器和解码器的软件实现可以包括程序代码、计算机可执行指令、固件或固定在计算机可读介质中的任何适当的计算机实现的算法或处理。图像压缩和解压缩可以通过各种算法或标准来实现,如jpeg、jpeg-2000、bpg等。在一些应用中,编解码器可以从第一编码标准解压缩图像,并使用第二编码标准重新压缩解压缩的视频,在这种情况下,编解码器可以称为“转码器”75.图像编码过程可以识别并保留可用于重构图像的有用信息,而忽略重构过程中不重要的信息。如果不能完全重构被忽略的、不重要的信息,这种编码过程可以被称为“有损”,否则,这种编码过程可以被称为“无损”。大多数编码过程是有损的,这是为了减少所需的存储空间和传输带宽而进行的折衷。
76.图4a示出根据本公开实施例的示例性图像压缩设备的框图。在一些实施例中,图像压缩设备400可以包括变换单元410、量化单元420和编码单元430。在一些实施例中,图像压缩设备的至少一部分可由编码器实现。在一些实施例中,图像压缩设备400可以被实现为各种合适的硬件、软件或其组合中的任何一个。例如,图像压缩设备400的硬件实现可以包括电路,例如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑或其任何组合。图像压缩设备400的软件实现可以包括程序代码、计算机可执行指令、固件或固定在计算机可读介质中的任何适当的计算机实现的算法或处理。
77.变换单元410可被配置为将图像从空间域(例如,二维域)变换到频域。将参考图5a来说明变换单元410的功能,图5a示出了根据本公开实施例的示例变换过程。应当注意,图5a的图像500是空间域中的图像。如图5a所示,图像500可以在变换到频域之前被划分为基本块。在本公开中,这些基本块被称为基本处理单元(basic processing unit,bpu)。例如,在图5a中,图像500具有256
×
256的大小,并且被划分为具有8
×
8大小的bpu,在图像500中bpu510被表示为阴影框。在本例中,图像500可以被划分为1024个bpu。bpu510可以具有可变的大小,例如128
×
128、64
×
64、32
×
32、16
×
16、4
×
8、16
×
32、4
×
4或像素的任意形状和大小。可以基于编码效率和要在基本处理单元中保持的细节级别的平衡来为图像选择bpu510的大小和形状。作为一种示例,在图5a中,图像500被示为具有三个通道。虽然一些实施例解释了一个通道,但是应当理解,本公开的一些实施例的图像压缩和频率补偿可以独立地用于每个通道或者整体地用于多个通道。
78.如图5a所示,通过变换单元410,bpu 510可以被分解成一组二维“基函数b1、b2、
……
、b
i”,每个基函数bi与“变换系数c1、c2、
……
、c
i”相关联。如图5a所示,每个bpu 510
可以由基函数的组合来表示。例如,xk=c
1k
*b1 c
2k
*b2 ... c
ik
*bi,其中,xk表示第k个bpu 510。不同的bpu 510可以具有变换系数和基函数的不同组合。基函数bi可以表示具有与bpu510相同大小的基图案。每个基函数bi可以表示bpu 510的变化频率(例如,亮度变化的频率)分量。不能从任何其他基函数的任何组合(例如,线性组合)再现基函数bi。换句话说,变换可以将bpu510的变化分解到频域中。这种分解类似于函数的离散傅里叶变换,其中基函数bi类似于离散傅里叶变换的基函数(例如,三角函数),而变换系数ci类似于与基函数相关联的系数。
79.不同的变换算法可以使用不同的基函数bi。可以使用各种变换算法,例如,离散余弦变换、离散正弦变换等。根据本公开的一些实施例,给定bpu510的已知大小(例如,8
×
8),基函数bi可以被预先计算和存储。在一些实施例中,使用离散余弦变换作为变换算法,表示为m
×
n的矩阵a的bpu 510的二维变换矩阵520可定义如下:
[0080][0081]
其中,0≤p≤m-1,0≤q≤n-1,
[0082][0083][0084]
这里,a
mn
表示矩阵a的第m 1行和第n 1列处的元素的值。值c
pq
称为矩阵a的变换系数,c
pq
表示变换矩阵520的第p 1行和第q 1列处的值。在此变换算法中,基函数bi可以表示为:
[0085][0086]
如公式1和2所示,离散余弦变换(dct)将图像表示为不同幅度和频率的正弦曲线之和。
[0087]
如图5a所示,变换系数ci(即,公式1中的c
pq
)是变换矩阵520的元素,因此变换矩阵520的每个元素表示对应bpu 510中特定频率分量的量。在本例中,64个基函数被用于变换,因此可以通过bpu510的变换生成大小为8
×
8的变换矩阵520。根据本公开的一些实施例,可以对图像500的所有bpu510执行变换。
[0088]
变换是可逆的。即,可以通过变换的逆操作(称为“逆变换”)来恢复bpu510。例如,为了恢复bpu510的像素,逆变换可以是将基函数bi的对应像素的值乘以各自的相关系数ci,并将乘积相加以产生加权和。对于图像编码标准,编码器和解码器都可以使用相同的变换算法(因此相同的基函数bi)。因此,编码器可以仅记录变换系数,解码器可以从变换系数重构bpu510,而不从编码器接收基函数bi。与bpu510相比,变换系数可以具有更少的比特,变换系数可被用于重构bpu510,而不会有显著的质量恶化。因此,可以通过变换来压缩bpu510。
[0089]
再次参考图4a,量化单元420被配置为量化变换矩阵(例如,图5a的变换矩阵520)的变换系数ci。根据本公开的一些实施例,量化单元420可以通过量化变换矩阵520的变换系数ci来进一步压缩图像500。在一些实施例中,量化单元420可以通过将每个变换系数ci除以整数值(称为“量化参数”)并将商舍入到其最近的整数来生成量化变换系数。在这样的操作之后,一些频率分量的一些变换系数ci可以被转换为零,而一些其他频率分量的变换系数可以被转换为更小的整数。在编码过程中可以忽略零值的量化变换系数,从而进一步压缩变换系数ci。量化处理也是可逆的,其中量化变换系数可以在量化的逆操作(称为“逆量化”)中重构为变换系数ci。
[0090]
因为舍入运算中这种除法的余数被忽略,所以量化过程可能是有损的。通常,量化过程可以在编码过程中造成最大的信息损失。信息损失越大,量化变换系数ci所需的比特数越少。为了获得不同级别的信息损失,可以使用量化参数或量化过程的任何其他参数的不同值。
[0091]
在一些实施例中,量化单元420可以使用定义每个频率分量的默认量化参数的默认量化表。由于人眼通常更擅长识别低频变化,因此可以忽略高频变化的信息而不会导致解码中的显著质量恶化。因此,默认量化表可以包括预定的默认量化参数,使得在保留低频分量(例如,当有64个频率分量时,最低的9个频率分量)的同时丢弃一个或多个高频分量(例如,当存在64个频率分量时,最高的55个频率分量)。对于大多数图像,大部分信号能量位于低频,因此低频分量的值比高频分量的值大得多。因此,可能难以通过仅去除高频分量来获得较高压缩程度。根据本公开的一些实施例,可以通过动态地为每个图像生成量化表来提供有效的图像压缩方案。根据本公开的一些实施例,可以通过选择性地去除包括低频分量的一个或多个频率分量来获得图像的高压缩率。
[0092]
图4b示出根据本公开实施例的图4a的量化单元的框图。如图4b所示,量化单元420可以包括变换系数分析器421和量化表生成器422。
[0093]
变换系数分析器421被配置为估计变换系数ci的分布。在一些实施例中,变换系数分析器421可以估计图像500的每个变换系数ci的标准偏差值。图5b示出示例变换系数分布。如图5b所示,变换系数分析器421可以从图像500的所有bpu 510收集每个频率分量的变换系数ci。在本例中,由于从1024个bpu 510生成1024个变换矩阵520,因此可以获取每个频率分量的1024个变换系数ci。变换系数分析器421可以估计频率分量ci的分布。在一些实施例中,变换系数ci可具有正态分布530,正态分布530可基于以下公式:
[0094][0095]
这里,参数μ表示变换系数ci的平均值,参数σ表示变换系数ci的标准偏差值。如图5b所示,对于正态分布530,距离平均值μ小于一个标准偏差σ的值占集合的68.27%,距离平均值小于两个标准偏差的值占集合的95.45%,距离平均值小于三个标准偏差的值占集合的99.73%。在一些实施例中,变换系数分析器421可以例如通过估计适合变换系数ci的分布的公式3,或者通过从变换系数ci的分布估计占集合的68.27%的值到平均值的距离,以估计变换系数ci的标准偏差值σ。根据一些实施例,变换系数分析器421在估计变换系数分布及其标准偏差值σ时利用统计信息。
[0096]
图5c示出变换系数分布的标准偏差值与压缩率之间的示例关系,其中,σ1《σ2《σ3。
如图5c所示,在假设应用相同的量化参数的情况下,标准偏差σ越大,量化后需要的用于表示数据的比特越多。因此,当对标准偏差σ越大的特定频率分量使用越大的量化参数时,可以增加压缩率。
[0097]
再次参考图4b,量化表生成器422可以基于默认量化表和变换系数分布生成图像500的量化表。图5d示出根据本公开实施例的生成量化表的示例过程。在一些实施例中,量化表生成器422可以基于默认量化表540生成量化表550,并且可以变换系数分布。在一些实施例中,量化表生成器422针对特定频率分量将标准偏差σi与默认量化表540中的默认量化参数qi进行比较。当标准偏差σi大于默认量化参数qi时,量化表生成器422被配置为用量化表550中的标准偏差σi替换默认量化参数qi。在这种情况下,标准偏差σi成为经调整的量化表550中的量化参数q
i’。当标准偏差σi等于或小于量化表540中的默认量化参数qi时,在经调整的量化表550中保留默认量化参数qi。根据一些实施例,可更新默认量化表540的所有频率分量的所有量化参数以生成图像500的经调整的量化表550。在一些实施例中,量化表生成器422可以生成经调整的量化表550,使得可以通过量化去除某一频率分量(例如,包括低频分量)。
[0098]
再次参考图4a,量化单元420可以通过使用为图像500生成的经调整的量化表550来执行bpu510的变换系数ci的量化。在一些实施例中,由于可针对每个图像生成经调整的量化表550,所以量化单元420可基于经调整的量化表550来量化图像500的所有bpu510的变换系数ci。
[0099]
编码单元430被配置为使用二进制编码技术(例如,熵编码、可变长度编码、算术编码、哈夫曼编码、上下文自适应二进制算术编码或任何其他无损或有损压缩算法)对量化变换系数进行编码。在一些实施例中,除了量化变换系数之外,编码单元430可以对其他信息进行编码,例如,在变换单元410中使用的变换类型、在量化单元420中使用的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数)等。编码单元430可以从经编码的输出数据生成比特流。在一些实施例中,可以进一步打包图像比特流以用于网络传输。
[0100]
图6示出传统技术和本公开实施例之间的示例性能比对。在图6中,jpeg表示在压缩时使用默认量化表(例如,图5d中的540)的传统技术,emb表示在压缩时使用经调整的量化表(例如,图5d中的550)的本公开的实施例。bits表示用于表示压缩图像的比特数,并且bits可以指示压缩率。例如,当压缩率高时,需要较少的比特来表示图像500。psnr表示峰值信噪比,并且psnr可以指示重构图像的质量。例如,更高的psnr可以表示更高的图像质量。如图6所示,除了小部分(例如,比特数量等于或小于25比特),当使用相同数量的比特时,emb通常显示出比jpeg更高的psnr,这意味着当应用相同的压缩率时,emb可以提供比jpeg更高质量的重构图像。
[0101]
根据本公开的一些实施例,因为当特定频率分量的标准偏差σi越大时,可以应用越大的量化参数(例如,标准偏差σi)进行量化,以增加压缩率。根据本公开的一些实施例,基于特定频率分量的标准偏差σi动态调整量化参数qi,并且无论变换系数分布变化如何,都可以实现恒定的压缩率。根据本公开的一些实施例,通过在压缩时动态调整量化参数,可以选择性地去除某个频率分量,这导致高压缩率。
[0102]
图7示出根据本公开实施例的示例图像压缩方法的示例性流程图。为了说明的目的,将参考图4a的压缩装置400和图4b的量化单元420来描述图像压缩方法700。
[0103]
在步骤s710中,生成用于图像500的bpu 510的变换矩阵520。步骤s710可由例如变换单元410等执行。在一些实施例中,图像500可以从空间域(例如,二维域)转换为频域。在一些实施例中,图像500被分割成bpu510。如图5a所示,bpu510被分解成一组二维“基函数b1、b2、
……
、b
i”,每个基函数bi与“变换系数c1、c2、
……
、c
i”相关联。如图5a所示,每个bpu510可以由基函数的组合来表示。例如,xk=c
1k
b1 c
2k
*b2 ... c
ik
*bi,其中,xk表示第k个bpu 510。不同的bpu 510可以具有变换系数和基函数的不同组合。基函数bi可以表示具有与bpu510相同大小的基图案。每个基函数bi可以表示bpu 510的变化频率(例如,亮度变化的频率)分量。
[0104]
不同变换算法可以使用不同的基函数bi。可以使用各种变化算法,例如,离散余弦变换、离散正弦变换等。根据本公开的一些实施例,给定bpu 510的已知大小(例如,8
×
8),基函数bi可以被预先计算和存储。
[0105]
如图5a所示,变换系数ci是变换矩阵520的元素,因此变换矩阵520的每个元素表示对应bpu 510中特定频率分量的量。在本例中,64个基函数被用于变换,因此可以通过bpu510的变换生成大小为8
×
8的变换矩阵520。根据本公开的一些实施例,可以对图像500的所有bpu510执行变换。
[0106]
在步骤s720中,量化图像500的变换系数。步骤s720可由例如量化单元420等执行。根据本公开的一些实施例,步骤s720可由三个子步骤s721、s722和s723执行。
[0107]
在子步骤s721中,可以确定图像500的变换系数分布。子步骤s721可由例如变换系数分析器421等执行。在一些实施例中,估计变换系数ci的分布。在一些实施例中,可以估计图像500的每个变换系数ci的标准偏差值。如图5b所示,可以从图像500的所有bpu 510收集每个频率分量的变换系数ci。可以基于所收集的变换系数ci估计频率分量ci的分布。在一些实施例中,变换系数ci可以具有公式3所表示的正态分布530。在一些实施例中,可以例如通过估计适合变换系数ci的分布的公式3,或者通过从变换系数ci的分布估计占集合的68.27%的值到平均值的距离,以估计变换系数ci的标准偏差值σ。根据一些实施例,在估计变换系数分布及其标准偏差值σ时利用统计信息。
[0108]
在子步骤s722中,为图像500生成量化表。子步骤s722可由例如量化表生成器422等执行。在一些实施例中,可以基于默认量化表和变换系数分布生成图像500的量化表。在一些实施例中,针对特定频率分量将变换系数ci的标准偏差σi与默认量化表540中的默认量化参数qi进行比较。当标准偏差σi大于默认量化参数qi时,用量化表550中的标准偏差σi替换默认量化参数qi。在这种情况下,标准偏差σi成为经调整的量化表550中的量化参数q
i’。当标准偏差σi等于或小于量化表540中的默认量化参数qi时,在经调整的量化表550中保留默认量化参数qi。根据一些实施例,可更新默认量化表540的所有频率分量的所有量化参数以生成图像500的经调整的量化表550。在一些实施例中,可以生成经调整的量化表550,使得可以通过量化去除某一频率分量(例如,包括低频分量)。
[0109]
在子步骤s723中,基于子步骤s722中生成的经调整的量化表550对图像500的变换系数ci进行量化。子步骤s723可由例如量化单元420等执行。在一些实施例中,由于可针对每个图像生成经调整的量化表550,所以可基于经调整的量化表550来量化图像500的所有bpu510的变换系数ci。
[0110]
在一些实施例中,可以通过将每个变换系数ci除以经调整的量化表550中的量化
参数并将商舍入到其最近的整数来生成量化变换系数。在这样的操作之后,一些频率分量的一些变换系数ci可以被转换为零,而一些其他频率分量的变换系数可以被转换为更小的整数。在编码过程中可以忽略零值的量化变换系数,从而进一步压缩变换系数ci。
[0111]
在步骤s730中,对量化的变换系数进行编码。步骤s730可以由例如编码单元430等执行。在一些实施例中,可以使用二进制编码技术(例如,熵编码、可变长度编码、算术编码、哈夫曼编码、上下文自适应二进制算术编码或任何其他无损或有损压缩算法)对量化变换系数进行编码。在一些实施例中,除了量化变换系数之外,可以对其他信息进行编码,例如,在步骤s710中使用的变换类型、在步骤s720中使用的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数)等。在一些实施例中,可以从经编码的输出数据生成比特流。在一些实施例中,可以进一步打包图像比特流以用于网络传输。
[0112]
机器学习或深度学习已经广泛应用于各个领域,神经网络的应用已经扩展到图像处理。目前基于滤波器的机器学习算法专注于图像去噪以去除伪影。也就是说,基于机器学习的方法通常用于减少伪影问题,并在这些问题上显示出良好的性能。然而,因为基于机器学习的方法试图恢复所有频率信息,这种基于机器学习的方法可能需要非常大和复杂的dnn(deep neural network,深度神经网络)模型(例如,大于100层)。根据本公开的一些实施例,可以提供有效的基于机器学习的图像补偿方案。根据本公开的一些实施例,可以提供用于图像的特定频率分量补偿方法。根据本公开的一些实施例,可以提供需要相对少量计算的频率分量补偿方案。根据一些实施例,可以在不降低图像质量的情况下实现更高的压缩率。
[0113]
图8a示出根据本公开实施例的示例性频率分量补偿设备的示意图。在一些实施例中,补偿设备800可以在或由图2a的加速器200实现。在一些实施例中,补偿设备800的至少一部分可以在或由图2b的核202或图3的计算单元2020实现。3.如图8a所示,补偿设备800可以包括图像获取器810、变换系数估计器820、补偿图像生成器830和图像组合器840。将参考图8b来说明补偿设备800的功能,图8b示出根据本公开实施例的频率分量补偿的示例过程。
[0114]
图像获取器810可以被配置为获取图像811。如图8b所示,作为示例,大小为256
×
256的图像811用作输入图像。在一些实施例中,图像811可以是来自压缩图像(例如,通过图4a的图像压缩设备400)的重构图像。在下面的公开中,仅出于说明的目的,已被压缩以生成压缩图像的图像被称为“原始图像”。在一些实施例中,图像811可以是来自在压缩期间通过从原始图像移除一个或多个频率分量而被压缩的压缩图像的重构图像。在一些实施例中,图像811可以是来自压缩图像的重构图像,例如,通过对应于压缩图像的比特流的二进制解码、逆量化和逆变换。在一些实施例中,图像获取器810可被配置为获取作为比特流的压缩图像并解压缩压缩图像。在一些实施例中,图像获取器810可以与图像解码器(未示出)通信以接收解压缩图像。
[0115]
再次参考图8a,变换系数估计器820可被配置为估计频率分量的估计变换系数esk以补偿图像811。根据本公开的一些实施例,可以基于图像811的大小和在压缩对应图像(例如,图5a中的图像500)时已经使用的基函数bi的大小来确定估计变换系数esk的数量。根据本公开的一些实施例,变换系数估计器820可以具有或获取在压缩原始图像以生成压缩图像的过程中使用的基函数bi的信息。根据本公开的一些实施例,可以针对图像811的每一部分,例如具有基函数bi的大小,生成一个估计变换系数。在本例中,基函数bi的大小为8
×
8,
因此可以针对图像811的每个8
×
8像素估计一个变换系数。在本例中,变换系数估计器820可生成频率分量的32
×
32(即,256/8
×
256/8)的估计变换系数以进行补偿。当大小为4
×
4的基函数bi用于压缩时,变换系数估计器820可产生频率分量的64
×
64(即,256/4
×
256/4)的估计变换系数以进行补偿。在图8b中,估计变换系数esk作为元素可以构成估计变换系数矩阵821。在本例中,第一估计变换系数es1可以表示图像811的8
×
8的第一像素的估计变换系数,第二估计变换系数es2可以表示图像811的8
×
8的第二像素的估计变换系数,等等。
[0116]
在一些实施例中,变换系数估计器820可由机器学习网络或深度神经网络实现,变换系数估计器820被配置为基于图像811估计频率分量的变换系数以进行补偿。在一些实施例中,机器学习网络或深度神经网络可以接收重构图像(例如,图像811)、要补偿的频率分量、对应于要补偿的频率分量的基函数bi等作为输入数据。可在一些实施例中,机器学习网络或深度神经网络可以基于先前的训练数据在监督或无监督学习下训练。在一些实施例中,在原始图像的频率分量的正确变换系数已知或未知的情况下,可以训练机器学习网络或深度神经网络,以推测来自一个或多个图像的一个或多个频率分量的变换系数,所述图像从去除所述频率分量的压缩图像重构。在一些实施例中,变换系数估计器820可以通过使用一个或多个卷积运算对图像811进行下采样来估计图像811的变换系数。在一些实施例中,变换系数估计器820可以通过多组卷积运算来实现。例如,大小为256
×
256的图像811可以通过三组卷积运算缩小为大小为32
×
32的估计变换系数矩阵821,并且每组卷积运算可以包括两个卷积运算。例如,第一卷积运算可以是具有k个滤波器(例如,16)和步长2的conv3
×
3(窗口大小为3
×
3的卷积运算),第二卷积运算可以是具有k个滤波器(例如,16)和步长1的conv3
×
3,使得图像811可以通过每组卷积运算按比率2缩小。因此,图像811可以通过三组卷积运算在行维度和列维度中以比率2
×2×
2缩小。在一些实施例中,卷积运算的组数、每组中的卷积运算的个数、卷积运算窗口大小、滤波器的数量和步长大小等可根据实施例而改变,以准确估计图像811的对应部分的变换系数。
[0117]
再次参考图8a,补偿图像生成器830被配置为基于估计变换系数矩阵821和对应于要补偿的频率分量的基函数bi来生成补偿图像831。在一些实施例中,可以假设在压缩时从原始图像中移除对应于基函数bi的频率分量,补偿设备800被配置为对重构图像811补偿所述移除的频率分量。根据本公开的一些实施例,补偿图像生成器830可以具有或获取压缩期间移除的频率分量的信息。
[0118]
根据本公开的一些实施例,估计变换系数矩阵821的每个估计变换系数esk对应于图像811的具有8
×
8像素的一个bpu 510。在一些实施例中,估计变换系数矩阵821的每个估计变换系数esk的值可以被估计为特定频率分量(例如,压缩期间移除的频率分量)的变换系数。根据本公开的一些实施例,补偿图像生成器830可以通过估计变换系数esk与对应于移除的频率分量的基函数bi之间的点乘来生成所述移除的频率分量的补偿图像831。例如,可以通过在估计变换系数矩阵821的第一估计变换系数es1与基函数bi之间执行点乘法来生成具有8
×
8像素的第一部分x1,并且可以通过在估计变换系数矩阵821的第二估计变换系数es2与基函数bi之间执行点乘法来生成具有8
×
8像素的第二部分x2。类似地,可以通过在估计变换系数矩阵821的第k个估计变换系数esk与基函数bi之间执行点乘来生成具有8
×
8像素的第k部分xk。在一些实施例中,可以生成与大小为256
×
256的图像811相对应的1024个部分x1到x
1024
。在一些实施例中,上述生成的1024个部分可以被级联以生成移除的频率分
量的补偿图像831。
[0119]
再次参考图8a,图像组合器840被配置为组合补偿图像831和重构图像811以生成组合图像841。如图8b所示,补偿图像831具有与重构图像811相同的大小,因此可以按元素将补偿图像831和重构图像811相加以生成组合图像841。虽然示出了一个频率分量补偿,但是应当理解,可以通过为多个频率分量生成多个补偿图像以及通过将向多个补偿图像加到重构图像811来补偿多个频率分量。例如,可以为每个移除的频率分量生成补偿图像831,并且可以通过将多个补偿图像831加到重构图像811来生成组合图像841。
[0120]
根据本公开的一些实施例,补偿设备800还可包括改进模块(未示出)以提高组合图像841的质量。在一些实施例中,改进模块可以对组合图像841执行一个或多个卷积运算。在一些实施例中,改进模块可以执行第一卷积操作以从组合图像841提取更高级别的特征(例如,图像的结构)。在一些实施例中,改进模块可以执行第一卷积运算以从组合图像841提取更高级别的特征(例如,图像的结构)。例如,第一卷积操作可以是具有多个滤波器(例如,64)和步幅1的conv5
×
5(窗口大小为5
×
5的卷积运算)。在一些实施例中,改进模块可以执行第二卷积运算以从组合图像841中提取较低级别的特征(例如,图像的边缘)。例如,第二卷积运算可以是具有多个滤波器(例如,64)和步幅1的conv3
×
5(窗口大小为3
×
5的卷积运算)。在一些实施例中,改进模块还可以执行第三卷积运算以匹配组合图像841的通道数。例如,第三卷积运算可以是具有1个滤波器和步长1的conv3
×
3,使得输出图像可以具有一个通道。
[0121]
图9示出传统技术和本公开实施例之间的示例性能比对。在图9中,jpeg表示第一传统技术,其中通过移除五个最低频率分量来压缩图像,并且从压缩图像无补偿地重构输出图像。arcnn代表第二种传统技术,其中通过移除五个最低频率分量来压缩图像,并从压缩图像重构输出图像,通过基于深度神经网络的压缩伪影减少来补偿输出图像,深度神经网络通常需要100多层来进行补偿。emb表示本公开的实施例,其中通过去除五个最低频率分量来压缩图像,并且从压缩图像重构输出图像,通过根据本公开的一些实施例的频率分量补偿过程利用去除的频率分量来补偿输出图像。在jpeg、arcnn和emb下测量每个输出图像的psnr(峰值信噪比)和bits(比特数)。如图9所示,当使用相同数量的比特时,emb显示出比jpeg和arcnn更高的峰值信噪比,这意味着当应用相同的压缩率时,emb可以提供比jpeg和arcnn更高的图像质量。
[0122]
根据本公开的一些实施例,可以提供一种高效的基于机器学习的图像补偿方案。根据本公开的一些实施例,可以提供高效神经网络模型,高效神经网络模型需要相对较少数量的神经网络层并且可以减少计算量的同时提供更高质量补偿。根据本公开的一些实施例,可以提供用于图像的特定频率分量补偿方法。根据本公开的一些实施例,可以提供需要相对小的计算量的频率分量补偿方案。根据一些实施例,可以在不降低图像质量的情况下实现更高的压缩率。
[0123]
图10示出根据本公开实施例的频率分量补偿方法的示例性流程图。为了说明的目的,将参考图8a的补偿设备800来描述频率分量补偿方法1000。可以理解,在一些实施例中,频率分量补偿方法1000的至少一部分可以在或由图2a的加速器200、图2b的核202或者图3的计算单元2020直接或间接地执行。
[0124]
在步骤s1100,获取输入图像。步骤s1100可由例如图像获取器810等执行。图8b所
示,作为示例,大小为256
×
256的图像811用作输入图像。在一些实施例中,图像811可以是来自压缩图像(例如,通过图4a的图像压缩设备400)的重构图像。在一些实施例中,图像811可以是来自在压缩期间通过从原始图像移除一个或多个频率分量而被压缩的压缩图像的重构图像。
[0125]
在步骤s1200中,可以估计用于补偿输入图像811的频率分量的变换系数esk。步骤s1200可由例如变换系数估计器820等执行。根据本公开的一些实施例,可以基于图像811的大小和在压缩对应图像(例如,图5a中的图像500)时使用的基函数bi的大小来确定估计变换系数esk的数量。在一些实施例中,用于压缩原始图像以生成压缩图像的基函数bi的信息是已知的。根据本公开的一些实施例,可以针对图像811的每一部分,例如具有基函数bi的大小,生成一个估计变换系数。在本例中,基函数bi的大小为8
×
8,因此可以针对图像811的每个8
×
8像素估计一个变换系数。在本例中,可生成频率分量的32
×
32(即,256/8
×
256/8)的估计变换系数以进行补偿。如图8b所示,估计变换系数esk作为元素可以构成估计变换系数矩阵821。在本例中,第一估计变换系数es1可以表示图像811的8
×
8的第一像素的估计变换系数,第二估计变换系数es2可以表示图像811的8
×
8的第二像素的估计变换系数,等等。
[0126]
在一些实施例中,可由机器学习网络或深度神经网络生成变估计换系数,机器学习网络或深度神经网络被配置为基于图像811估计要补偿的频率分量的变换系数。在一些实施例中,机器学习网络或深度神经网络可以接收重构图像(例如,图像811)、要补偿的频率分量、对应于要补偿的频率分量的基函数bi等作为输入数据。可在一些实施例中,机器学习网络或深度神经网络可以基于先前的训练数据在监督或无监督学习下训练。在一些实施例中,在原始图像的频率分量的正确变换系数已知或未知的情况下,可以训练机器学习网络或深度神经网络,以推测来自一个或多个图像的一个或多个频率分量的变换系数,所述图像从去除所述频率分量的压缩图像重构。
[0127]
在步骤s1300,生成补偿图像。步骤s1300可由例如补偿图像生成器830等执行。在一些实施例中,基于估计变换系数矩阵821和对应于要补偿的频率分量的基函数bi生成补偿图像831。在一些实施例中,可以假设在压缩时从原始图像中移除对应于基函数bi的频率分量,并为对重构图像811补偿所述移除的频率分量。根据本公开的一些实施例,在压缩期间移除的频率分量的信息是已知的。
[0128]
根据本公开的一些实施例,估计变换系数矩阵821的每个估计变换系数esk对应于图像811的具有8
×
8像素的一个bpu 510。在一些实施例中,估计变换系数矩阵821的每个估计变换系数esk的值可以被估计为特定频率分量(例如,压缩期间移除的频率分量)的变换系数。根据本公开的一些实施例,可以通过估计变换系数esk与对应于移除的频率分量的基函数bi之间的点乘来生成所述移除的频率分量的补偿图像831。例如,可以通过在估计变换系数矩阵821的第一估计变换系数es1与基函数bi之间执行点乘法来生成具有8
×
8像素的第一部分x1,并且可以通过在估计变换系数矩阵821的第二估计变换系数es2与基函数bi之间执行点乘法来生成具有8
×
8像素的第二部分x2。类似地,可以通过在估计变换系数矩阵821的第k个估计变换系数esk与基函数bi之间执行点乘来生成具有8
×
8像素的第k部分xk。在一些实施例中,可以生成与大小为256
×
256的图像811相对应的1024个部分x1到x
1024
。在一些实施例中,上述生成的1024个部分可以被级联以生成移除的频率分量的补偿图像831。
[0129]
在步骤s1400中,组合输入图像811和补偿图像831。步骤s1400可由例如图像组合
器840等执行。在一些实施例中,组合补偿图像831和重构图像811以生成组合图像841。如图8b所示,补偿图像831具有与重构图像811相同的大小,因此可以按元素将补偿图像831和重构图像811相加以生成组合图像841。虽然示出了一个频率分量补偿,但是应当理解,可以通过为多个频率分量生成多个补偿图像以及通过将多个补偿图像加到重构图像811来补偿多个频率分量。例如,可以为每个移除的频率分量生成补偿图像831,并且可以通过将多个补偿图像831加到重构图像811来生成组合图像841。
[0130]
使用以下权利要求进一步描述实施例:
[0131]
1.一种图像补偿方法,包括:
[0132]
基于第一图像估计所述第一图像的频率分量的变换系数;
[0133]
执行所述估计变换系数与所述频率分量相关联的基函数之间的点乘运算,以生成补偿图像;以及
[0134]
组合所述第一图像和所述补偿图像以生成组合图像。
[0135]
2.根据权利要求1所述的方法,其中,估计所述第一图像的频率分量的变换系数包括:
[0136]
对所述第一图像进行下采样以生成变换系数矩阵,所述变换系数矩阵包括所述估计变换系数。
[0137]
3.根据权利要求1或2所述的方法,其中,基于所述第一图像的大小和所述基函数的大小确定所述估计变换系数的数量。
[0138]
4.根据权利要求1至3中任一个所述的方法,其中,所述执行所述估计变换系数与所述频率分量相关联的基函数之间的点乘运算,以生成补偿图像包括:
[0139]
执行所述估计变换系数的第一估计变换系数与所述基函数之间的点乘运算,以生成所述补偿图像的第一部分;以及
[0140]
执行所述估计变换系数的第二估计变换系数与所述基函数之间的点乘运算,以生成所述补偿图像的第二部分。
[0141]
5.根据权利要求1至4中任一个所述的方法,其中,所述第一图像是来自第三图像的压缩图像的重构图像,所述基函数用于压缩所述第三图像以生成所述压缩图像。
[0142]
6.根据权利要求1至4中任一个所述的方法,其中,所述第一图像是来自第三图像的压缩图像的重构图像,在压缩期间从所述第三图像去除所述频率分量以生成所述压缩图像。
[0143]
7.一种用于图像补偿的设备,包括:
[0144]
存储器,用于存储指令集;以及
[0145]
至少一个处理器,被配置为执行所述指令集以使所述设备执行:
[0146]
基于第一图像估计所述第一图像的频率分量的变换系数;
[0147]
执行所述估计变换系数与所述频率分量相关联的基函数之间的点乘运算,以生成补偿图像;以及
[0148]
组合所述第一图像和所述补偿图像以生成组合图像。
[0149]
8.根据权利要求7所述的设备,其中,在估计所述第一图像的频率分量的变换系数时,所述至少一个处理器被配置为执行所述指令集以使所述设备进一步执行:
[0150]
对所述第一图像进行下采样以生成变换系数矩阵,所述变换系数矩阵包括所述估
计变换系数。
[0151]
9.根据权利要求7或8所述的设备,其中,基于所述第一图像的大小和所述基函数的大小确定所述估计变换系数的数量。
[0152]
10.根据权利要求7至9中任一个所述的设备,其中,在执行所述估计变换系数与所述频率分量相关联的基函数之间的点乘运算,以生成所述补偿图像时,所述至少一个处理器被配置为执行所述指令集以使所述设备进一步执行:
[0153]
执行所述估计变换系数的第一估计变换系数与所述基函数之间的点乘运算,以生成所述补偿图像的第一部分;以及
[0154]
执行所述估计变换系数的第二估计变换系数与所述基函数之间的点乘运算,以生成所述补偿图像的第二部分。
[0155]
11.根据权利要求7至10中任一个所述的设备,其中,所述第一图像是来自第三图像的压缩图像的重构图像,所述基函数用于压缩所述第三图像以生成所述压缩图像。
[0156]
12.根据权利要求7至10中任一个所述的设备,其中,所述第一图像是来自第三图像的压缩图像的重构图像,在压缩期间从所述第三图像去除所述频率分量以生成所述压缩图像。
[0157]
13.一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质存储可以由计算装置的至少一个处理器执行的指令集,以使得所述计算装置可执行图像补偿方法,所述方法包括:
[0158]
基于第一图像估计所述第一图像的频率分量的变换系数;
[0159]
执行所述估计变换系数与所述频率分量相关联的基函数之间的点乘运算,以生成补偿图像;以及
[0160]
组合所述第一图像和所述补偿图像以生成组合图像。
[0161]
14.根据权利要求13所述的计算机可读介质,其中,在估计所述第一图像的频率分量的变换系数时,所述计算装置的所述至少一个处理器执行所述指令集以使所述计算装置进一步执行:
[0162]
对所述第一图像进行下采样以生成变换系数矩阵,所述变换系数矩阵包括所述估计变换系数。
[0163]
15根据权利要求13或14所述的计算机可读介质,其中,基于所述第一图像的大小和所述基函数的大小确定所述估计变换系数的数量。
[0164]
16.根据权利要求13至15中任一个所述的计算机可读介质,其中,在执行所述估计变换系数与所述频率分量相关联的基函数之间的点乘运算,以生成补偿图像时,所述计算装置的所述至少一个处理器执行所述指令集以使所述计算装置进一步执行:
[0165]
执行所述估计变换系数的第一估计变换系数与所述基函数之间的点乘运算,以生成所述补偿图像的第一部分;以及
[0166]
执行所述估计变换系数的第二估计变换系数与所述基函数之间的点乘运算,以生成所述补偿图像的第二部分。
[0167]
17.根据权利要求13至16中任一个所述的计算机可读介质,其中,所述第一图像是来自第三图像的压缩图像的重构图像,所述基函数用于压缩所述第三图像以生成所述压缩图像。
[0168]
18.根据权利要求13至16中任一个所述的计算机可读介质,其中,所述第一图像是来自第三图像的压缩图像的重构图像,在压缩期间从所述第三图像去除所述频率分量以生成所述压缩图像。
[0169]
19.一种终端,包括:
[0170]
编码器,用于通过去除频率分量来压缩图像;以及
[0171]
设备,用于为所述压缩图像的重构图像补偿所述频率分量,所述设备包括:
[0172]
存储器,用于存储指令集;以及
[0173]
至少一个处理器,被配置为执行所述指令集以使所述设备执行:
[0174]
基于重构图像估计所述重构图像的频率分量的变换系数;
[0175]
执行所述估计变换系数与所述频率分量相关联的基函数之间的点乘运算,以生成补偿图像;以及
[0176]
组合所述重构图像和所述补偿图像以生成组合图像。
[0177]
20.根据权利要求19所述的终端,其中,用于压缩图像的所述编码器包括:
[0178]
第二存储器,用于存储第二指令集;以及
[0179]
至少一个第二处理器,被配置为执行所述第二指令集以使得所述编码器执行:
[0180]
估计所述图像的第一变换系数的分布;
[0181]
基于估计的所述图像的第一变换系数的分布确定第一量化参数;以及
[0182]
根据所述第一量化参数量化所述第一变换系数。
[0183]
21.根据权利要求19或20所述的终端,其中,在基于估计的所述第一变换系数的分布确定所述第一量化参数时,所述至少一个第二处理器被配置为执行所述第二指令集以使得所述编码器进一步执行:
[0184]
确定所述分布的标准偏差值;
[0185]
将所述标准偏差值与对应于所述第一变换系数的默认量化参数进行比较;以及
[0186]
响应于所述标准偏差值大于所述默认量化参数,确定所述标准偏差值为所述第一量化参数。
[0187]
22.根据权利要求19至21中任一个所述的终端,其中,所述第一变换系数是与对应于所述频率分量的所述基函数相关联的系数。
[0188]
23.根据权利要求19至22中任一个所述的终端,其中,在估计所述重构图像的频率分量的变换系数时,所述至少一个处理器被配置为执行所述指令集以使得所述设备进一步执行:
[0189]
对所述重构图像进行下采样以生成变换系数矩阵,所述变换系数矩阵包括所述估计变换系数。
[0190]
24.根据权利要求19至23中任一个所述的终端,其中,基于所述重构图像的大小和所述基函数的大小确定所述估计变换系数的数量。
[0191]
25.根据权利要求19至24中任一个所述的终端,其中,在执行所述估计变换系数与所述频率分量相关联的基函数之间的点乘运算,以生成所述补偿图像时,所述至少一个处理器被配置为执行所述指令集以使得所述设备进一步执行:
[0192]
执行所述估计变换系数的第一估计变换系数与所述基函数之间的点乘运算,以生成所述补偿图像的第一部分;以及
[0193]
执行所述估计变换系数的第二估计变换系数与所述基函数之间的点乘运算,以生成所述补偿图像的第二部分。
[0194]
26.根据权利要求19至25中任一个所述的终端,其中,所述基函数用于由所述编码器压缩所述图像以生成所述压缩图像。
[0195]
27.一种图像压缩方法,包括:
[0196]
估计图像的第一变换系数的分布;
[0197]
基于估计的所述图像的第一变换系数的分布确定第一量化参数;以及
[0198]
根据所述第一量化参数量化所述第一变换系数。
[0199]
28.根据权利要求27所述的方法,其中,基于估计的所述第一变换系数的分布确定所述第一量化参数包括:
[0200]
确定所述分布的标准偏差值;
[0201]
将所述标准偏差值与对应于所述第一变换系数的默认量化参数进行比较;以及
[0202]
响应于所述标准偏差值大于所述默认量化参数,确定所述标准偏差值为所述第一量化参数。
[0203]
29.根据权利要求27或28所述的方法,其中,所述第一变换系数是与对应于所述频率分量的所述基函数相关联的系数。
[0204]
30.一种用于图像压缩的设备,包括:
[0205]
存储器,用于存储指令集;以及
[0206]
至少一个处理器,被配置为执行所述指令集以使得所述设备执行:
[0207]
估计图像的第一变换系数的分布;
[0208]
基于估计的所述图像的第一变换系数的分布确定第一量化参数;以及
[0209]
根据所述第一量化参数量化所述第一变换系数。
[0210]
31.根据权利要求30所述的设备,其中,在基于估计的所述第一变换系数的分布确定所述第一量化参数时,所述至少一个处理器被配置为执行所述指令集以使得所述设备进一步执行:
[0211]
确定所述分布的标准偏差值;
[0212]
将所述标准偏差值与对应于所述第一变换系数的默认量化参数进行比较;以及
[0213]
响应于所述标准偏差值大于所述默认量化参数,确定所述标准偏差值为所述第一量化参数。
[0214]
32.根据权利要求30或31所述的设备,其中,所述第一变换系数是与对应于所述频率分量的所述基函数相关联的系数。
[0215]
33.一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质存储可以由计算装置的至少一个处理器执行的指令集,以使得所述计算装置执行图像压缩方法,所述方法包括:
[0216]
估计图像的第一变换系数的分布;
[0217]
基于估计的所述图像的第一变换系数的分布确定第一量化参数;以及
[0218]
根据所述第一量化参数量化所述第一变换系数。
[0219]
34.根据权利要求33所述的计算机可读介质,其中,在基于估计的所述第一变换系数的分布确定所述第一量化参数时,所述计算装置的所述至少一个处理器执行所述指令集
以使得所述计算装置进一步执行:
[0220]
确定所述分布的标准偏差值;
[0221]
将所述标准偏差值与对应于所述第一变换系数的默认量化参数进行比较;以及
[0222]
响应于所述标准偏差值大于所述默认量化参数,确定所述标准偏差值为所述第一量化参数。
[0223]
35.根据权利要求33或34所述的计算机可读介质,其中,所述第一变换系数是与对应于所述频率分量的所述基函数相关联的系数。
[0224]
本公开的实施例包括数据库系统、方法和有形的非瞬时性计算机可读介质。方法可以例如由至少一个处理器执行,所述处理器从有形的非瞬时性计算机可读存储介质(例如具有图2a的主机单元220和主机存储器221的主机系统)接收指令。类似地,本公开的系统可以包括至少一个处理器和存储器,并且存储器可以是有形的非瞬时性计算机可读存储介质。如本公开所使用的,有形的非瞬时性计算机可读存储介质是指可在其上存储至少一个处理器可读的信息或数据的任何类型的物理存储器。作为一种示例,非瞬时性计算机可读存储介质包括随机存取存储器(ram)、只读存储器(rom)、易失性存储器、非易失性存储器、硬盘驱动器、cd-rom、dvd、闪存驱动器、磁盘、寄存器、缓存和任何其他已知的物理存储介质。诸如“存储器”和“计算机可读存储介质”等单个术语可另外指多个结构,例如多个存储器或计算机可读存储介质。如本公开所述,“存储器”可包括任何类型的计算机可读存储介质,除非另有规定。计算机可读存储介质可存储用于由至少一个处理器执行的指令,所述指令包括用于使处理器执行本公开实施例的步骤或阶段的指令。另外,一个或多个计算机可读存储介质可用于实现计算机实现的方法。术语“非瞬时性计算机可读存储介质”应理解为包括有形条目,且不包括载波和瞬时信号。
[0225]
如本文所用,除非另有特别说明,术语“或”包括所有可能的组合,除非在不可行的情况下。例如,如果说明数据库可以包括a或b,则除非另有具体说明或不可行,否则数据库可以包括a或b,或a和b。作为第二示例,如果说明数据库可以包括a、b或c,则除非另有具体说明或不可行,否则数据库可以包括a,或b,或c,或a和b,或a和c,或b和c,或a和b和c。
[0226]
在前述说明书中,已经参考许多具体细节描述了实施例,这些具体细节可以随实施方式而变化。可以对所描述的实施例进行某些适配和修改。通过考虑本公开的说明和实践,其他实施例对本领域技术人员来说是显而易见的。本说明书和实施例仅被认为是示例性的,本发明的真正范围和精神由下面的权利要求书指示。图中所示的步骤序列仅用于说明目的,而不限于任何特定的步骤序列。因此,本领域技术人员可以理解,在实现相同方法时,可以以不同的顺序执行这些步骤。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献