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

一种基于FPGA的混合高斯模型的图像处理方法

2022-07-02 11:06:53 来源:中国专利 TAG:

一种基于fpga的混合高斯模型的图像处理方法
技术领域
1.本发明属于实时视频分析技术领域,具体涉及一种基于fpga的混合高斯模型的图像处理方法。


背景技术:

2.随着信息技术的发展,世界上无时无刻都在产生海量的新数据,许多智能技术的应用都依赖于对这些数据的计算和处理。传统方式采用中心化的计算模式,将边缘位置产生的数据,通过网络传输到中心服务器进行计算,再将计算结果通过网络送回等待结果的边缘端。但是,随着数据量的不断增长,网络逐渐无法承担如此巨大的数据传输任务,在交通检测、安防监控等对实时性要求较高的场景,网络传输时延成为制约其应用的瓶颈。
3.近年来,边缘计算的兴起,给实时视频分析领域带来了广泛而深刻的影响。边缘计算通过将计算任务从中心服务器下沉到边缘端的计算设备上,从而在根本上解决网络传输时延的问题。边缘计算依赖于各种边缘设备的计算能力,fpga相较于嵌入式cpu具有更高的性能,相较于asic拥有更好的灵活性,同时fpga成本相对低廉,因此fpga是边缘计算的理想设备。然而,fpga本身的时钟频率较低,同时开发门槛较高,如果缺少合理有效的设计很难获得满意的效果。
4.混合高斯模型是计算机视觉领域中一种常见的背景提取方法,用于在视频中进行运动检测,广泛的应用于交通检测、安防监控等实时视频分析领域。混合高斯模型对视频序列中不同位置的像素分别建立背景模型,来判断新的一帧图像中各像素属于背景还是前景,并在线对背景模型进行更新,从而识别出视频中运动的前景。
5.然而,现有的混合高斯模型在fpga上实现时,在性能和资源占用上存在如下问题:由于混合高斯模型需要为图像中的每个像素分别建立并维护相应的背景模型,导致计算量较大,并且fpga的片上内存不足以存储高分辨率下的背景模型参数,因此在fpga上实现混合高斯模型的背景提取方法,存在计算性能和内存带宽的瓶颈,在处理速度和资源占用上均表现不佳,无法满足现在日益增长的高清视频实时智能分析的需求。


技术实现要素:

6.本发明的目的是克服现有技术的不足而提供一种基于fpga的混合高斯模型的图像处理方法,用于在边缘计算场景下进行运动目标检测任务,以软硬件协同优化的方式,充分发挥fpga硬件的并行性,提高片上资源的利用率,从而可以在占用更少的fpga片上资源情况下获得更高的处理速度,以满足控制成本以及在fpga上进行后续任务处理的需求。
7.本发明的技术方案如下:
8.一种基于fpga的混合高斯模型的图像处理方法,其特征在于:包括如下步骤:
9.步骤s1:构建fpga模块设计和arm系统的初始化配置,并将原始图像存储在ddr上;所述步骤s1包括如下步骤:
10.步骤s1-1:在fpga模块设计中添加ip核以及zynq软核,配置好参数并连接逻辑电
路接口;
11.步骤s1-2:在arm系统中通过系统驱动识别ip核,配置寄存器值,完成系统硬件的初始化;
12.步骤s1-3:通过arm处理器在ddr内存上初始化背景模型参数,并将原始rgb三通道图像存储在ddr上。
13.步骤s2:一组dma控制器将ddr上的像素和背景模型参数转化成数据流,传入混合高斯模型的核心计算模块,所述混合高斯模型的核心计算模块包括多个独立的ip核;
14.步骤s3:所述混合高斯模型的核心计算模块以并行化流水线的方式,分别计算出每一个像素属于背景或前景,然后更新背景模型的参数,并采用数据量化的方式对背景模型参数进行计算;所述步骤s3包括如下步骤:
15.步骤s3-1:通过fifo数据缓存器接受输入的像素和背景模型参数,按序传递给后续的逻辑电路;
16.步骤s3-2:通过带有权重的高斯分布函数判断当前像素属于背景还是前景;
17.步骤s3-3:判断当前背景模型能否描述输入的像素,如果判断符合,则增强该高斯分布在背景模型中的权重,对权重进行归一化并重新按照权重对高斯分布函数进行排序;如果判断不符,则删除权重最低的高斯分布,并在末尾添加以该像素作为高斯分布均值的新的高斯分布函数,并对权重进行归一化;
18.步骤s3-4:通过fifo数据缓存器将结果和更新后的背景模型参数输出到后续模块。
19.步骤s4:另一组dma控制器将核心计算模块的计算结果和更新后的背景模型参数储存在ddr上。
20.进一步地,步骤s2中,像素和背景模型参数在ddr与所述核心计算模块传输时采用axi4-stream协议。
21.进一步地,步骤s2中,所述fpga中的pl模块通过axihp总线连接到系统ddr上,每个负责背景模型参数传输的dma控制器分别占用一个hp接口,负责传输像素的dma控制器可共用hp接口。
22.进一步地,步骤s3中,混合高斯模型的核心计算模块采用全流水线的结构,内部循环采用循环展开的优化方式并行执行,使用高层次综合工具封装成可供重复调用的ip核。
23.进一步地,所述ip核的数量以及每个所述ip核的流水线启动间隔基于fpga的资源情况和任务需求确定,每个所述ip核均可在arm控制下共同协调完成对每一张输入图像的计算。
24.进一步地,采用公式对当前像素x的预测结果进行计算,以使混合高斯模型在所述ip核上执行时能够充分并行化与流水线化。
25.进一步地,步骤s3中,所述背景模型的参数包括高斯分布函数的权重、均值和方差,针对每种类型的参数数据分别进行定点数类型计算,用以减少fpga逻辑资源占用和ddr内存传输带宽的需求。
26.进一步地,在定点数类型计算后,采用公式对定点数类型计算前后的误差进行定量计算,用以评估混合高斯模型计算结果的准确性。
27.与现有技术相比,本发明的有益效果是:
28.1、本发明通过采用并行化流水线的方式,通过多个并行执行的ip核,有效地提高了混合高斯模型在硬件实现上的并行度,充分发挥了fpga硬件的并行性,提高了核心计算模块的整体吞吐率,降低处理时延,对于图像的背景模型具有更佳的处理速度;
29.2、本发明提出了针对背景模型参数的数据量化策略,对背景模型参数进行计算,大大降低了混合高斯模型在硬件实现上对ddr传输带宽的需求,也减少了对fpga片上资源的使用,提高片上资源的利用率,从而可以在占用更少的fpga片上资源情况下获得更高的处理速度;
30.3、本发明中在arm处理器的控制下,输入图像采用基于rgb三通道的原图像,不需要额外的数据转换模块,更适合于现代高清彩色摄像头,处理效果具有更好的识别能力;
31.4、本发明采用了灵活的硬件实现架构,可通过fpga的资源情况和任务需求,来制定不同的ip核的数量以及每个所述ip核的流水线启动间隔,从而可以满足各种场景需求和不同价位fpga开发板的部署。
附图说明
32.图1是本发明中fpga硬件实现的总体系统架构图;
33.图2是本发明中混合高斯模型的ip核结构示意图;
34.图3是本发明中提出的数据量化策略说明图;
35.图4是本发明中优化后的混合高斯模型流程图。
具体实施方式
36.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
37.如图1所示,本发明提出了一种基于fpga的混合高斯模型的图像处理方法,包括如下步骤:
38.步骤s1:构建fpga模块设计,并在系统中完成各个模块的初始化配置,并将原始图像存储在ddr上,具体包括如下步骤:
39.步骤s1-1:在模块设计中添加所需ip核以及zynq软核,设置ip核的全局时钟频率为100mhz,连接逻辑电路数据通路,通过axi-smartconnect(赛灵思的新型系统连接生成器将外设与用户设计整合在一起;smartconnect创建的定制互联功能能最好地满足用户的系统性能要求,从而能以更少的占用面积和功耗实现更高的系统吞吐量)将不同数据位宽的总线连接到zynq芯片的pl接口。
40.步骤s1-2:在arm系统中通过系统驱动识别各ip核,配置寄存器值,完成硬件初始化。
41.步骤s1-3:通过arm处理器在ddr内存上初始化背景模型参数,在预留的地址区域将所有数据全部初始化为0;对于存储在sd卡中的图像序列,通过xliffs文件系统库初始化sd卡系统,通过bmp图像文件编码格式读取图像中rgb各通道的像素值,存储在ddr上指定区
域。
42.步骤s2:通过dma控制器(dma的英文拼写是“direct memory access”,中文意思为直接内存访问,是一种不经过cpu而直接从内存存取数据的数据交换模式)将ddr上的像素和背景模型参数封装成axi4-stream协议数据流,传入混合高斯模型中的核心计算模块,所述混合高斯模型的核心计算模块包括多个独立的ip核;其中所述fpga中的pl模块通过axihp总线连接到系统ddr上;核心计算模块中每个计算单元分别配有两个独立的dma控制器;其中一个dma控制器负责像素数据的输入和输出,另一个dma控制器负责背景模型参数的输入和输出。
43.步骤s3:其中混合高斯模型中的核心计算模块能够实现模型的主要功能,所述混合高斯模型的核心计算模块以并行化流水线的方式,分别计算出每个像素属于背景或前景,核心计算模块中的每个ip核分别完成每一帧输入图像中指定区域的计算,由于像素之间的计算彼此独立,故直接采用沿图像横轴进行等价切分的方式来确定指定区域;计算完毕后通过axi-lite协议向arm发送完成信号,在arm的协调下将结果在ddr进行汇总。
44.具体的,如图4所示,步骤s3的功能实现包括如下步骤:
45.步骤s3-1:通过fifo数据缓存器(fifo的英文拼写是“first input first output”,即为先进先出的含义)接受输入的像素和背景模型参数,按序传递给之后的逻辑电路。
46.步骤s3-2:判断当前像素属于背景还是前景;背景模型由3个带有权重的高斯分布函数构成,如果当前像素与任一高斯分布函数所描述的分布均值的欧氏距离小于该高斯分布的方差的λ倍,则认为当前像素属于背景,否则,判定该像素为前景,其中λ为人工设置的模型超参数。
47.步骤s3-3:判断当前背景模型能否描述输入的像素;判定依据为像素与背景模型中任一高斯分布的均值的欧氏距离小于该高斯分布方差的μ倍,其中μ为人工设置的模型超参数,且μ<λ;如果判断符合,则增强该高斯分布在背景模型中的权重,对权重进行归一化并重新按照权重对高斯分布函数进行排序;如果判断不符,则删除权重最低的高斯分布,并在末尾添加以该像素为高斯分布均值的新的高斯分布函数,并对权重进行归一化。
48.步骤s3-4:通过fifo数据缓存器将结果和更新后的背景模型参数输出到接下来的模块。
49.步骤s4:通过另一组dma控制器将核心计算模块输出的结果和更新后的背景模型参数在axi-stream协议下传输到ddr。
50.本发明在arm处理器的控制下,采用dma数据流传输方式,将原始的彩色图像分发到多个独立的混合高斯模型中的计算单元上,将计算结果汇总并输出,同时对背景模型的参数进行更新;在混合高斯模型中的核心计算模块上,通过并行化流水线的方式,提高了核心计算模块整体的吞吐率,降低处理时延;其中混合高斯模型中的核心计算模块包括多个并行的计算单元,并且将计算单元封装成可供上层系统设计重复调用的ip核;采用数据量化策略通过修剪模型参数的位宽,降低资源占用,提高硬件实现的吞吐率。
51.本实施例中,如图2所示,所述步骤s3的混合高斯模型的核心计算模块中,ip核使用全流水线结构,将逻辑电路划分成为91个逻辑单元,每个逻辑单元后连接一个寄存器用于储存前一个时钟周期该逻辑单元的计算结果,并在下一个时钟周期来临时传输到下一个
计算单元中。这种方式尽管单个像素从输入到输出的时延变长,但硬件上在每个时钟周期都可以从外界接受新的输入,核心计算模块的整体吞吐率得到了提升,由于像素的数量级很大,每个计算单元可近似每隔一个时钟周期即可处理完一个像素,不同的计算单元之间设置有启动间隔,并且通过并行的方式分别处理不同的像素,使不同的像素之间的处理时间上存在并行,从而提高核心计算模块的吞吐率。使用高层次综合工具,流水线的启动间隔可以快速的进行设置,并将计算单元封装成可重复调用的ip核。
52.本实施例中,步骤s3中,为了使混合高斯模型在硬件上执行时能够充分的并行化和流水线化,对混合高斯模型采用新的计算公式,计算公式具体如下:
[0053][0054]
其中,p表示混合高斯模型对当前像素x的预测结果;由于fpga具有硬件并行性,因此各个像素可以独立调用背景模型进行计算,使用f表示对每个像素分别调用背景模型进行计算,即将像素进行并行计算的模式抽象化用子母f表示在公式中;wi是背景模型中第i个高斯分布函数的权重;gi是背景模型的第i个高斯分布函数;μ,σ分别是高斯分布函数的均值和标准差。
[0055]
步骤s3中,在存储时需要按照权重大小对高斯分布函数在内存中的位置进行排序,这样一旦发现某个高斯分布函数符合当前像素输入,即可省去后续的冗余计算,具体的计算公式如下:
[0056][0057]
其中,c表示图像的通道数;μc表示高斯函数在通道c的均值;λ是公式的阙值,低于这个值公式的输出就为0,λ需要根据具体的场景调试;σ是高斯分布函数的标准差。对于多通道图像,现实中通常采用r、g、b三通道,在计算背景模型预测结果与实际像素值的欧氏距离时,省略了在不同通道中的差异,对同一像素采用同一值,来减少需要存储的参数。输出0说明背景模型中的高斯分布函数可以很好的描述当前像素,因此该像素为背景。如果所有的高斯分布函数都不能描述该像素,则该像素为前景。
[0058]
对于背景模型参数的更新公式如下:
[0059][0060]
其中,μ(xj,t)表示t时刻j位置像素的高斯分布函数均值,由历史的高斯分布函数均值和当前的输入像素决定。对于不同通道的计算,其计算公式一致,因此在硬件中可以并行处理。
[0061]
每次更新完背景模型后,需要对背景模型中的高斯分布函数按照权重进行排序,因数量较少,采用冒泡排序的方式进行,即逐个比较相邻两个高斯分布函数的权重并交换
其位置,并在hls(hls是high-level synthesis的简称,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程)中插入“#pragma hls inline”指令来去除子函数层次结构。在使用高层次综合工具进行高层次综合的过程中,对于冒泡排序中的交换函数,使内联操作来消除函数结构,将自身逻辑融入到调用函数中,在rtl(寄存器转换级电路)中不再以独立的结构存在,方便流水线的执行。
[0062]
在本实施例中,混合高斯模型的背景模型由三种不同类型的参数构成,分别是高斯分布函数的权重、均值和方差。传统方法采用32位浮点数对上述参数进行存储和计算,一方面增加了fpga的资源占用,另一方面也造成了内存带宽的传输瓶颈。本发明采用数据量化策略的方式,其核心是在fpga上采用定点数代替浮点数进行计算,因此需要为不同类型的参数分别制定其定点数数据类型。
[0063]
如图3所示,首先判断每种数据类型的整数部分位宽:权重的整数部分取值范围只有0到1,采用一位数据表示即可;均值的整数部分与像素的位宽保持一致,设置为8位;方差的整数部分位宽设置为7位。对于小数部分的位宽,采用枚举的方式探索剩余的设计空间,将小数部分的位宽由高至低逐一进行测试,并借由输出的结果判断精度损失,在不影响混合高斯模型效果的前提下,选取小数位宽的最小值。最终选取的权重的小数部分位宽是10位,均值的小数部分位宽是16位,方差的小数部分的位宽是16位。整个背景模型的参数封装成256位宽的数据结构。
[0064]
用定点数代替浮点数之后,需要定量的分析误差对模型的结果带来的影响。本发明采用结构相似性对使用定点数前后的误差进行定量评估,能够专注于整体结果的相似度而不是机械地比较单个像素的值,具体的计算公式如下:
[0065][0066]
其中,x、y分别表示采用定点数前后混合高斯模型输出的图像结果;μ
x
、μy分别表示x和y的平均值;σ
x
和σy表示x和y的协方差;c1和c2是维持稳定的两个变量,由像素的动态范围决定。
[0067]
通过结构性相似性来定量的计算误差,能够保证结构相似性ssim>95%,在此基础上修剪模型参数的位宽,从而保证不影响混合高斯模型计算结果的准确性。
[0068]
尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围。
再多了解一些

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

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

相关文献