CN116414456B - 存算芯片内的加权融合变换部件、存算电路及协同计算方法 - Google Patents
存算芯片内的加权融合变换部件、存算电路及协同计算方法 Download PDFInfo
- Publication number
- CN116414456B CN116414456B CN202310104821.9A CN202310104821A CN116414456B CN 116414456 B CN116414456 B CN 116414456B CN 202310104821 A CN202310104821 A CN 202310104821A CN 116414456 B CN116414456 B CN 116414456B
- Authority
- CN
- China
- Prior art keywords
- result
- frame image
- noise level
- memory
- level component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000004927 fusion Effects 0.000 title claims abstract description 141
- 238000004364 calculation method Methods 0.000 title claims abstract description 137
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 30
- 230000006870 function Effects 0.000 claims abstract description 54
- 230000004913 activation Effects 0.000 claims abstract description 38
- 238000011176 pooling Methods 0.000 claims description 120
- 238000003860 storage Methods 0.000 claims description 58
- 230000008707 rearrangement Effects 0.000 claims description 56
- 230000009466 transformation Effects 0.000 claims description 53
- 238000012935 Averaging Methods 0.000 claims description 25
- 238000000034 method Methods 0.000 claims description 25
- 238000013507 mapping Methods 0.000 claims description 24
- 230000008521 reorganization Effects 0.000 claims description 21
- 238000007781 pre-processing Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 18
- 230000006798 recombination Effects 0.000 claims description 5
- 238000005215 recombination Methods 0.000 claims description 5
- 238000000844 transformation Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 20
- 238000013528 artificial neural network Methods 0.000 abstract description 7
- 238000013473 artificial intelligence Methods 0.000 abstract description 4
- 230000008901 benefit Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 12
- 230000001131 transforming effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 239000011449 brick Substances 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Image Processing (AREA)
Abstract
本申请公开了一种存算芯片内的加权融合变换部件、存算电路及协同计算方法,涉及人工智能领域。该存算芯片内的加权融合变换部件以及存算电路,利用加法器、乘法器、激活函数查表模块、移位寄存器、查表寄存器等部件对加权融合变换硬件化,与存算芯片高并行度计算优势深度结合,进行硬件级的协同化设计,通过存算芯片内的硬件电路完成高并行度的像素级加权融合变换,紧密连接神经网络的融合系数计算模块与融合后的处理模块,提升存算芯片的运算效率,避免了CPU参与,减少了数据搬运,降低了芯片功耗。
Description
技术领域
本申请涉及人工智能领域,具体涉及存算芯片内的加权融合变换部件、存算电路及协同计算方法。
背景技术
近年来,为了解决基于冯诺依曼架构的传统数字计算平台中的“存储墙”导致的性能瓶颈,基于相变存储器(PCM)、电阻随机存取存储器(RRAM)和闪存(Nor Flash)等多种类型的存储单元的存内计算(CIM)芯片得到人们的广泛关注,其基本思想是直接利用模拟存储能力和基尔霍夫电路定律,使用存储器进行逻辑计算。存算一体技术可从架构上解决由于存储与计算部件在物理空间上分离造成的“存储墙”性能瓶颈。
在视频流数据的处理中,当前以通用GPU(Graphics Processing Unit)为主,功耗较高,将存算芯片技术用于视频流处理可有效降低芯片功耗。现有采用存算芯片的视频流处理技术中,针对一行一行形式的视频流数据,每像素都需要将存算芯片输出的融合系数、前一帧的输入图像、当前帧的输入图像搬运到CPU的缓存中,经CPU计算后,再搬运回存算芯片中进行后续神经网络模块的计算。整个过程需要CPU的参与,这会导致存内计算芯片无需数据搬运的优势无法发挥出来,导致计算效率受限于数据搬运、CPU处理速度,导致功耗大幅提升。
发明内容
为了解决以上现有技术中存在问题的至少其一,本申请提供一种存算芯片内的加权融合变换部件、存算电路及协同计算方法。
根据本申请实施例的第一方面,本申请提供一种存算芯片内的加权融合变换部件,包括:
第一加法器,与存算阵列和查表寄存器连接,用于根据所述存算阵列的存算输出值以及所述查表寄存器的地址值得到索引地址,所述存算输出值为存算阵列实现像素级卷积计算获得的定点数据;
激活函数查表模块,与所述第一加法器连接,用于根据所述索引地址以及预设的查表映射表确定对应的权重值,所述权重值为预设的所述存算输出值对应的映射定点数据;
第一乘法器,与所述激活函数查表模块连接,用于根据定点化的第一图像数据以及所述权重值按位取反后的值得到第一乘积;
第二乘法器,与所述激活函数查表模块连接,用于根据定点化的第二图像数据以及所述权重值得到第二乘积;
第二加法器,与所述第一乘法器和所述第二乘法器连接,用于计算所述第一乘积与所述第二乘积的和值;
移位寄存器,与所述第二加法器连接,用于对所述和值进行移位操作,得到所述第一图像数据与所述第二图像数据对应的加权融合结果。
根据本申请实施例的第二方面,本申请提供一种存算芯片内的平方加权融合变换部件,包括:
第一加法器,与存算阵列和查表寄存器连接,用于根据所述存算阵列的存算输出值以及所述查表寄存器的地址值得到索引地址,所述存算输出值为存算阵列实现像素级卷积计算获得的定点数据;
激活函数查表模块,与所述第一加法器连接,用于根据所述索引地址以及预设的查表映射表确定对应的权重值,所述权重值为预设的所述存算输出值对应的映射定点数据;
第一乘法器,与所述激活函数查表模块连接,用于根据定点化的第一图像数据以及所述权重值按位取反后的值得到第一乘积;
第二乘法器,与所述激活函数查表模块连接,用于根据定点化的第二图像数据以及所述权重值得到第二乘积;
第三乘法器,与所述第一乘法器连接,用于根据所述第一乘积以及所述权重值按位取反后的值得到第三乘积;
第四乘法器,与所述第二乘法器连接,用于根据所述第二乘积以及所述权重值得到第四乘积;
第二加法器,与所述第三乘法器和所述第四乘法器连接,用于计算所述第三乘积与所述第四乘积的和值;
移位寄存器,与所述第二加法器连接,用于对所述和值进行移位操作,得到所述第一图像数据与所述第二图像数据对应的平方加权融合结果。
根据本申请实施例的第三方面,本申请提供一种存算电路,包括:
高速缓存单元,用于缓存所述第一帧图像的一行或多行数据和所述第二帧图像的一行或多行数据;
预处理模块,与所述高速缓存单元连接,用于对所述第一帧图像和所述第二帧图像分别进行预处理,得到第一帧图像对应的第一像素重排结果、第一平均池化结果和第一噪声水平分量,第二帧图像对应的第二像素重排结果、第二平均池化结果和第二噪声水平分量,所述第一平均池化结果和所述第二平均池化结果差的绝对值,以及所述差的绝对值与所述第二噪声水平分量的拼接结果;
存算阵列,与所述预处理模块连接,用于将所述差的绝对值以及所述第二噪声水平分量的拼接结果与预设的卷积函数进行卷积运算,得到存算输出值;
本申请提供的存算芯片内的加权融合变换部件,与所述预处理模块以及所述存算阵列连接,用于根据所述第一像素重排结果、第二像素重排结果以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的加权融合结果;
本申请提供的存算芯片内的平方加权融合变换部件,与所述预处理模块以及所述存算阵列连接,用于根据所述第一噪声水平分量、第二噪声水平分量以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的噪声水平分量平方加权融合结果。
在一实施例中,所述预处理模块包括:
第一像素重组算子,其输入端与所述高速缓存单元连接,输出端与所述存算芯片内的加权融合变换部件连接,用于对高速缓存单元中的第一帧图像进行像素重排,得到所述第一像素重排结果;
第一平均池化算子,其输入端与所述高速缓存单元连接,用于对高速缓存单元中的第一帧图像进行平均池化运算,得到所述第一平均池化结果;
第一噪声水平分量算子,其输入端与所述第一平均池化算子连接,用于计算所述第一帧图像对应的第一噪声水平分量;
第二像素重组算子,其输入端与所述高速缓存单元连接,输出端与所述存算芯片内的加权融合变换部件连接,用于对高速缓存单元中的第二帧图像进行像素重排,得到所述第二像素重排结果;
第二平均池化算子,其输入端与所述高速缓存单元连接,用于对高速缓存单元中的第二帧图像进行平均池化运算,得到所述第二平均池化结果;
第二噪声水平分量算子,其输入端与所述第二平均池化算子连接,用于计算所述第二帧图像对应的第二噪声水平分量;
求绝对值算子,与所述第一平均池化算子和所述第二平均池化算子分别连接,用于计算所述第一平均池化结果和所述第二平均池化结果差的绝对值;
拼接算子,与所述第二噪声水平分量算子和所述求绝对值算子分别连接,用于计算所述第一平均池化结果和所述第二平均池化结果差的绝对值与所述第二噪声水平分量的拼接结果。
根据本申请实施例的第四方面,本申请提供一种存算芯片内的加权融合变换协同计算方法,应用于本申请提供的存算电路中,所述方法包括:
对第一帧图像分别进行像素重组和平均池化运算,得到第一像素重排结果和第一平均池化结果;
对第二帧图像分别进行像素重组和平均池化运算,得到第二像素重排结果和第二平均池化结果;
对所述第一平均池化结果和所述第二平均池化结果分别进行噪声水平分量计算,得到第一噪声水平分量和第二噪声水平分量;
根据所述第一平均池化结果、所述第二平均池化结果、所述第二噪声水平分量以及预设的卷积函数得到存算输出值;
根据所述第一像素重排结果、所述第二像素重排结果以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的加权融合结果;
根据所述第一噪声水平分量、第二噪声水平分量以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的噪声水平分量平方加权融合结果。
在一实施例中,所述存算芯片内的加权融合变换协同计算方法还包括:
将所述第一帧图像的一行或多行数据及所述第二帧图像的一行或多行数据分别一次写入高速缓存单元中;所述第一帧图像和所述第二帧图像为低速缓存数据。
在一实施例中,所述根据所述第一平均池化结果、所述第二平均池化结果、所述第二噪声水平分量以及预设的卷积函数得到存算输出值,包括:
计算所述第一平均池化结果和所述第二平均池化结果差的绝对值;
将所述差的绝对值与所述第二噪声水平分量进行拼接,得到拼接结果;
将所述拼接结果输入存算阵列进行N并行度流水计算,得到所述存算输出值,N为大于或等于1的整数。
在一实施例中,所述将所述拼接结果输入存算阵列进行N并行度流水计算,得到所述存算输出值,包括:
根据并行度以及并行的各卷积核计算所需的复用数据对所述拼接结果进行复用重排;
根据复用重排后的数据以及存算阵列中预存的卷积权重数据得到存算输出值;其中,并行的各卷积核计算对应的卷积权重数据呈阶梯状预存于存算阵列中。
根据本申请实施例的第五方面,本申请提供一种存算芯片内的加权融合变换协同计算装置,该装置包括:
像素重组模块,用于对第一帧图像进行像素重组得到第一像素重排结果,以及对第二帧图像进行像素重组得到第二像素重排结果;
平均池化模块,用于对第一帧图像进行平均池化运算得到第一平均池化结果,以及对第二帧图像进行平均池化运算得到第二平均池化结果;
噪声水平分量计算模块,用于对所述第一平均池化结果进行噪声水平分量计算得到第一噪声水平分量,以及对所述第二平均池化结果进行噪声水平分量计算得到第二噪声水平分量;
存算模块,用于根据所述第一平均池化结果、所述第二平均池化结果、所述第二噪声水平分量以及预设的卷积函数得到存算输出值;
加权融合模块,用于根据所述第一像素重排结果、所述第二像素重排结果以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的加权融合结果;
平方加权融合模块,用于根据所述第一噪声水平分量、第二噪声水平分量以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的噪声水平分量平方加权融合结果。
根据本申请实施例的第六方面,本申请提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请提供的任一存算芯片内的加权融合变换协同计算方法。
根据本申请实施例的第七方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本申请提供的任一存算芯片内的加权融合变换协同计算方法。
本申请的存算芯片内的加权融合变换部件、存算电路及协同计算方法,利用激活函数查表模块、加法器、乘法器等硬件电路模块实现加权融合变换硬件化及平方加权融合变化硬件化,与存算芯片协同进行流水计算,能明显提升存算芯片针对含加权融合变换的神经网络模型的运算效率,避免了CPU参与,减少了数据搬运,降低了芯片功耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本申请提供的存算芯片内的加权融合变换部件的硬件结构示意图。
图2为本申请提供的Sigmoid激活函数的输出曲线。
图3为本申请提供的存算芯片内的平方加权融合变换部件的硬件结构示意图。
图4为本申请提供的存算电路的硬件结构示意图。
图5为本申请提供的预处理模块的硬件结构示意图。
图6为本申请提供的存算芯片内的加权融合变换协同计算方法的示意图。
图7为本申请提供的存算芯片内的加权融合变换协同计算装置的示意图。
图8为本申请提供的一种计算机设备的示意图。
图9为本申请提供的硬件pipeline进行数据缓存实时计算的示意图。
图10为本申请提供的完成2行图像数据的神经网络结果后的FIFO示例。
图11为本申请提供的存算卷积核滑窗计算的示意图。
图12为本申请提供的存算并行计算卷积方案的示意图。
图13为本申请提供的硬件pipeline进行数据缓存实时计算的另一种示意图。
图14为本申请提供的存算芯片计算级联卷积的缓存示意图。
图15为本申请提供的加权融合算子复用缓存数据的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
需要说明的是,本申请可用于人工智能领域,也可用于除人工智能领域之外的任意领域,此处对本申请的应用领域不做限定。
本申请中技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
根据本申请实施例的第一方面,本申请提供一种存算芯片内的加权融合变换部件,如图1所示,该部件包括第一加法器11、第二加法器12、第一乘法器13、第二乘法器14、激活函数查表模块15、按位取反模块16以及移位寄存器17。
第一加法器11与存算阵列3和查表寄存器4连接,用于根据所述存算阵列3的存算输出值x以及所述查表寄存器4的地址值addr得到索引地址,所述存算输出值x为基于存算阵列3根据第一图像数据feature_t0和第二图像数据feature_t1通过像素级卷积计算获得的定点数据。存算阵列3中预先存储有神经网络参数,本申请仅涉及神经网络参数的应用,对于神经网络的训练过程不作说明。
假设定点化的第一帧图像和第二帧图像为8bit数据,则8bit定点化的存算输出值x的取值为-128~127;查表寄存器的地址值addr例如为0x803FF000,将addr与存算输出值x相加,即可得到索引地址addr x。本示例中,每地址的存储值为8bit的byte;更一般的,通过addr+2x,可进行16bit的双byte地址索引,将查表映射的值扩展到16bit。以下均以8bit的sigmoid查表映射值为例。
激活函数查表模块15与所述第一加法器11连接,用于根据所述索引地址addr x以及预设的查表映射表确定对应的权重值gamma,所述权重值gamma为预设的所述存算输出值x对应的映射定点数据。
其中,查表映射表中存储有索引地址addr x与权重值gamma的映射关系,本申请例如采用Sigmoid激活函数实现映射,Sigmoid激活函数查表映射表的生成过程如下:
一般的Sigmoid激活函数为浮点形式,其计算公式为:
σ(x)=1/(1+e-x)
Sigmoid激活函数的输出曲线如图2所示,式中Sigmoid激活函数的输入数据x默认的输入范围为负无穷到正无穷,但当Sigmoid激活函数的输入数据x大于5或小于-5时,sigmoid激活函数的输出已分别趋近于1或0。本申请将Sigmoid激活函数的输入数据x限定在一定范围内,例如[-8,8],假设定点化的第一图像数据和第二图像数据均为8bit数据,则8bit定点化的存算输出值x的取值为-128~127,然后对上述取值除以16,输入到sigmoid激活函数后所得结果再乘以255,并进行四舍五入,可得定点化sigmoid输出的0、1、2、...、254、255。此时,将定点化sigmoid输出的0、1、2、...、254、255,与8bit定点化的存算输出值x的取值-128~127一一映射,即可得Sigmoid激活函数查表映射表,如下表1所示:
表1:sigmoid激活函数查表映射表
索引地址addr x | 权重值gamma |
addr-128 | 0 |
addr-127 | 0 |
… | … |
addr-2 | 120 |
addr-1 | 124 |
addr-0 | 128 |
addr+1 | 131 |
addr+2 | 135 |
… | … |
addr+127 | 255 |
addr+128 | 255 |
基于索引地址addr x在预设的Sigmoid激活函数查表映射表中进行索引,即可得到该索引地址addr x对应的权重值gamma,也即存算输出值x对应的映射定点数据。
按位取反模块16与所述激活函数查表模块15连接,用于对所述权重值gamma按位取反,所得值为255-gamma;
第一乘法器13与所述按位取反模块16连接,用于根据定点化的所述第一图像数据feature_t0以及所述权重值按位取反后的值255-gamma得到第一乘积:feature_t0×(255-gamma);
第二乘法器14与所述激活函数查表模块15连接,用于根据定点化的所述第二图像数据feature_t1以及所述权重值gamma得到第二乘积:feature_t1×gamma;
第二加法器12与所述第一乘法器13和所述第二乘法器14连接,用于计算所述第一乘积与所述第二乘积的和值:feature_t0×(255-gamma)+feature_t1×gamma;
移位寄存器17与所述第二加法器12连接,用于对所述和值进行移位操作,得到所述第一图像数据feature_t0与所述第二图像数据feature_t1对应的加权融合结果fuse_out,表示为:
fuse_out=[(255-gamma)×feature_t0+gamma×feature_t1]>>8
其中,gamma的数值范围为0~255;255-gamma可通过对gamma按位取反计算获得;“>>8”为右移8bit,即取高比特值。feature_t0为定点化的第一图像数据,feature_t1为定点化的第二图像数据。
上述以第一图像数据和第二图像数据均为8bit数据格式为例进行说明,第一乘法器、第二乘法器、第一加法器和第二加法器满足可行位宽要求即可,并不限定相关位宽,例如第一乘法器和第二乘法器可采用16bit乘法器,第一加法器和第二加法器可采用24bit加法器,以满足加权融合变换的计算需求。实际应用中,第一图像数据和第二图像数据还可以为10bit、12bit、14bit等数据格式。第一图像数据feature_t0和第二图像数据feature_t1的每像素C(C为大于1的正整数)个通道值,是按连续地址进行存储的。为了兼容多种输入数据bit数格式,例如8bit、10bit、12bit、14bit等,8bit的图像数据例如可按8bit的byte连续地址存储,10bit、12bit、14bit的图像数据均以16bit的双byte连续地址存储,本申请并不局限于该存储方式。
每个加权融合变换部件一次仅能对输入图像一个通道的数据进行运算,且上述实施例是针对其中一个通道的数据为例进行说明的。因此,当使用加权融合变换部件对具有C0(C0为大于或等于1的正整数)个通道的第一输入图像C0_feature_t0和具有C0个通道的第二输入图像C0_feature_t1进行处理时,针对输入图像每个像素C0个通道值,依据连续地址存储进行指针寄存器按先进先出(FIFO)方式取值,送入对应的乘法器,得到每个通道的加权融合值。具体为,将第一输入图像C0_feature_t0第一个通道的数据C0_1_t0和第二输入图像C0_feature_t1第一个通道的数据C0_1_t1进行处理,得到输出图像数据C0_fuse_out第一个通道的数据C0_1_fuse;同理将第一输入图像C0_feature_t0第二个通道的数据C0_2_t0和第二输入图像C0_feature_t1第二个通道的数据C0_2_t1进行处理,得到输出图像数据C0_fuse_out第二个通道的数据C0_2_fuse……直至得到输出图像数据C0_fuse_out共C0个通道的数据C0_1_fuse、C0_2_fuse、…、C0_C0_fuse。此时,可设置多个加权融合变换部件硬件电路,对第一输入图像和第二输入图像多个像素的数据并行运算,以此提高运算并行度。
本实施例提供了定点化的加权融合变换部件的硬件结构及其计算流程,对加权融合变换进行定点化优化,可明显提升芯片的计算效率。且存算阵列可直接通过该部件实现加权融合变换,无需CPU的参与,降低了存算芯片的功耗。
根据本申请实施例的第二方面,本申请提供一种存算芯片内的平方加权融合变换部件,如图3所示,该部件包括第一加法器21、第二加法器22、第一乘法器23、第二乘法器24、激活函数查表模块25、按位取反模块26、移位寄存器27、第三乘法器28以及第四乘法器29。
第一加法器21与存算阵列3和查表寄存器4连接,用于根据所述存算阵列3的存算输出值x以及所述查表寄存器4的地址值addr得到索引地址addr x,所述存算输出值x为根据第一图像数据feature_t0和第二图像数据feature_t1通过像素级卷积计算获得的定点数据;
激活函数查表模块25与所述第一加法器21连接,用于根据所述索引地址addr x以及预设的查表映射表(参见上表1即可)确定对应的权重值gamma,所述权重值gamma为所述存算输出值对应的定点数据;
按位取反模块26与所述激活函数查表模块25连接,用于对所述权重值gamma按位取反,所得值为255-gamma;
第一乘法器23与所述按位取反模块26连接,用于根据定点化的所述第一图像数据sigma_t0以及所述权重值按位取反后的值255-gamma得到第一乘积:sigma_t0×(255-gamma);
第二乘法器24与所述激活函数查表模块25连接,用于根据定点化的所述第二图像数据sigma_t1以及所述权重值gamma得到第二乘积:sigma_t1×gamma;
第三乘法器28与所述第一乘法器23连接,用于根据所述第一乘积sigma_t0×(255-gamma)以及所述权重值按位取反后的值255-gamma得到第三乘积:sigma_t0×(255-gamma)×(255-gamma);
第四乘法器29与所述第二乘法器24连接,用于根据所述第二乘积sigma_t1×gamma以及所述权重值gamma得到第四乘积:sigma_t1×gamma×gamma;
第二加法器22与所述第三乘法器28和所述第四乘法器29连接,用于计算所述第三乘积与所述第四乘积的和值:sigma_t0×(255-gamma)×(255-gamma)+sigma_t1×gamma×gamma;
移位寄存器27与所述第二加法器22连接,用于对所述和值进行移位操作,得到所述第一图像数据sigma_t0与所述第二图像数据sigma_t1对应的平方加权融合结果Sigma_fuse_out:
Sigma_fuse_out=[(255-gamma)×(255-gamma)×sigma_t0+gamma×gamma×
sigma_t1]>>16
其中gamma的数值范围为0~255;255-gamma可通过对gamma按位取反计算获得;“>>16”为右移16bit,即取高比特值。sigma_t0定点化的第一图像数据、sigma_t1为定点化的第二图像数据,可为8bit、10bit、12bit、14bit等数据格式。
上述以第一图像数据和第二图像数据均为8bit数据格式为例进行说明,第一乘法器、第二乘法器、第三乘法器、第四乘法器、第一加法器和第二加法器满足可行位宽要求即可,并不限定相关位宽,例如第一乘法器和第二乘法器可采用16bit乘法器,第三乘法器和第四乘法器可采用24bit乘法器,第一加法器可采用24bit加法器,第二加法器可采用32bit加法器,以满足平方加权融合变换的计算需求。实际应用中,第一图像数据和第二图像数据还可以为10bit、12bit、14bit等数据格式。第一图像数据feature_t0和第二图像数据feature_t1的每像素C(C为大于1的正整数)个通道值,是按连续地址进行存储的。为了兼容多种输入数据bit数格式,例如8bit、10bit、12bit、14bit等,8bit的图像数据例如可按8bit的byte连续地址存储,10bit、12bit、14bit的图像数据均以16bit的双byte连续地址存储,本申请并不局限于该存储方式。
同样地,每个平方加权融合变换部件一次仅能对输入图像一个通道的数据进行运算,且上述实施例是针对其中一个通道的数据为例进行说明的。因此,类似地,当使用平方加权融合变换部件对具有C1(C1为大于或等于1的正整数)个通道的第一输入图像C1_sigma_t0和具有C1个通道的第二输入图像C1_sigma_t1进行处理时,针对输入图像每个像素C0个通道值,依据连续地址存储进行指针寄存器按先进先出(FIFO)方式取值,送入对应的乘法器,得到每个通道的加权融合值。具体为,将第一输入图像C1_sigma_t0第一个通道的数据C1_1_t0和第二输入图像C1_sigma_t1第一个通道的数据C1_1_t1进行处理,得到输出图像数据C1_Sigma_fuse_out第一个通道的数据C1_1_fuse;同理将第一输入图像C1_sigma_t0第二个通道的数据C1_2_t0和第二输入图像C1_sigma_t1第二个通道的数据C1_2_t1进行处理,得到输出图像数据C1_Sigma_fuse_out第二个通道的数据C1_2_fuse……直至得到输出图像数据C1_Sigma_fuse_out共C1个通道的数据C1_1_fuse、C1_2_fuse、…、C1_C1_fuse。此时,可设置多个加权融合变换部件硬件电路,对第一输入图像和第二输入图像多个像素的数据并行运算,以此提高运算并行度。
本实施例提供的定点化的平方加权融合变换部件与前述实施例提供的定点化的加权融合变换部件的硬件结构和计算流程类似,实施时相互参见即可,重复之处不再赘述。
本实施例提供了定点化的平方加权融合变换部件的硬件结构及其计算流程,实施时可参照定点化的加权融合变换部件的硬件结构及计算流程,对平方加权融合变换进行定点化优化,可明显提升芯片的计算效率。且存算阵列可直接通过该部件实现平方加权融合变换,无需CPU的参与,降低了存算芯片的功耗。
根据本申请实施例的第三方面,本申请提供一种存算电路,如图4所示,该存算电路包括:
高速缓存单元31,用于缓存所述第一帧图像frame_t0的一行或多行数据和第二帧图像frame_t1的一行或多行数据;
预处理模块32,与高速缓存单元31连接,用于对第一帧图像frame_t0和第二帧图像frame_t1分别进行预处理,得到第一帧图像frame_t0对应的第一像素重排结果feature_t0、第一平均池化结果ft0_LL和第一噪声水平分量sigma_t0,第二帧图像frame_t1对应的第二像素重排结果feature_t1、第二平均池化结果ft1_LL和第二噪声水平分量sigma_t1,所述第一平均池化结果ft0_LL和所述第二平均池化结果ft1_LL差的绝对值abs(ft1_LL-ft0_LL),所述差的绝对值abs(ft1_LL-ft0_LL)与所述第二噪声水平分量sigma_t1的拼接结果。
存算阵列33,与所述预处理模块32连接,用于将所述第一平均池化结果ft0_LL和所述第二平均池化结果ft1_LL差的绝对值abs(ft1_LL-ft0_LL)以及所述第二噪声水平分量sigma_t1的拼接结果与预设的卷积函数进行卷积运算,得到存算输出值x。
至少一个图1所示的存算芯片内的加权融合变换部件34(图中仅示出一个),与所述预处理模块32以及所述存算阵列33分别连接,用于根据所述第一像素重排结果feature_t0、第二像素重排结果feature_t1以及所述存算输出值x对应的权重值gamma得到所述第一帧图像frame_t0与所述第二帧图像frame_t1对应的加权融合结果fuse_out,运算原理为:fuse_out=[(255-gamma)*feature_t0+gamma*feature_t1]>>8。
至少一个图3所示的存算芯片内的平方加权融合变换部件35(图中仅示出一个),与所述预处理模块32以及所述存算阵列33分别连接,用于根据所述第一噪声水平分量sigma_t0、第二噪声水平分量sigma_t1以及所述存算输出值x对应的权重值gamma得到所述第一帧图像与所述第二帧图像对应的噪声水平分量平方加权融合结果sigma_fuse_out,运算原理为:sigma_fuse_out=[(255-gamma)*(255-gamma)*sigma_t0+gamma*gamma*sigma_t1]>>16。
存算输出值x对应的权重值gamma可基于加权融合变换部件34中的第一加法器11和激活函数查表模块15得到,也可基于平方加权融合变换部件35中的第一加法器21和激活函数查表模块25得到,因此,为避免重复计算,当加权融合变换部件和平方加权融合变换部件同时存在于存算电路中时,仅保留其中一个由一个加法器和一个激活函数查表模块组成的映射模块(参见图4)实现存算输出值x与权重值gamma的映射,并使加权融合变换部件34和平方加权融合变换部件35共同一个映射电路和同一个存算阵列33即可。
在一实施例中,如图5所示,所述预处理模块32包括:
第一像素重组算子321,其输入端与所述高速缓存单元31连接,输出端与所述存算芯片内的加权融合变换部件34连接,用于对高速缓存单元31中的第一帧图像frame_t0进行像素重排,得到所述第一像素重排结果feature_t0。
第一平均池化算子322,其输入端与所述高速缓存单元31连接,用于对高速缓存单元31中的第一帧图像frame_t0进行平均池化运算,得到所述第一平均池化结果ft0_LL。
第一噪声水平分量算子323,其输入端与所述第一平均池化算子322连接,用于计算所述第一帧图像frame_t0对应的第一噪声水平分量sigma_t0。
第二像素重组算子324,其输入端与所述高速缓存单元31连接,输出端与所述存算芯片内的加权融合变换部件34连接,用于对高速缓存单元31中的第二帧图像frame_t1进行像素重排,得到所述第二像素重排结果feature_t1。
第二平均池化算子325,其输入端与所述高速缓存单元31连接,用于对高速缓存单元31中的第二帧图像frame_t1进行平均池化运算,得到所述第二平均池化结果ft1_LL。
第二噪声水平分量算子326,其输入端与所述第二平均池化算子325连接,用于计算所述第二帧图像frame_t1对应的第二噪声水平分量sigma_t1;
求绝对值算子327,与所述第一平均池化算子322和所述第二平均池化算子325分别连接,用于计算所述第一平均池化结果ft0_LL和所述第二平均池化结果ft1_LL差的绝对值abs(ft1_LL-ft0_LL)。
拼接算子328,与所述第二噪声水平分量算子326和所述求绝对值算子327分别连接,用于计算所述第一平均池化结果ft0_LL和所述第二平均池化结果ft1_LL差的绝对值abs(ft1_LL-ft0_LL)与所述第二噪声水平分量sigma_t1的拼接结果。
上述第一像素重组算子321和第二像素重组算子324为2倍space_to_depth像素重组算子S2Dx2,第一平均池化算子322和第二平均池化算子325为下采样2倍的平均池化算子avgpool_x1/2,第一噪声水平分量算子323计算第一噪声水平分量sigma_t0的过程为:
sigma_t0=ft0_LL×coeff_a+coeff_b
第二噪声水平分量算子326计算第二噪声水平分量sigma_t1的过程为:
sigma_t1=ft1_LL×coeff_a+coeff_b
其中,coeff_a为散粒噪声参数,coeff_b为读取噪声参数。
本申请通过将加权融合变换硬件化,并与存算芯片组成存算电路,利用该存算电路进行协同化流水计算,能明显提升存算芯片针对含加权融合变换的神经网络模型的运算效率,避免了CPU参与,减少了数据搬运,降低了芯片功耗。
根据本申请实施例的第四方面,本申请提供一种存算芯片内的加权融合变换协同计算方法,应用于本申请提供的存算电路中,如图6所示,所述方法包括:
步骤S102,对第一帧图像分别进行像素重组和平均池化运算,得到第一像素重排结果和第一平均池化结果。
具体地,基于图5所示的第一像素重组算子321和第一平均池化算子322对第一帧图像frame_t0进行运算,得到第一像素重排结果feature_t0和第一平均池化结果ft0_LL。
步骤S104,对第二帧图像分别进行像素重组和平均池化运算,得到第二像素重排结果和第二平均池化结果。
具体地,基于图5所示的第二像素重组算子324和第二平均池化算子325对第二帧图像frame_t1进行运算,得到第二像素重排结果feature_t1和第二平均池化结果ft1_LL。
步骤S106,对所述第一平均池化结果和所述第二平均池化结果分别进行噪声水平分量计算,得到第一噪声水平分量和第二噪声水平分量。
具体地,基于图5所示的第一噪声水平分量算子323对第一平均池化结果ft0_LL进行噪声水平分量计算,得到第一噪声水平分量sigma_t0;基于图5所示的第二噪声水平分量算子326对第二平均池化结果ft1_LL进行噪声水平分量计算,得到第二噪声水平分量sigma_t1。
步骤S108,根据所述第一平均池化结果、所述第二平均池化结果、所述第二噪声水平分量以及预设的卷积函数得到存算输出值。
具体地,步骤S108可按以下步骤实现:
(1)计算所述第一平均池化结果ft0_LL和所述第二平均池化结果ft1_LL差的绝对值abs(ft1_LL-ft0_LL);
(2)将所述差的绝对值abs(ft1_LL-ft0_LL)与所述第二噪声水平分量sigma_t1进行拼接,得到拼接结果;
(3)将所述拼接结果输入存算阵列进行N并行度流水计算,得到所述存算输出值,N为大于或等于1的整数。
上述步骤(1)和步骤(2)的示意图可参见图13,根据avgpool_x1/2平均池化计算的计算缓存数据,计算噪声分量sigma_t0与sigma_t1,计算差的绝对值abs_LL=abs(ft1_LL-ft0_LL)。将噪声分量sigma_t1与差的绝对值abs_LL经过concatenate算子拼接后,送入存算阵列计算卷积。为了提高计算资源的利用效率,如图11所示,缓存部分计算结果,按FIFO先进先出的原则,针对噪声分量sigma_t0、sigma_t1、差的绝对值abs_LL缓存空间,释放A处的像素计算结果,写入B处的像素计算结果。
上述步骤(3)采用本申请提供的存算芯片阵列高并行度的计算方案,该方案有助于提高高速缓存的数据复用,充分利用数据总线的数据搬运效率,提高存算阵列的计算效率,具体将在后续实施例中进行说明。
步骤S110,根据所述第一像素重排结果、所述第二像素重排结果以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的加权融合结果。
具体地,首先通过查表得到所述存算输出值对应的权重值gamma;然后将第一像素重排结果feature_t0、第二像素重排结果feature_t1和权重值gamma输入图5所示的加权融合变换部件34中,得到第一帧图像frame_t0与所述第二帧图像frame_t1对应的加权融合结果fuse_out,运算原理为:
fuse_out=[(255-gamma)*feature_t0+gamma*feature_t1]>>8。
步骤S112,根据所述第一噪声水平分量、第二噪声水平分量以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的噪声水平分量平方加权融合结果。
具体地,将第一噪声水平分量sigma_t0、第二噪声水平分量sigma_t1和存算输出值对应的权重值gamma输入图5所示的平方加权融合变换部件35中,得到第一帧图像frame_t0与所述第二帧图像frame_t1对应的平方加权融合结果sigma_fuse_out,运算原理为:
sigma_fuse_out=[(255-gamma)*(255-gamma)*sigma_t0+gamma*gamma*sigma_t1]>>16
本申请提供的存算电路是将硬件化的加权融合变换部件、平方加权融合变换部件以及存算芯片组合而成的硬件链路,存算电路的视频应用场景包括视频插帧、视频降噪、视频宽动态、视频光流等,当存算电路应用于视频降噪场景中时,上述第一帧图像frame_t0为前一帧图像的缓存数据;第二帧图像frame_t1为当前帧图像的实时数据。
在一实施例中,在步骤S102之前,所述存算芯片内的加权融合变换协同计算方法还包括:
步骤S101,将所述第一帧图像的一行或多行数据及所述第二帧图像的一行或多行数据分别一次写入高速缓存单元中;所述第一帧图像和所述第二帧图像为低速缓存数据。
以视频降噪应用场景为例,以下是硬件视频流pipeline的处理流程,第一帧图像frame_t0为前一帧图像的缓存数据,第二帧图像frame_t1为当前帧图像的实时数据,缓存几行第二帧图像frame_t1的数据后就开始实时计算。为了减少低速缓存与高速缓存之间的数据搬运次数,提高数据总线的运行效率,需将n数据一次写入高速缓存中,n为正整数,而不是一个像素一个像素写入,因此需将一行或多行数据连续写入到芯片高速缓存中。
以图9为例,假设目前针对frame_t1的第2~7行缓存数据,将其输入到视频降噪的前处理模块中进行计算。将第一帧图像frame_t0的第2~7行对应的缓存数据与第二帧frame_t1的第2~7行的实时数据写入芯片的高速缓存上。图像数据在内存以连续地址存储,即第一行、第二行、第三行连续存储。
图9的示例中,根据索引地址提取6×6阴影区域像素,计算S2Dx2像素重排与avgpool_x1/2平均池化。其中S2Dx2像素重排结果为feature_t0、feature_t1,avgpool_x1/2平均池化结果为ft0_LL、ft1_LL。为了方便示意计算的S2Dx2像素重排与avgpool_x1/2平均池化像素数据,图9通过方框示出了像素重排结果和平均池化结果的对应位置关系。计算过程中只缓存S2Dx2像素重排与avgpool_x1/2平均池化的灰色部分数据,提升pipeline计算效率,减少硬件缓存需求,并且避免数据的重复计算。
为了减少计算量、数据搬运,每计算完2行图像数据的神经网络结果,按FIFO(先进先出)的原则,释放第2、3行的高速缓存数据空间,再从低速缓存中将第8、9行的图像数据搬运到高速缓存中,如图10所示。图9和图10的示例中,以一次缓存2行像素数据为例,但本领域技术人员可以理解,实际应用中,可以设定为一次缓存n行数据,n为正整数。
为了复用中间计算过程的图像数据,节省计算资源,提高计算资源的利用效率,在进行滑窗计算时,例如S2Dx2像素重排与avgpool_x1/2平均池化,在计算过程中,可按2×2的小图像块,逐像素计算S2Dx2像素重排与avgpool_x1/2平均池化的结果。按FIFO(先进先出)原则,写入像素重排与平均池化的计算结果至高速缓存中。在卷积滑窗计算过程中,释放缓存空间中后续不会再利用到的像素计算结果,在缓存空间最后写入新计算的像素结果,如图10所示。
在一实施例中,对上述步骤S108对应的步骤(3)“将所述拼接结果输入存算阵列进行N并行度流水计算,得到所述存算输出值”作详细的说明,以此介绍本申请提供的存算芯片阵列高并行度计算方案。存算阵列的并行度N为正整数,本申请将以3并行度的存算阵列为例进行说明。
首先,当存算阵列的并行度为3时,视频流计算过程中缓存数据FIFO释放写入的过程参见图11和图14。图11和图14的示例中,预处理算子,例如S2Dx2像素重排算子与avgpool_x1/2平均池化算子,会缓存约2行像素的中间计算结果;存算卷积计算的特征图,也会缓存约2行像素的中间计算结果。以图11为例,针对3并行度的存算阵列计算,完成当前层卷积的存算并行计算后,释放A处的数据缓存,写入B处的数据缓存,移动并行度的计算窗口,进行下一次的存算并行计算。
为了方便示例说明,本发明中的示例像素图相对真实图像阵列排布做了简化,针对缓存的输入数据示例与存算芯片阵列的表示也进行了简化,但不妨碍本领域的工程师及研究人员理解、学习和部署。其中,图11为了方便说明,相比其他示例图,在横向上进行了扩展,但尺寸相对真实图像数据都是简化后的。本领域技术人员可以理解,本申请提供的示例均为简化示例,但实际芯片部署不局限于本申请的示例情形。本申请的示例均以卷积核尺寸为3×3、卷积窗口移动步长stride=1为例,但本申请不以此为限。
“步骤(3),将所述拼接结果输入存算阵列进行N并行度流水计算,得到所述存算输出值”具体包括以下步骤S31和步骤S32:
S31,根据并行度以及并行的各卷积核计算所需的复用数据对所述拼接结果进行复用重排。
假设并行度为3,则相当于将并行度为1的卷积运算所需的数据进行了复用。
具体地,如图12中的“存算计算卷积的数据输入”所示,针对拼接结果,当不采用高并行度计算方案时,一次卷积核计算只能处理一个3×3卷积滑窗中的像素数据,此时,第一次卷积核计算所需的像素点为1、2、3、4、5、6、7、8、9;第二次卷积核计算所需的像素点为2、3、10、5、6、11、8、9、12;第三次卷积核计算所需的像素点为3、10、13、6、11、14、9、12、15。但若存算阵列为3并行度,则可同时实现上述第一次卷积核计算、第二次卷积核计算以及第三次卷积核计算。
而从上述卷积核计算所需的像素点可知,相邻2次卷积计算过程中,有6个像素点的数据是可复用的,也即第一次卷积核计算所需的像素点2、5、8、3、6、9,在第二次卷积核计算中也需要;第二次卷积核计算所需的3、6、9、10、11、12在第三次卷积核计算中也需要。因此,本步骤根据并行度3确定所需的像素点为1~15,并根据并行的各卷积核计算(即上述第一次卷积核计算、第二次卷积核计算以及第三次卷积核计算)所需的复用数据对拼接结果进行复用重排,如图12中的“输入数据复用重排”所示,将第1~15个像素数据重排为1、4、7、2、5、8、3、6、9、10、11、12、13、14、15的顺序,输入到存算阵列中。
S32,根据复用重排后的数据以及存算阵列中预存的卷积权重数据得到存算输出值。其中,并行的各卷积核计算对应的卷积权重数据呈阶梯状预存于存算阵列中。
例如,卷积权重数据如图12的“存算阵列并行度计算”中不同底纹的阴影区域所示,在存算芯片阵列中按阶梯状进行排列,且每个阴影区域的权重数据相同,其中“斜条纹”阴影区域中存储的是与像素点1、4、7、2、5、8、3、6、9对应的卷积权重数据,“砖形纹”阴影区域中存储的是与像素点2、5、8、3、6、9、10、11、12对应的卷积权重数据,“横条纹”阴影区域中存储的是与像素点3、6、9、10、11、12、13、14、15对应的卷积权重数据。如图12的“存算输出的对应像素位数据”所示,从卷积运算的原理可知,输出的运算结果为卷积对应像素位第5、6、11号的三通道结果,可直接写入卷积输出特征图的存储空间中。本申请通过数据复用,避免反复读取高速缓存中可被邻近卷积计算复用的数据,降低了数据搬运次数与功耗。
如图14所示,将噪声分量sigma_t1与差的绝对值abs_LL拼接后,送入存算阵列计算卷积,分别提供了存算阵列流水计算单次3个级联卷积的示例,和存算阵列三并行度流水计算3个级联卷积的示例。在存算阵列三并行度流水计算3个级联卷积的示例中,conv_layer_1中的结果是拼接结果中的像素点与第一层卷积权重数据进行卷积计算得到的结果,conv_layer_2中的结果是conv_layer_1中的结果与第二层卷积权重数据进行卷积计算得到的结果,conv_layer_3中的结果是conv_layer_2中的结果与第三层卷积权重数据进行卷积计算得到的结果,也即存算输出值。第一层卷积权重数据、第二层卷积权重数据和第三层卷积权重数据按照图12的“存算阵列并行度计算”中的形式存储。
存算阵列流水计算单次3个级联卷积的示例与存算阵列三并行度流水计算3个级联卷积的示例相比,不同之处在于,存算阵列流水计算单次3个级联卷积的示例中第一层卷积权重数据、第二层卷积权重数据和第三层卷积权重数据仅存储于图12的“存算阵列并行度计算”中的其中一个阴影区域,即仅存储于“斜条纹”阴影区域、“砖形纹”阴影区域或“横条纹”阴影区域中,无法实现并行卷积运算。
本申请利用硬件化的加权融合算子与平方加权融合算子完成计算,如图15所示,针对图14所示的三并行度存算计算,conv_layer_3存算卷积层可输出3个像素的加权融合系数gamma值,用于前一帧图像frame_t0与当前帧图像frame_t1的S2Dx2像素重排结果feature_t0、feature_t1进行加权融合为fuse_out,用于噪声分量结果sigma_t0与sigma_t1进行平方加权融合为sigma_fuse_out。加权融合输入所需的数据均在高速缓存中,用于硬件化的加权融合变换部件与平方加权融合变换部件,可大幅提升硬件运行效率,避免了与低速缓存进行总线交互和数据搬运的次数,降低了运算功耗。新计算的三像素fuse_out、sigma_fuse_out结果按FIFO写入各自的缓存地址中,根据计算流水用于后续步骤的计算步骤。
本申请通过对加权融合变换硬件化,和存算芯片的协同化流水计算,能明显提升存算芯片针对含加权融合变换的神经网络模型的运算效率,避免了CPU参与,减少了数据搬运,降低了芯片功耗。特别是应用本申请的加权融合变换部件和存算电路进行视频流数据的处理时,只需将待处理的视频流数据按行输入本申请的存算电路中,通过硬件化部件即可完成相关运算,此时,上述各实施例针对的第一帧图像和第二帧图像均为待处理的视频流数据,处理方式参照上述实施例即可。
基于同一发明构思,本申请实施例还提供了存算芯片内的加权融合变换协同计算装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于存算芯片内的加权融合变换协同计算装置解决问题的原理与存算芯片内的加权融合变换协同计算方法相似,因此存算芯片内的加权融合变换协同计算装置的实施可以参见存算芯片内的加权融合变换协同计算方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
根据本申请实施例的第五方面,本申请提供一种存算芯片内的加权融合变换协同计算装置,如图7所示,该装置包括:
像素重组模块201,用于对第一帧图像进行像素重组得到第一像素重排结果,以及对第二帧图像进行像素重组得到第二像素重排结果;
平均池化模块202,用于对第一帧图像进行平均池化运算得到第一平均池化结果,以及对第二帧图像进行平均池化运算得到第二平均池化结果;
噪声水平分量计算模块203,用于对所述第一平均池化结果进行噪声水平分量计算得到第一噪声水平分量,以及对所述第二平均池化结果进行噪声水平分量计算得到第二噪声水平分量;
存算模块304,用于根据所述第一平均池化结果、所述第二平均池化结果、所述第二噪声水平分量以及预设的卷积函数得到存算输出值;
加权融合模块205,用于根据所述第一像素重排结果、所述第二像素重排结果以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的加权融合结果;
平方加权融合模块206,用于根据所述第一噪声水平分量、第二噪声水平分量以及所述存算输出值得到所述第一帧图像与所述第二帧图像对应的噪声水平分量平方加权融合结果。
根据本申请实施例的第六方面,本申请还提供一种计算机设备,参见图8,所述电子设备100具体包括:
中央处理器(processor)110、存储器(memory)120、通信模块(Communications)130、输入单元140、输出单元150以及电源160。
其中,所述存储器(memory)120、通信模块(Communications)130、输入单元140、输出单元150以及电源160分别与所述中央处理器(processor)110相连接。所述存储器120中存储有计算机程序,所述中央处理器110可调用所述计算机程序,所述中央处理器110执行所述计算机程序时实现上述实施例中的存算芯片内的加权融合变换协同计算方法中的全部步骤。
根据本申请实施例的第七方面,本申请还提供一种计算机可读存储介质,用于存储计算机程序,所述计算机程序可被处理器执行。所述计算机程序被处理器执行时实现本发明所提供的任一存算芯片内的加权融合变换协同计算方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种存算芯片内的加权融合变换部件,其特征在于,包括:
第一加法器,与存算阵列和查表寄存器连接,用于根据所述存算阵列的存算输出值以及所述查表寄存器的地址值得到索引地址,所述存算输出值为存算阵列实现像素级卷积计算获得的定点数据;
激活函数查表模块,与所述第一加法器连接,用于根据所述索引地址以及预设的查表映射表确定对应的权重值,所述权重值为预设的所述存算输出值对应的映射定点数据;
第一乘法器,与所述激活函数查表模块连接,用于根据定点化的第一图像数据以及所述权重值按位取反后的值得到第一乘积;
第二乘法器,与所述激活函数查表模块连接,用于根据定点化的第二图像数据以及所述权重值得到第二乘积;
第二加法器,与所述第一乘法器和所述第二乘法器连接,用于计算所述第一乘积与所述第二乘积的和值;
移位寄存器,与所述第二加法器连接,用于对所述和值进行移位操作,得到所述第一图像数据与所述第二图像数据对应的加权融合结果。
2.一种存算芯片内的平方加权融合变换部件,其特征在于,包括:
第一加法器,与存算阵列和查表寄存器连接,用于根据所述存算阵列的存算输出值以及所述查表寄存器的地址值得到索引地址,所述存算输出值为存算阵列实现像素级卷积计算获得的定点数据;
激活函数查表模块,与所述第一加法器连接,用于根据所述索引地址以及预设的查表映射表确定对应的权重值,所述权重值为预设的所述存算输出值对应的映射定点数据;
第一乘法器,与所述激活函数查表模块连接,用于根据定点化的第一图像数据以及所述权重值按位取反后的值得到第一乘积;
第二乘法器,与所述激活函数查表模块连接,用于根据定点化的第二图像数据以及所述权重值得到第二乘积;
第三乘法器,与所述第一乘法器连接,用于根据所述第一乘积以及所述权重值按位取反后的值得到第三乘积;
第四乘法器,与所述第二乘法器连接,用于根据所述第二乘积以及所述权重值得到第四乘积;
第二加法器,与所述第三乘法器和所述第四乘法器连接,用于计算所述第三乘积与所述第四乘积的和值;
移位寄存器,与所述第二加法器连接,用于对所述和值进行移位操作,得到所述第一图像数据与所述第二图像数据对应的平方加权融合结果。
3.一种存算电路,其特征在于,包括:
高速缓存单元,用于缓存第一帧图像的一行或多行数据和第二帧图像的一行或多行数据;
预处理模块,与所述高速缓存单元连接,用于对所述第一帧图像和所述第二帧图像分别进行预处理,得到第一帧图像对应的第一像素重排结果、第一平均池化结果和第一噪声水平分量,第二帧图像对应的第二像素重排结果、第二平均池化结果和第二噪声水平分量,所述第一平均池化结果和所述第二平均池化结果差的绝对值,以及所述差的绝对值与所述第二噪声水平分量的拼接结果;
存算阵列,与所述预处理模块连接,用于将所述差的绝对值以及所述第二噪声水平分量的拼接结果与预设的卷积函数进行卷积运算,得到存算输出值;
权利要求1所述的存算芯片内的加权融合变换部件,与所述预处理模块以及所述存算阵列连接,用于根据所述第一像素重排结果、第二像素重排结果以及所述存算输出值对应的权重值得到所述第一帧图像与所述第二帧图像对应的加权融合结果;
权利要求2所述的存算芯片内的平方加权融合变换部件,与所述预处理模块以及所述存算阵列连接,用于根据所述第一噪声水平分量、第二噪声水平分量以及所述存算输出值对应的权重值得到所述第一帧图像与所述第二帧图像对应的噪声水平分量平方加权融合结果。
4.根据权利要求3所述的存算电路,其特征在于,所述预处理模块包括:
第一像素重组算子,其输入端与所述高速缓存单元连接,输出端与所述存算芯片内的加权融合变换部件连接,用于对高速缓存单元中的第一帧图像进行像素重排,得到所述第一像素重排结果;
第一平均池化算子,其输入端与所述高速缓存单元连接,用于对高速缓存单元中的第一帧图像进行平均池化运算,得到所述第一平均池化结果;
第一噪声水平分量算子,其输入端与所述第一平均池化算子连接,用于计算所述第一帧图像对应的第一噪声水平分量;
第二像素重组算子,其输入端与所述高速缓存单元连接,输出端与所述存算芯片内的加权融合变换部件连接,用于对高速缓存单元中的第二帧图像进行像素重排,得到所述第二像素重排结果;
第二平均池化算子,其输入端与所述高速缓存单元连接,用于对高速缓存单元中的第二帧图像进行平均池化运算,得到所述第二平均池化结果;
第二噪声水平分量算子,其输入端与所述第二平均池化算子连接,用于计算所述第二帧图像对应的第二噪声水平分量;
求绝对值算子,与所述第一平均池化算子和所述第二平均池化算子分别连接,用于计算所述第一平均池化结果和所述第二平均池化结果差的绝对值;
拼接算子,与所述第二噪声水平分量算子和所述求绝对值算子分别连接,用于计算所述第一平均池化结果和所述第二平均池化结果差的绝对值与所述第二噪声水平分量的拼接结果。
5.一种存算芯片内的加权融合变换协同计算方法,其特征在于,所述方法包括:
对第一帧图像分别进行像素重组和平均池化运算,得到第一像素重排结果和第一平均池化结果;
对第二帧图像分别进行像素重组和平均池化运算,得到第二像素重排结果和第二平均池化结果;
对所述第一平均池化结果和所述第二平均池化结果分别进行噪声水平分量计算,得到第一噪声水平分量和第二噪声水平分量;
根据所述第一平均池化结果、所述第二平均池化结果、所述第二噪声水平分量以及预设的卷积函数得到存算输出值;
根据所述第一像素重排结果、所述第二像素重排结果以及所述存算输出值对应的权重值得到所述第一帧图像与所述第二帧图像对应的加权融合结果;其中,所述加权融合结果基于权利要求1所述的存算芯片内的加权融合变换部件得到;
根据所述第一噪声水平分量、第二噪声水平分量以及所述存算输出值对应的权重值得到所述第一帧图像与所述第二帧图像对应的噪声水平分量平方加权融合结果;其中,所述平方加权融合结果基于权利要求2所述的存算芯片内的平方加权融合变换部件得到。
6.根据权利要求5所述的存算芯片内的加权融合变换协同计算方法,其特征在于,还包括:
将所述第一帧图像的一行或多行数据及所述第二帧图像的一行或多行数据分别一次写入高速缓存单元中;所述第一帧图像和所述第二帧图像为低速缓存数据。
7.根据权利要求5所述的存算芯片内的加权融合变换协同计算方法,其特征在于,所述根据所述第一平均池化结果、所述第二平均池化结果、所述第二噪声水平分量以及预设的卷积函数得到存算输出值,包括:
计算所述第一平均池化结果和所述第二平均池化结果差的绝对值;
将所述差的绝对值与所述第二噪声水平分量进行拼接,得到拼接结果;
将所述拼接结果输入存算阵列进行N并行度流水计算,得到所述存算输出值,N为大于或等于1的整数。
8.根据权利要求7所述的存算芯片内的加权融合变换协同计算方法,其特征在于,所述将所述拼接结果输入存算阵列进行N并行度流水计算,得到所述存算输出值,包括:
根据并行度以及并行的各卷积核计算所需的复用数据对所述拼接结果进行复用重排;
根据复用重排后的数据以及存算阵列中预存的卷积权重数据得到存算输出值;其中,并行的各卷积核计算对应的卷积权重数据呈阶梯状预存于存算阵列中。
9.一种存算芯片内的加权融合变换协同计算装置,其特征在于,包括:
像素重组模块,用于对第一帧图像进行像素重组得到第一像素重排结果,以及对第二帧图像进行像素重组得到第二像素重排结果;
平均池化模块,用于对第一帧图像进行平均池化运算得到第一平均池化结果,以及对第二帧图像进行平均池化运算得到第二平均池化结果;
噪声水平分量计算模块,用于对所述第一平均池化结果进行噪声水平分量计算得到第一噪声水平分量,以及对所述第二平均池化结果进行噪声水平分量计算得到第二噪声水平分量;
存算模块,用于根据所述第一平均池化结果、所述第二平均池化结果、所述第二噪声水平分量以及预设的卷积函数得到存算输出值;
加权融合模块,所述加权融合模块包括权利要求1所述的存算芯片内的加权融合变换部件,所述加权融合变换部件用于根据所述第一像素重排结果、所述第二像素重排结果以及所述存算输出值对应的权重值得到所述第一帧图像与所述第二帧图像对应的加权融合结果;
平方加权融合模块,所述平方加权融合模块包括权利要求2所述的存算芯片内的平方加权融合变换部件,所述平方加权融合变换部件用于根据所述第一噪声水平分量、第二噪声水平分量以及所述存算输出值对应的权重值得到所述第一帧图像与所述第二帧图像对应的噪声水平分量平方加权融合结果。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求5至8中任一项所述的存算芯片内的加权融合变换协同计算方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求5至8中任一项所述的存算芯片内的加权融合变换协同计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310104821.9A CN116414456B (zh) | 2023-01-19 | 2023-01-19 | 存算芯片内的加权融合变换部件、存算电路及协同计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310104821.9A CN116414456B (zh) | 2023-01-19 | 2023-01-19 | 存算芯片内的加权融合变换部件、存算电路及协同计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116414456A CN116414456A (zh) | 2023-07-11 |
CN116414456B true CN116414456B (zh) | 2024-01-19 |
Family
ID=87055558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310104821.9A Active CN116414456B (zh) | 2023-01-19 | 2023-01-19 | 存算芯片内的加权融合变换部件、存算电路及协同计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116414456B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN209388304U (zh) * | 2019-02-26 | 2019-09-13 | 北京知存科技有限公司 | 可软件定义的存算一体芯片和电子设备 |
CN112149816A (zh) * | 2020-11-25 | 2020-12-29 | 之江实验室 | 支持深度神经网络推理加速的异构存算融合系统及方法 |
CN113034391A (zh) * | 2021-03-19 | 2021-06-25 | 西安电子科技大学 | 一种多模式融合水下图像增强方法、系统及应用 |
CN113673691A (zh) * | 2021-08-17 | 2021-11-19 | 北京理工大学 | 基于存算结合的多通道卷积fpga架构及其工作方法 |
CN113672855A (zh) * | 2021-08-25 | 2021-11-19 | 恒烁半导体(合肥)股份有限公司 | 一种存内运算方法、装置及其应用 |
CN114499538A (zh) * | 2021-12-16 | 2022-05-13 | 清华大学 | 多比特输入数据编码方法、装置、电子设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2436377B (en) * | 2006-03-23 | 2011-02-23 | Cambridge Display Tech Ltd | Data processing hardware |
US10417498B2 (en) * | 2016-12-30 | 2019-09-17 | Mitsubishi Electric Research Laboratories, Inc. | Method and system for multi-modal fusion model |
-
2023
- 2023-01-19 CN CN202310104821.9A patent/CN116414456B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN209388304U (zh) * | 2019-02-26 | 2019-09-13 | 北京知存科技有限公司 | 可软件定义的存算一体芯片和电子设备 |
CN112149816A (zh) * | 2020-11-25 | 2020-12-29 | 之江实验室 | 支持深度神经网络推理加速的异构存算融合系统及方法 |
CN113034391A (zh) * | 2021-03-19 | 2021-06-25 | 西安电子科技大学 | 一种多模式融合水下图像增强方法、系统及应用 |
CN113673691A (zh) * | 2021-08-17 | 2021-11-19 | 北京理工大学 | 基于存算结合的多通道卷积fpga架构及其工作方法 |
CN113672855A (zh) * | 2021-08-25 | 2021-11-19 | 恒烁半导体(合肥)股份有限公司 | 一种存内运算方法、装置及其应用 |
CN114499538A (zh) * | 2021-12-16 | 2022-05-13 | 清华大学 | 多比特输入数据编码方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
Mixed Precision Training of Convolutional Neural Networks using Integer Operations;Dipankar Das等;《Computer Science》;1-11 * |
Also Published As
Publication number | Publication date |
---|---|
CN116414456A (zh) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647773B (zh) | 一种可重构卷积神经网络的硬件互连系统 | |
CN102208005B (zh) | 一种2-d卷积器 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的系统和方法 | |
US20150228091A1 (en) | Texture Unit for General Purpose Computing | |
CN110175670B (zh) | 一种基于FPGA实现YOLOv2检测网络的方法及系统 | |
CN110032538B (zh) | 一种数据读取系统和方法 | |
CN111931925B (zh) | 基于fpga的二值化神经网络的加速系统 | |
CN103369326A (zh) | 适于高性能视频编码标准hevc的变换编码器 | |
CN113792621A (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN116167425B (zh) | 一种神经网络加速方法、装置、设备及介质 | |
CN116414456B (zh) | 存算芯片内的加权融合变换部件、存算电路及协同计算方法 | |
CN111610963B (zh) | 芯片结构及其乘加计算引擎 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN115982418B (zh) | 一种提升ai计算芯片超分运算性能的方法 | |
CN108960203B (zh) | 一种基于fpga异构计算的车辆检测方法 | |
CN116611488A (zh) | 一种矢量处理单元、神经网络处理器及深度相机 | |
CN116227599A (zh) | 一种推理模型的优化方法、装置、电子设备及存储介质 | |
WO2023184754A1 (zh) | 可配置实时视差点云计算装置及方法 | |
CN114372012B (zh) | 一种通用、可配置的高能效池化计算单行输出系统和方法 | |
CN114912596A (zh) | 面向稀疏卷积神经网络的多chiplet系统及其方法 | |
CN111191780B (zh) | 均值池化累加电路、装置以及方法 | |
US20230252600A1 (en) | Image size adjustment structure, adjustment method, and image scaling method and device based on streaming architecture | |
CN114741352B (zh) | 一种基于fpga的双线性插值重采样实现方法及装置 | |
CN112001492A (zh) | 关于二值权重DenseNet模型的混合流水式加速架构及加速方法 | |
CN116882467B (zh) | 面向边缘端的多模式可配置的神经网络加速器电路结构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |