一种基于FPGA的目标快速检测系统

文档序号:32159007发布日期:2022-11-12 01:39阅读:92来源:国知局
一种基于FPGA的目标快速检测系统
一种基于fpga的目标快速检测系统
技术领域
1.本发明涉及计算机视觉技术领域,具体涉及一种基于fpga的目标快速检测系统。


背景技术:

2.在传统的工业产品制造过程中,通常要求工作人员注意力长时间集中在被检测产品生产线上,处理效率较低,难以满足快速自动化的生产要求。为满足生产要求,视觉定位等机器视觉技术已被引入到工业生产中,视觉定位技术可为机械臂等自动化设备提供待处理物体的位置、种类等相关信息,从而实现对生产线产品的智能化、无人化处理。机器视觉技术可以实现物品的定位功能,但目前现有方案中其实现成本较高。在高速移动的流水线上,需要计算设备对采集到的图像进行实时处理。若对目标物体的检测时间过长或检测稳定性不高都将会导致无法对该物体进行有效处理,容易产生生产事故。


技术实现要素:

3.本发明的目的就在于解决上述背景技术的问题,而提出一种基于fpga的目标快速检测系统。
4.本发明的目的可以通过以下技术方案实现:
5.本发明实施例提供了一种基于fpga的目标快速检测系统,包括:soc片上计算模块、图像采集模块和外部存储模块;所述soc片上计算模块基于fpga实现,包括处理器和深度学习协处理器;其中:
6.所述处理器,用于获取待处理图像,传输给所述深度学习协处理器,控制所述深度学习协处理器对所述待处理图像中的目标物体进行检测,并将检测结果和检测过程中产生的中间数据发送至外部存储模块存储;所述待处理图像包括所述图像采集模块采集的原始图像和所述中间数据;
7.所述深度学习协处理器,用于对所述待处理图像进行第一次检测,得到包含所述目标物体的局部图像,对所述局部图像进行第二次检测,得到所述检测结果,所述第一次检测和所述第二次检测产生所述中间数据。
8.可选地,所述深度学习协处理器为非阻塞式;所述深度学习协处理器内建于cpu中与所述处理器连接,或者,所述深度学习协处理器作为所述处理器的加速器通过总线与所述处理器连接。
9.可选地,所述深度学习协处理器包括指令处理单元、卷积神经网络模块、数据搬运单元、数据缓存单元和存储访问单元;
10.所述指令处理单元,用于通过指令通道接收所述处理器发送的控制指令,根据所述控制指令控制所述数据搬运单元、存储访问单元和卷积神经网络模块工作;
11.所述存储访问单元,用于通过存储访问通道接收所述待处理图像,向所述处理器发送所述检测结果和所述中间数据;
12.所述数据缓存单元,用于缓存所述待处理图像、所述检测结果和所述中间数据;
13.所述数据搬运单元,用于根据所述控制指令将所述待处理图像或者所述中间数据从所述数据缓存单元输入所述卷积神经网络模块,并将所述卷积神经网络模块的所述检测结果和所述中间数据缓存入所述数据缓存单元;
14.所述卷积神经网络模块,用于对所述待处理图像进行所述第一次检测和所述第二次检测得到所述检测结果和所述中间数据。
15.可选地,所述处理器以cpu工作频率运行;所述指令处理单元、所述存储访问单元以及与所述指令处理单元相关的各寄存器接口以cpu工作频率运行;所述数据搬运单元和所述卷积神经网络模块以加速器工作频率运行;所述数据缓存单元与所述存储访问单元的接口以cpu工作频率运行,所述数据缓存单元与所述数据搬运单元的接口以加速器工作频率运行。
16.可选地,卷积神经网络模块包括待计算数据缓存单元、模型参数单元、卷积神经网络加速器和结果数据缓存单元;
17.所述待计算数据缓存单元,用于缓存所述待处理图像和所述中间数据;
18.所述模型参数单元,用于保存训练好的卷积神经网络模型参数;所述卷积神经网络模型包括卷积计算单元、池化填充计算单元、特征相加计算单元、激活计算单元和全连接计算单元;
19.所述卷积神经网络加速器,用于根据所述卷积神经网络模型参数依次对所述卷积神经网络模型的各个计算单元进行加速计算,实现目标物体检测;
20.所述结果数据缓存单元,用于缓存所述中间数据和所述检测结果。
21.可选地,所述待计算数据缓存单元、所述模型参数单元、所述数据缓存单元和所述结果数据缓存单元为双端口bram,采用乒乓操作的方式;在所述卷积神经网络加速器执行计算操作的同时,所述待计算数据缓存单元、所述模型参数单元、所述数据缓存单元和所述结果数据缓存单元进行数据搬运。
22.可选地,所述控制指令包括卷积神经网络加速器配置指令;卷积神经网络加速器配置指令用于获取待计算数据起始地址信息、模型参数数据起始地址信息、输出结果数据起始地址信息、是否进行激活操作信息、是否进行填充操作信息、全连接层权重参数数量信息和计算模式信息中的至少一种信息;所述计算模式信息为卷积计算模式、池化填充计算模式、特征相加计算模式和全连接计算模式中的一种。
23.可选地,所述处理器,还用于根据计算需求向所述深度学习协处理器的数据搬运相关寄存器进行参数配置,提供数据搬运相关信息;所述数据搬运相关信息包括数据搬运源地址信息、数据搬运目的地址信息和数据搬运长度信息。
24.本发明实施例提供了一种基于fpga的目标快速检测系统,包括:soc片上计算模块、图像采集模块和外部存储模块;所述soc片上计算模块基于fpga实现,包括处理器和深度学习协处理器;其中:所述处理器,用于获取待处理图像,传输给所述深度学习协处理器,控制所述深度学习协处理器对所述待处理图像中的目标物体进行检测,并将检测结果和检测过程中产生的中间数据发送至外部存储模块存储;所述待处理图像包括所述图像采集模块采集的原始图像和所述中间数据;所述深度学习协处理器,用于对所述待处理图像进行第一次检测,得到包含所述目标物体的局部图像,对所述局部图像进行第二次检测,得到所述检测结果,所述第一次检测和所述第二次检测产生所述中间数据。
25.通过fpga实现soc片上计算模块功能,进行物体检测可以清楚地知道深度学习推理计算的时延并且该系统具有较高稳定性,soc片上计算模块先将全局视图的所述待处理图像缩放至较小尺寸,进行所述目标物体的大致检测,再根据所述目标物体在全局视图的所述待处理图像中的信息对相应局部视图的局部图像进行采集及推理检测,使得每个神经网络模型所需的计算量、模型参数大大降低,提高了检测效率。
附图说明
26.下面结合附图对本发明作进一步的说明。
27.图1为本发明实施例提供的一种基于fpga的目标快速检测系统的框图;
28.图2为本发明实施例提供的深度学习协处理器的框图。
具体实施方式
29.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
30.本发明实施例提供了一种基于fpga的目标快速检测系统。参见图1,图1为本发明实施例提供的一种基于fpga的目标快速检测系统的框图,包括:soc片上计算模块、图像采集模块和外部存储模块;所述soc片上计算模块基于fpga实现,包括处理器和深度学习协处理器(以下称为协处理器);其中:
31.所述处理器,用于获取待处理图像,传输给所述深度学习协处理器,控制所述深度学习协处理器对所述待处理图像中的目标物体进行检测,并将检测结果和检测过程中产生的中间数据发送至外部存储模块存储;所述待处理图像包括所述图像采集模块采集的原始图像和所述中间数据;
32.所述深度学习协处理器,用于对所述原始图像进行第一次检测,得到包含所述目标物体的局部图像,对所述局部图像进行第二次检测,得到所述检测结果,所述第一次检测和所述第二次检测产生所述中间数据。
33.基于本发明实施例提供的一种基于fpga的目标快速检测系统,通过fpga实现soc片上计算模块功能,进行物体检测可以清楚地知道深度学习推理计算的时延并且该系统具有较高稳定性,soc片上计算模块先将全局视图的所述待处理图像缩放至较小尺寸,进行所述目标物体的大致检测,再根据所述目标物体在全局视图的所述待处理图像中的信息对相应局部视图的局部图像进行采集及推理检测,使得每个神经网络模型所需的计算量、模型参数大大降低,提高了检测效率。
34.一种实现方式中,处理器可以为软核处理器,或者处理器可以为硬核cpu+fpga或efpga形式的硬件计算平台。
35.一种实现方式中,soc片上计算模块与图像采集模块和外部存储模块通过系统总线进行信息交互。通过系统总线还可以连接外设设备对目标快速检测系统进行拓展满足更多应用需求。外设设备可通过配置的寄存器信息直接实现待处理图像的缩放功能。
36.一种实现方式中,在pytorch等深度学习框架下训练好全局视图目标检测模型和
局部视图目标检测模型,其中全局视图目标检测模型在全局视图下对目标物体进行检测,其中参与计算的全局视图图像(上述原始图像)为完整的全局视图图像在进行下采样处理后的图像。局部视图目标检测模型在局部视图下对目标物体进行检测,其中参与计算的局部视图图像(上述局部图像)的图像采集范围应满足对检测目标的检测需求,即图像采集范围应包含所需检测目标的检测信息。参与计算的局部视图图像为完整的局部视图图像在进行下采样处理后的图像数据,若完整的局部视图图像已经满足神经网络的输入要求,即完整的局部视图图像尺寸不大于神经网络的输入尺寸要求,则不再对完整的局部视图图像进行下采样操作。与直接对较大尺寸的、完整的全局视图图像进行基于深度学习的推理检测相比,先将全局视图图像缩放至较小尺寸下进行目标的大致检测,再根据目标在全局视图图像中的信息对相应局部视图图像进行采集及推理检测的方式中,深度学习推理模型的数量虽然增加,但每个神经网络模型所需的计算量、模型参数大大降低。多阶段的目标检测方式中总体计算量、存储需求相对而言大大降低。由于fpga、协处理器部分的存储资源相对有限,若直接对较大图像进行推理计算,大部分计算中间值无法暂存在fpga芯片内部的存储空间内,需要将其转移至片外的存储空间内。而对较小尺寸的图像进行推理计算,其中间计算值较大部分可暂存在fpga、协处理器内部的存储空间内,无需将其搬移至片外存储中,大大地减少了数据在fpga芯片与片外存储单元之间的交互,减少了系统功耗、加速了推理速度。由于第二阶段只对检测到的局部视图图像进行推理计算,检测图像中检测目标的特征相对背景更加突出,干扰因素较少,数据标注更加精准,所得到的最终推理结果也更加精确。由于fpga、协处理器的计算、存储资源相对有限,直接实现对大尺寸图像的检测任务难度较高、效果较差,通过采取多阶段检测的方法可以使得低端fpga具备完成高精度检测任务的能力。通过将对目标的直接检测任务划分成多阶段的检测任务,既降低了神经网络模型的整体复杂度,又提升了预测精度。
37.在一个实施例中,所述深度学习协处理器为非阻塞式;所述深度学习协处理器内建于cpu中与所述处理器连接,或者,所述深度学习协处理器作为所述处理器的加速器通过总线与所述处理器连接。
38.一种实现方式中,协处理器的设计为非阻塞式的,即无需等待协处理器完全完成加速计算或数据搬运才对处理器进行信息反馈。通过设计非阻塞式的协处理器和自定义指令,使得协处理器在接收到自定义指令后即可独立自主运行加速任务,此时处理器可继续执行其他任务,无需在等待协处理器完成相应运算工作后再继续其他工作。
39.协处理器进行加速计算时通常为阻塞式的,即处理器向协处理器发送相关加速计算任务信息后,需要等待协处理器完成加速计算的相关任务后反馈完成信息,处理器在接受到计算完成的反馈信息后才会继续执行其他任务。若处理器没有收到协处理器的完成反馈信息,则处理器将会一直等待,无法执行其他任务。考虑到深度学习计算的特性,在进行深度学习推理加速计算时计算时间较长,而处理器并没有实际参与到深度学习推理计算的过程中,加速计算部分完全由协处理器完成,若处理器在协处理器进行加速计算时一直处于等待状态,会导致处理器计算资源的大量浪费,以及对于重要的操作需求无法进行实时反馈。为了避免这种情况发生,本发明实施例设计了非阻塞式的协处理器与自定义指令,具体为:在需要协处理器进行深度学习加速计算或数据搬运时,处理器通过自定义指令向协处理器部分提供相关信息,在确认协处理器接收到相关信息后,处理器即可继续执行其他
优先级较高的操作,无需等待协处理器完成计算后才进行其他计算任务。对于协处理器计算或数据搬运是否完成问题,可通过自定义指令对协处理器的相关状态信息进行查询。
40.在一个实施例中,参见图2,图2为本发明实施例提供的深度学习协处理器的框图,所述深度学习协处理器包括指令处理单元、卷积神经网络模块、数据搬运单元、数据缓存单元和存储访问单元;
41.所述指令处理单元,用于通过指令通道接收所述处理器发送的控制指令,根据所述控制指令控制所述数据搬运单元、存储访问单元和卷积神经网络模块工作;
42.所述存储访问单元,用于通过存储访问通道接收所述待处理图像,向所述处理器发送所述检测结果和所述中间数据;
43.所述数据缓存单元,用于缓存所述待处理图像、所述检测结果和所述中间数据;
44.所述数据搬运单元,用于根据所述控制指令将所述待处理图像或者所述中间数据从所述数据缓存单元输入所述卷积神经网络模块,并将所述卷积神经网络模块的所述检测结果和所述中间数据缓存入所述数据缓存单元;
45.所述卷积神经网络模块,用于对所述待处理图像进行所述第一次检测和所述第二次检测得到所述检测结果和所述中间数据。
46.一种实现方式中,控制指令可以包括加速器配置类指令、数据搬运配置类指令、查询加速计算是否完成类指令、查询数据搬运是否完成类指令和计算结果反馈类指令。
47.在一个实施例中,所述处理器以cpu工作频率运行;所述指令处理单元、所述存储访问单元以及与所述指令处理单元相关的各寄存器接口以cpu工作频率运行;所述数据搬运单元和所述卷积神经网络模块以加速器工作频率运行;所述数据缓存单元与所述存储访问单元的接口以cpu工作频率运行,所述数据缓存单元与所述数据搬运单元的接口以加速器工作频率运行。
48.一种实现方式中,协处理器与外部存储单元之间进行交互的数据通过数据缓存单元进行暂存。在fpga上部署的处理器由于时序约束问题,其最大工作频率通常最高为几十兆,运行速度相对缓慢,若采用的工作时钟较大,则会因为时序约束不满足而导致处理器运行结果出错。协处理器部分由于是为特殊应用所设计的硬件电路,电路设计相对简单,时序约束较好,可工作在较高频率上。而协处理器与外界通过数据访存单元进行数据交互时需要通过处理器实现,导致了协处理器需要和处理器在同一个时钟频率下工作,否则接口时序易出现差错。但使协处理器以较低的cpu频率工作运行,就无法最大程度上发挥协处理器的计算性能。由于本发明实施例设计的深度学习协处理器可在非堵塞情况下实现加速计算,即处理器计算与协处理器计算可以相互独立,处理器工作频率与协处理器工作频率由于需要在数据访存通道进行数据的读写操作,故需要使得处理器与协处理器的工作频率一致,为解决协处理器工作频率需与处理器一致的问题,增加数据缓存单元。通过增加数据缓存单元将处理器及系统的工作频率与协处理器的工作频率分隔开,若需要进行数据的交互工作,可将需要读写的数据先暂存在数据缓存单元中,再由数据搬运相关单元实现数据的完整搬运工作。具体为:
49.若需要将协处理器外部的数据搬运至协处理器内部,则存储访问单元先以cpu时钟频率将数据搬运至数据缓存单元,数据搬运单元再以加速器时钟频率完成对数据的搬运,其中搬运目的地址为待计算数据缓存单元或模型参数单元。
50.若需要将协处理器内部的数据搬运至协处理器外部,则数据搬运单元先以加速器时钟频率将结果数据缓存单元中的待搬运数据搬运至数据缓存单元,存储访问单元再以cpu工作频率完成数据从协处理器内部到外部的搬运工作,即搬运至协处理器外部的存储单元。
51.在一个实施例中,卷积神经网络模块包括待计算数据缓存单元、模型参数单元、卷积神经网络加速器和结果数据缓存单元;
52.所述待计算数据缓存单元,用于缓存所述待处理图像和所述中间数据;
53.所述模型参数单元,用于保存训练好的卷积神经网络模型参数;所述卷积神经网络模型包括卷积计算单元、池化填充计算单元、特征相加计算单元、激活计算单元和全连接计算单元;
54.所述卷积神经网络加速器,用于根据所述卷积神经网络模型参数依次对所述卷积神经网络模型的各个计算单元进行加速计算,实现目标物体检测;
55.所述结果数据缓存单元,用于缓存所述中间数据和所述检测结果。
56.一种实现方式中,卷积神经网络模型划分成基本算子(卷积计算单元、池化填充计算单元、特征相加计算单元、激活计算单元和全连接计算单元)的组合。设计针对基本算子的、可配置的通用型硬件加速计算单元。可配置的硬件加速计算单元根据寄存器信息完成相应算子的计算任务。同一硬件加速计算单元可根据不同的寄存器信息,对不同尺寸下的输入数据进行相应的计算处理,即无需设计多个同类型计算的计算单元来适配不同尺寸的计算需求,大大降低了硬件资源的消耗情况。
57.卷积计算单元、池化填充计算单元、特征相加计算单元、激活计算单元和全连接计算单元,均采用流水线架构设计,使各计算单元的数据的读取、计算、输出可以同时进行,提升各计算单元的计算效率。
58.卷积计算单元设计思路包括:将需要计算的卷积核参数读入卷积计算单元中并暂存在卷积计算单元的寄存器中;对于输入特征图数据采取滑窗式顺序进行读取,并将读取到的特征图数据暂存在卷积计算单元的寄存器中。读入卷积计算单元的卷积核参数与位于特征图滑窗中的特征图数据进行卷积计算。综合考虑待计算数据的读取速率、计算结果的输出速率,进行结构性优化。具体为:
59.若限制整体卷积计算速率的因素为输入数据读取速率,则增加卷积计算单元一次性进行计算的卷积核个数,通过时分复用的方式,针对不同的卷积核进行卷积计算,提高乘法器资源利用率,提升整体计算速率。
60.若限制整体卷积计算速率的因素为输出数据写出速率,则减少卷积计算单元一次性进行计算的卷积核个数,减少不必要的硬件资源消耗。
61.通过采用滑窗式数据读取及计算的方式来减少计算单元中数据的缓存空间需求,降低了资源消耗。综合考虑加速器的特征图数据读取速率、结果数据输出速率以及乘法器资源等因素,对卷积计算单元进行结构性优化,实现整体卷积计算的高效运行,降低硬件计算资源的资源消耗。
62.池化填充计算单元设计思路包括:虽然填充操作计算量小,但产生了大量的数据交互以及存储需求,增加了系统整体推理计算的时间。由于大部分填充操作前为池化计算操作,故可将池化计算与填充计算进行层间融合计算,减少了特征图数据在fpga芯片与片
外存储器之间的交互,从而减少计算时间,减少功耗。根据填充使能寄存器信息,若需要进行填充操作,则池化填充计算单元参考中的寄存器信息在池化计算前、后以及过程中进行相应的填充操作。根据填充使能寄存器信息,若不需要进行填充操作,则池化填充计算单元只进行池化计算操作。池化计算通过滑窗的方式完成数据的读取及计算操作,减少硬件资源消耗。
63.特征相加计算单元设计思路包括:特征相加计算单元的状态机依次读取各输入特征图对应位置的数据,完成相加计算并将计算结果写入输出数据结果缓存单元中。完成对特征图同一位置的数据相加计算后,对各输入特征图后续位置上的数据依次进行数据的读取及计算,直到完成所有位置上数据的相加计算。
64.全连接计算单元设计思路包括:全连接计算单元从待计算数据缓存单元和模型参数缓存单元中读取全连接层输入列向量数据和全连接层的模型权重参数数据流,在全连接计算单元内部通过流水线架构实现乘加运算,减少硬件资源消耗。
65.激活单元设计思路包括:激活计算单元与输出数据直接相连,若需要对输出数据进行激活操作,则加速器可通过流水线计算方式对输出数据进行激活计算,省去了数据单独进行激活计算的搬运和计算时间。若不需要进行激活计算,则激活单元不对输出数据进行处理。
66.在一个实施例中,所述待计算数据缓存单元、所述模型参数单元、所述数据缓存单元和所述结果数据缓存单元为双端口bram,采用乒乓操作的方式;在所述卷积神经网络加速器执行计算操作的同时,所述待计算数据缓存单元、所述模型参数单元、所述数据缓存单元和所述结果数据缓存单元进行数据搬运。
67.一种实现方式中,通过采用乒乓操作可以实现计算操作与数据搬运的并行进行,提升所述卷积神经网络加速器的执行效率。
68.在一个实施例中,所述控制指令包括卷积神经网络加速器配置指令;卷积神经网络加速器配置指令用于获取待计算数据起始地址信息、模型参数数据起始地址信息、输出结果数据起始地址信息、是否进行激活操作信息、是否进行填充操作信息、全连接层权重参数数量信息和计算模式信息中的至少一种信息;所述计算模式信息为卷积计算模式、池化填充计算模式、特征相加计算模式和全连接计算模式中的一种。
69.在一个实施例中,所述处理器,还用于根据计算需求向所述深度学习协处理器的数据搬运相关寄存器进行参数配置,提供数据搬运相关信息;所述数据搬运相关信息包括数据搬运源地址信息、数据搬运目的地址信息和数据搬运长度信息。
70.以上对本发明的一个实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1