本发明涉及人工智能,特别是涉及一种并行卷积计算方法、装置、目标卷积模块及存储介质。
背景技术:
1、随着人工智能技术的不断发展,卷积神经网络模型的应用愈发广泛,尤其是在图像处理过程中不可避免的需要利用卷积神经网络模型中的卷积模块对图像数据进行卷积处理。
2、相关技术中,在利用卷积模块对图像数据进行卷积计算时,需要占用大量的逻辑资源、计算资源、存储资源和总线资源等,从而对现场可编程逻辑门阵列(fieldprogrammable gate array,fpga)等可编程逻辑器件提出较高的硬件要求。但是,fpga等可编程逻辑器件的硬件资源往往又是非常有限的,这导致卷积计算所需的硬件要求与fpga等可编程逻辑器件的硬件资源出现矛盾。因此,如何在硬件资源有限的情况下实现卷积神经网络模型的高速并行卷积计算是卷积神经网络模型应用的关键问题。
技术实现思路
1、本发明实施例的目的在于提供一种并行卷积计算方法、装置、目标卷积模块及存储介质,以实现硬件资源有限的情况下卷积计算高效性。具体技术方案如下:
2、本技术实施例提供了一种并行卷积计算方法,应用于目标卷积模块,所述方法包括:
3、接收待处理数据,所述待处理数据为前一处理模块对与视频流的相关数据进行处理得到的第一输出数据;
4、根据所述待处理数据对应的帧周期,以及所述目标卷积模块对应的输入通道数和输出通道数,计算所述待处理数据对应的循环处理周期和并行支路数;
5、基于所述并行支路数,对预设卷积参数进行多项分解,得到第一卷积参数集,所述第一卷积参数集中包括数量与所述并行支路数匹配的第一卷积参数;
6、基于所述循环处理周期,从所述待处理数据中获取预设数量路量化数据;
7、基于所述第一卷积参数集,按照威诺格拉德(winograd)算法,并行对所述预设数量路量化数据进行卷积计算,得到第二输出数据。
8、可选的,所述根据所述待处理数据对应的帧周期,以及所述目标卷积模块对应的输入通道数和输出通道数,计算所述待处理数据对应的循环处理周期和并行支路数的步骤,包括:
9、以所述待处理数据中的每一行为单位,根据所述待处理数据的帧周期以及所述目标卷积模块的时钟频率,计算所述待处理数据的行周期;
10、根据所述目标卷积模块的输入通道数以及所述待处理数据的列数量,计算所述待处理数据中每一行数据对应的传输时长;
11、根据所述行周期和所述传输时长,计算所述待处理数据对应的循环处理周期;
12、根据所述循环处理周期和所述目标卷积模块的输出通道数,计算所述待处理数据对应的并行支路数。
13、可选的,所述根据所述行周期和所述传输时长,计算所述待处理数据对应的循环处理周期的步骤,包括:
14、利用以下公式,计算所述待处理数据对应的循环处理周期:
15、
16、其中,n为所述循环处理周期,为下取整操作,log2为以2为底的对数操作,t1为所述行周期,t2为所述传输时长。
17、可选的,所述根据所述循环处理周期和所述目标卷积模块的输出通道数,计算所述待处理数据对应的并行支路数的步骤,包括:
18、利用以下公式,计算所述待处理数据对应的并行支路数:
19、
20、其中,p为所述并行支路数,cout为所述目标卷积模块的输入通道数,n为所述循环处理周期。
21、可选的,所述基于所述并行支路数,对预设卷积参数进行多项分解,得到第一卷积参数集的步骤,包括:
22、以预设卷积参数中基本卷积核的行数为单位,对所述预设卷积参数进行分解,得到包括多个第二卷积参数的第二卷积参数集;
23、按照所述并行支路数,对所述第二卷积参数集进行分解,得到包括多个第三卷积参数的第三卷积参数集;
24、以所述基本卷积核的列数为单位,对所述第三卷积参数集中的每一第三卷积参数进行合并,得到第四卷积参数集,所述第四卷积参数集中第四卷积参数的数量与所述并行支路数匹配;
25、按照预设并行卷积顺序要求,对所述第四卷积参数集中的第四卷积参数进行重排列,得到第一卷积参数集。
26、可选的,所述基于所述循环处理周期,从所述待处理数据中获取预设数量路量化数据的步骤,包括:
27、以待处理数据中的每一行为单位,按照预设通道顺序,对所述待处理数据中各通道对应的数据进行交叉拼接,得到拼接数据,所述拼接数据中包括帧标识和行标识;
28、基于所述拼接数据中的帧标识和行标识,以及所述循环处理周期,按照视频帧格式,以行为单位将所述拼接数据循环缓存至预设缓存器;
29、按照所述循环处理周期,并行从所述预设缓存器中读取预设数量路数据,得到量化数据。
30、可选的,所述基于所述第一卷积参数集,按照winograd算法,并行对所述预设数量路量化数据进行卷积计算,得到第二输出数据的步骤,包括:
31、对每路量化数据进行量化补偿,得到各路量化数据对应的第一补偿数据;
32、并行将各路第一补偿数据分别输入对应的四级移位寄存器,获取每一级移位寄存器输出的移位数据;
33、基于所述第一卷积参数集,对各路量化数据对应的目标并行支路数据进行winograd计算,得到第一卷积计算结果,所述目标并行支路数据为每级移位寄存器输出的移位数据和输入所述四级移位寄存器的第一补偿数据中的四路支路数据;
34、对所述第一卷积计算结果进行量化补偿,得到第二补偿数据;
35、按照预设通道顺序,以行为单位将所述第二补偿数据存储至预设存储器;
36、按照视频帧格式,以行为单位对所述预设存储器中存储的数据进行读取,得到输出数据。
37、可选的,所述基于所述第一卷积参数集,对各路量化数据对应的目标并行支路数据进行winograd计算,得到第一卷积计算结果的步骤,包括:
38、针对每路量化数据,基于winograd算法,对该路量化数据对应的目标并行支路数据中的四路支路数据进行求和计算,得到该路量化数据对应的四路第一求和数据;
39、对所述第一卷积参数集中的每一第一卷积参数进行winograd参数转换,得到四个卷积权重;
40、基于winograd算法,对所述四个卷积权重和该路量化数据对应的四路第一求和数据进行卷积计算,得到该路量化数据对应的四路第二卷积计算结果;
41、基于winograd算法,对该路量化数据对应的四路第二卷积计算结果进行求和计算,得到该路量化数据对应的两路第二求和数据;
42、基于winograd算法,针对各路量化数据对应的两路第二求和数据进行求和计算,得到两路第三求和数据;
43、以所述输出通道数为累加周期,对每一累加周期内的两路第三求和数据进行循环累加,得到第一卷积计算结果。
44、本技术实施例还提供了一种并行卷积计算装置,应用于目标卷积模块,所述装置包括:
45、接收单元,用于接收待处理数据,所述待处理数据为前一处理模块对与视频流的相关数据进行处理得到的第一输出数据;
46、第一计算单元,用于根据所述待处理数据对应的帧周期,以及所述目标卷积模块对应的输入通道数和输出通道数,计算所述待处理数据对应的循环处理周期和并行支路数;
47、分解单元,用于基于所述并行支路数,对预设卷积参数进行多项分解,得到第一卷积参数集,所述第一卷积参数集中包括数量与所述并行支路数匹配的第一卷积参数;
48、获取单元,用于基于所述循环处理周期,从所述待处理数据中获取预设数量路量化数据;
49、第二计算单元,用于基于所述第一卷积参数集,按照winograd算法,并行对所述预设数量路量化数据进行卷积计算,得到第二输出数据。
50、可选的,所述第一计算单元,包括:
51、第一计算子单元,用于以所述待处理数据中的每一行为单位,根据所述待处理数据的帧周期以及所述目标卷积模块的时钟频率,计算所述待处理数据的行周期;
52、第二计算子单元,用于根据所述目标卷积模块的输入通道数以及所述待处理数据的列数量,计算所述待处理数据中每一行数据对应的传输时长;
53、第三计算子单元,用于根据所述行周期和所述传输时长,计算所述待处理数据对应的循环处理周期;
54、第四计算子单元,用于根据所述循环处理周期和所述目标卷积模块的输出通道数,计算所述待处理数据对应的并行支路数。
55、可选的,所述第三计算子单元,具体用于利用以下公式,计算所述待处理数据对应的循环处理周期:
56、
57、其中,n为所述循环处理周期,为下取整操作,log2为以2为底的对数操作,t1为所述行周期,t2为所述传输时长。
58、可选的,所述第四计算子单元,具体用于利用以下公式,计算所述待处理数据对应的并行支路数:
59、
60、其中,p为所述并行支路数,cout为所述目标卷积模块的输入通道数,n为所述循环处理周期。
61、可选的,所述分解单元,具体用于以预设卷积参数中基本卷积核的行数为单位,对所述预设卷积参数进行分解,得到包括多个第二卷积参数的第二卷积参数集;
62、按照所述并行支路数,对所述第二卷积参数集进行分解,得到包括多个第三卷积参数的第三卷积参数集;
63、以所述基本卷积核的列数为单位,对所述第三卷积参数集中的每一第三卷积参数进行合并,得到第四卷积参数集,所述第四卷积参数集中第四卷积参数的数量与所述并行支路数匹配;
64、按照预设并行卷积顺序要求,对所述第四卷积参数集中的第四卷积参数进行重排列,得到第一卷积参数集。
65、可选的,所述获取单元,具体用于以待处理数据中的每一行为单位,按照预设通道顺序,对所述待处理数据中各通道对应的数据进行交叉拼接,得到拼接数据,所述拼接数据中包括帧标识和行标识;
66、基于所述拼接数据中的帧标识和行标识,以及所述循环处理周期,按照视频帧格式,以行为单位将所述拼接数据循环缓存至预设缓存器;
67、按照所述循环处理周期,并行从所述预设缓存器中读取预设数量路数据,得到量化数据。
68、可选的,所述第二计算单元,包括:
69、第一补偿子单元,用于对每路量化数据进行量化补偿,得到各路量化数据对应的第一补偿数据;
70、获取子单元,用于并行将各路第一补偿数据分别输入对应的四级移位寄存器,获取每一级移位寄存器输出的移位数据;
71、第五计算子单元,用于基于所述第一卷积参数集,对各路量化数据对应的目标并行支路数据进行winograd计算,得到第一卷积计算结果,所述目标并行支路数据为每级移位寄存器输出的移位数据和输入所述四级移位寄存器的第一补偿数据中的四路支路数据;
72、第二补偿子单元,用于对所述第一卷积计算结果进行量化补偿,得到第二补偿数据;
73、存储子单元,用于按照预设通道顺序,以行为单位将所述第二补偿数据存储至预设存储器;
74、读取子单元,用于按照视频帧格式,以行为单位对所述预设存储器中存储的数据进行读取,得到输出数据。
75、可选的,所述第五计算子单元,具体用于针对每路量化数据,基于winograd算法,对该路量化数据对应的目标并行支路数据中的四路支路数据进行求和计算,得到该路量化数据对应的四路第一求和数据;
76、对所述第一卷积参数集中的每一第一卷积参数进行winograd参数转换,得到四个卷积权重;
77、基于winograd算法,对所述四个卷积权重和该路量化数据对应的四路第一求和数据进行卷积计算,得到该路量化数据对应的四路第二卷积计算结果;
78、基于winograd算法,对该路量化数据对应的四路第二卷积计算结果进行求和计算,得到该路量化数据对应的两路第二求和数据;
79、基于winograd算法,针对各路量化数据对应的两路第二求和数据进行求和计算,得到两路第三求和数据;
80、以所述输出通道数为累加周期,对每一累加周期内的两路第三求和数据进行循环累加,得到第一卷积计算结果。
81、本技术实施例还提供了一种目标卷积模块,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
82、存储器,用于存放预设卷积参数;
83、处理器,用于执行存储器上所存放的预设卷积参数时,实现上述任一所述的并行卷积计算方法步骤。
84、本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有预设卷积参数,所述预设卷积参数被处理器调用实现上述任一所述的并行卷积计算方法步骤。
85、本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的并行卷积计算方法。
86、本发明实施例有益效果:
87、本发明实施例提供的技术方案,在接收到待处理数据后,根据待处理数据对应的帧周期,以及目标卷积模块的输入通道数和输出通道数,计算待处理数据所对应的循环处理周期和并行支路数;从而基于并行支路数,对预设卷积参数进行多项分解,得到数量与并行支路数匹配的第一卷积参数,并基于循环处理周期,从待处理数据中获取预设数量路量化数据,进而基于第一卷积参数集中的第一卷积参数,按照winograd算法,并行对预设数量路量化数据进行卷积计算,得到第二输出数据。
88、在本技术实施例中,由于卷积计算过程是基于数量与并行支路数匹配的第一卷积参数,并行对待处理数据中预设数量路量化数据进行卷积计算的,这使得目标卷积模块可以对待处理数据进行并行处理,有效的提高了待处理数据的处理效率。并且,由于每路量化数据是基于循环处理周期从待处理数据中获取的,而循环处理周期又是根据待处理数据对应的帧周期计算得到的,这使得进行并行卷积计算的各路量化数据在满足待处理数据对应的帧周期的同时,保证了并行处理的数据最大化,为并行卷积计算提供重要保证。因此,通过本技术实施例提供的技术方案,可以通过对待处理数据的并行卷积计算,提高了待处理数据的卷积计算的效率,实现了硬件资源有限的情况下卷积计算高效性。
89、当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。