一种基于FPGA的点云目标检测神经网络加速器和加速方法技术

技术编号:38331442 阅读:19 留言:0更新日期:2023-07-29 09:14
本发明专利技术属于基于FPGA的硬件加速器设计领域,提出一种基于FPGA的点云目标检测神经网络加速器和加速方法。卷积加速器包括指令解码模块、卷积模块、累加模块、截位模块和激活函数。中间值缓存只暂存1个特征图的通道,消耗BRAM较少,适用于加速特征图尺寸较大、通道数较多、网络规模较大的点云目标检测神经网络。本发明专利技术具有灵活的可配置性以及优秀的复用性,因此本发明专利技术能加速点云目标检测神经网络的不同卷积层,且适合作为IP集成到大型设计中,减少FPGA资源消耗,提高资源利用率;而且设置权重和输入特征图共用一个数据输入通道,同时卷积中间值暂存至片上BRAM,减少了特征图搬运次数,节省了FPGA接口带宽。省了FPGA接口带宽。省了FPGA接口带宽。

【技术实现步骤摘要】
一种基于FPGA的点云目标检测神经网络加速器和加速方法


[0001]本专利技术涉及基于FPGA的硬件加速器设计领域,尤其涉及一种基于FPGA的点云目标检测神经网络加速器和加速方法。

技术介绍

[0002]由于点云目标检测神经网络SA

SSD、VoxelNet、PointPillars等包括大量卷积层,网络消耗的算力也主要用于卷积计算,卷积操作由大量乘累加运算组成,因而点云目标检测神经网络需要部署至高性能计算平台。常见的计算平台有CPU、GPU、FPGA、ASIC等,其中FPGA与其他计算平台相比,具有并行度高、算力大、设计方案修改灵活、功耗低等优势,且验证后的FPGA方案还能为开发ASIC提供基础,因此基于FPGA开发点云目标检测神经网络加速器具有一定的现实意义。
[0003]现有的非复用式加速器如“李莉,陈心宇,高文斌.一种基于FPGA的卷积神经网络加速器实现方案[J].北京电子科技学院学报,2022,30(04):96

104”与“何凯旋,袁勋,陈松.基于FPGA动态重构的卷积神经网络硬件架构设计[J].信息技术与网络安全,2019,38(03):77

81.”针对特定卷积神经网络而搭建和优化,其各层卷积核尺寸、输入特征图尺寸、步长、填充等参数各异且为固定值,加速器复用性差;由于神经网络当前层需要等待前一层计算完毕后才能开始计算,这会造成FPGA资源占用率高而利用率低;而现有的复用式加速器如“何家俊,苏成悦,罗荣芳等.基于FPGA的量化推理CNN加速系统研究与设计[J].计算机测量与控制,2022,30(09):162

169.”提高了可复用性,然而特征图的频繁搬运使得FPGA计算效率低。点云目标检测神经网络的卷积层与卷积神经网络存在差异,点云具有稀疏性,由点云提取出的特征图通常尺寸更大、通道数更多,且点云目标检测神经网络通常有较大的层数,如果点云目标检测神经网络使用现有非复用式卷积加速器和加速方法,那么加速器各个层消耗的触发器(Flip

Flop,FF)、查找表(Look

Up

Table,LUT)、块存储器(Block RAM,BRAM)会大大超出FPGA的资源上限,且相邻卷积层之间的等待时间会更长,造成严重的资源闲置和浪费。因此基于FPGA设计一种复用性优秀、资源消耗少、性能高的点云目标检测神经网络加速器,通过多层复用、配置不同参数、减少特征图搬运次数使点云目标检测网络能高效利用FPGA资源和算力,在点云目标检测领域具有重要的实际意义。

技术实现思路

[0004]针对以上问题,本专利技术提出一种基于FPGA的点云目标检测神经网络加速器和加速方法,通过使用量化的权重和输入特征图、实时配置各模块卷积参数、增大计算并行度的方法,使同一个卷积加速器适应点云目标检测网络的不同层,复用卷积加速器,减少FPGA资源占用,提高资源利用率和计算性能。
[0005]本专利技术的技术方案如下:
[0006]一种基于FPGA的点云目标检测神经网络加速器,包括指令解码模块、卷积模块、累加模块、截位模块和激活函数;控制信号经指令解码模块分别输入至卷积模块、累加模块和
截位模块;数据流依次经过卷积模块、累加模块、截位模块和激活函数输出;
[0007]指令解码模块,用于解码指令总线所承载的控制信号,获取卷积模块、累加模块和截位模块所需的参数;
[0008]卷积模块,用于缓存已量化的权重和输入特征图数据,并进行并行卷积运算;卷积模块包括卷积控制模块、权重缓存、输入缓存、乘法器阵列和加法树;卷积控制模块用于控制并行卷积计算进度、控制权重缓存和输入缓存的数据读取;卷积控制模块内置权重计数器w_cnt、行计数器row_cnt、列计数器col_cnt、步长行计数器s_row_cnt和步长列计数器s_col_cnt;权重缓存用于缓存权重数据,并将权重数据输出至乘法器阵列;输入缓存主要由移位寄存器、输入寄存器阵列构成,用于按行缓存输入特征图数据,并将输入特征图数据输出至乘法器阵列;权重缓存和输入缓存共用数据输入通道,依次输入不同数据;乘法器阵列由多个乘法器组成阵列,用于执行并行卷积运算中的多个乘法运算;加法树由多级加法器构成流水线,每级加法器由多个二输入一输出加法器组成,每级加法器在一个时钟周期内将多个输入数据两两相加,并将结果输出至下一级加法器;加法树用于将乘法器阵列输出的多个乘法结果在多个时钟周期内求和,求和结果作为中间值输出至累加模块;
[0009]累加模块,用于存放由卷积模块输出的不同批次中间值,并将不同批次中间值对应像素累加,累加完成后生成输出特征图,然后对输出特征图添加偏置,输出至截位模块;累加模块包括累加与控制模块和中间值缓存;累加与控制模块用于控制累加进度,从中间值缓存中读取上一批次求和结果,将读取的上一批次求和结果与加法树输出的当前批次中间值相加得到当前批次求和结果,并将当前批次求和结果写入中间值缓存,所有批次中间值累加结束后得到输出特征图,然后对输出特征图执行加偏置操作;中间值缓存主要由BRAM构成,用于缓存由卷积模块计算出的第一批中间值以及缓存由累加与控制模块计算出的当前批次求和结果;累加与控制模块内置累加批次计数器parl_cnt;
[0010]截位模块,用于截短加偏置的输出特征图的位宽,其包括1个乘法器;
[0011]激活函数,用于将截短后的输出特征图通过激活函数处理后输出。
[0012]所述指令解码模块的解码过程为:将指令总线instr按照各个参数位宽依次截取出卷积加速器标号id、卷积加速器使能en、输入特征图宽度w、输入特征图高度h、输入通道c、步长s、填充p、输入特征图舍弃宽度w_dsc、输入特征图舍弃高度h_dsc、截位长度m_shift、截位系数m_caps、偏置b;其中w_dsc=(w+2
×
p

F)%s,h_dsc=(h+2
×
p

F)%s,F为卷积加速器对应点云目标检测神经网络卷积层的卷积核尺寸,“%”表示取余数操作;m_shift和m_caps为量化过程中用于减少截位误差的两个整型统计量,具体操作为将累加模块生成的输出特征图数据与m_caps相乘,乘积右移m_shift位。
[0013]一种基于FPGA的点云目标检测神经网络加速方法,包括步骤如下:
[0014]步骤一、卷积模块计算;
[0015]步骤1.1:输入数据通道先连接权重缓存,权重缓存载入并行度为PARL的权重数据;
[0016]步骤1.2:卷积控制模块通过其内置的权重计数器w_cnt记录已载入权重缓存的权重个数,当w_cnt=F
×
F时,将输入数据通道连接至输入缓存,并执行步骤1.3,量化载入权重缓存的权重数据位宽为BW;
[0017]步骤1.3:输入缓存载入并行度为PARL的输入特征图数据,并使用F

1个深本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的点云目标检测神经网络加速器,其特征在于,该基于FPGA的点云目标检测神经网络加速器包括指令解码模块、卷积模块、累加模块、截位模块和激活函数;控制信号经指令解码模块分别输入至卷积模块、累加模块和截位模块;数据流依次经过卷积模块、累加模块、截位模块和激活函数输出;指令解码模块,用于解码指令总线所承载的控制信号,获取卷积模块、累加模块和截位模块所需的参数;卷积模块,用于缓存已量化的权重和输入特征图数据,并进行并行卷积运算;卷积模块包括卷积控制模块、权重缓存、输入缓存、乘法器阵列和加法树;卷积控制模块用于控制并行卷积计算进度、控制权重缓存和输入缓存的数据读取;卷积控制模块内置权重计数器w_cnt、行计数器row_cnt、列计数器col_cnt、步长行计数器s_row_cnt和步长列计数器s_col_cnt;权重缓存用于缓存权重数据,并将权重数据输出至乘法器阵列;输入缓存主要由移位寄存器、输入寄存器阵列构成,用于按行缓存输入特征图数据,并将输入特征图数据输出至乘法器阵列;权重缓存和输入缓存共用数据输入通道,依次输入不同数据;乘法器阵列由多个乘法器组成阵列,用于执行并行卷积运算中的多个乘法运算;加法树由多级加法器构成流水线,每级加法器由多个二输入一输出加法器组成,每级加法器在一个时钟周期内将多个输入数据两两相加,并将结果输出至下一级加法器;加法树用于将乘法器阵列输出的多个乘法结果在多个时钟周期内求和,求和结果作为中间值输出至累加模块;累加模块,用于存放由卷积模块输出的不同批次中间值,并将不同批次中间值对应像素累加,累加完成后生成输出特征图,然后对输出特征图添加偏置,输出至截位模块;累加模块包括累加与控制模块和中间值缓存;累加与控制模块用于控制累加进度,从中间值缓存中读取上一批次求和结果,将读取的上一批次求和结果与加法树输出的当前批次中间值相加得到当前批次求和结果,并将当前批次求和结果写入中间值缓存,所有批次中间值累加结束后得到输出特征图,然后对输出特征图执行加偏置操作;中间值缓存主要由BRAM构成,用于缓存由卷积模块计算出的第一批中间值以及缓存由累加与控制模块计算出的当前批次求和结果;累加与控制模块内置累加批次计数器parl_cnt;截位模块,用于截短加偏置的输出特征图的位宽,其包括1个乘法器;激活函数,用于将截短后的输出特征图通过激活函数处理后输出。2.根据权利要求1所述的基于FPGA的点云目标检测神经网络加速器,其特征在于,所述指令解码模块的解码过程为:将指令总线instr按照各个参数位宽依次截取出卷积加速器标号id、卷积加速器使能en、输入特征图宽度w、输入特征图高度h、输入通道c、步长s、填充p、输入特征图舍弃宽度w_dsc、输入特征图舍弃高度h_dsc、截位长度m_shift、截位系数m_caps、偏置b;其中w_dsc=(w+2
×
p

F)%s,h_dsc=(h+2
×
p

F)%s,F为卷积加速器对应点云目标检测神经网络卷积层的卷积核尺寸,“%”表示取余数操作;m_shift和m_caps为量化过程中用于减少截位误差的两个整型统计量,具体操作为将累加模块生成的输出特征图数据与m_caps相乘,乘积右移m_shift位。3.一种基于FPGA的点云目标检测神经网络加速方法,其特征在于,包括步骤如下:步骤1、卷积模块计算;步骤1.1:输入数据通道先连接权重缓存,权重缓存载入并行度为PARL的权重数据;
步骤1.2:卷积控制模块通过其内置的权重计数器w_cnt记录已载入权重缓存的权重个数,当w_cnt=F
×
F时,将输入数据通道连接至输入缓存,并执行步骤1.3,量化载入权重缓存的权重数据位宽为BW;步骤1.3:输入缓存载入并行度为PARL的输入特征图数据,并使用F

1个深度为w+2
×
p

3的级联的移位寄存器缓存F

1行输入特征图,且每载入一个像素数据,卷积控制模块中的列计数器同步递增1;输入缓存包括尺寸为F
×
F的输入寄存器阵列,F

1个移位寄存器的输出值分别存入输入寄存器阵列前F

1行的第F列,输入缓存载入的输入特征图数据存入输入寄存器阵列第F行的第F列,同时输入寄存器阵列第i+1列的值存入第i列,1≤i<F,此时输入寄存器阵列的F
×
F个值即为乘法器阵列所需的F
×
F个数据,从而在输入特征图中构成一个F
×
F的卷积窗口,卷积窗口随着输入特征图数据逐个载入而产生滑动;量化载入输入缓存的输入特征图数据位宽与已量化载入权重缓存的权重数据位宽一致,均为BW;步骤1.4:卷积控制模块通过行计数器row_cnt和列计数器col_cnt分别记录输入缓存载入输入特征图数据的位置,即当前F
×
F的卷积窗口所在输入特征图的行数和列数,当0≤col_cnt≤w+2
×
p

1、0≤row_cnt≤h+2
×
p

h_dsc

1时,表示卷积窗口处于卷积有效区域;步骤1.5:卷积控制模块通过步长行计数器s_row_cnt和步长列计数器s_col_cnt控制卷积有效性,步长行计数器s_row_cnt随行计数器row_cnt同步递增,当col_cnt≤w+2
×
p

w_dsc

1时,步长列计数器s_col_cnt随列计数器col_cnt同步递增;当步长行计数器s_row_cnt达到上限s

1时,步长行计数器s_row_cnt重置为0,当步长列计数器s_col_cnt达到上限s

1时,步长列计数器s_col_cnt重置为0;步骤1.6:输入特征图的区域col_cnt<p、col_cnt>w+p

【专利技术属性】
技术研发人员:马艳华李雪松李伟明董昕元
申请(专利权)人:大连理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1