首页> 中国专利> 一种基于单目视觉的铁道路口火车识别预警系统

一种基于单目视觉的铁道路口火车识别预警系统

摘要

本发明公开了一种基于单目视觉的铁道路口火车识别预警系统,包括摄像头,摄像头通讯连接有数据处理系统,数据处理系统通讯连接有报警装置;数据处理系统包括PL端和PS端,其中,PL是逻辑部分,为FPGA端,PS部分为ARM端。本发明铁道路口火车识别预警系统具有功率低、体积小识别速度快等优点,它可有效地避免火车撞人的情况发生;在硬件电路架构上,输入存储器采用了类似乒乓操作的结构,保证了输入数据的准确性。实现了一边传输一边处理的流式处理架构,节省了处理时间和存储空间。进行多并行化处理,相当于16核计算,从而节省等待时间,系统采用mobilenet_v1 SSD算法进行目标检测,对加法计算使用koggle stone算法进行优化,减少了加法计算时间。

著录项

  • 公开/公告号CN113837054A

    专利类型发明专利

  • 公开/公告日2021-12-24

    原文格式PDF

  • 申请/专利权人 兰州大学;

    申请/专利号CN202111098925.0

  • 申请日2021-09-18

  • 分类号G06K9/00(20060101);G06F15/78(20060101);G06N3/063(20060101);G08B21/18(20060101);

  • 代理机构32390 苏州和氏璧知识产权代理事务所(普通合伙);

  • 代理人李晓星

  • 地址 730000 甘肃省兰州市城关区天水南路222号兰州大学

  • 入库时间 2023-06-19 13:49:36

说明书

技术领域

本发明属于计算机领域,尤其涉及一种基于单目视觉的铁道路口火车识别预警系统。

背景技术

基于单目视觉的铁道路口火车识别预警系统主要依靠目标检测算法实现其功能。目标检测算法是很多计算机视觉任务的基础,它可以对图像中的特定目标进行识别,并提供所识别特定目标的在成像中的坐标位置信息。在基于单目视觉的铁道路口火车识别预警系统中,目标检测算法识别火车在摄像头图像中的具体位置,得到火车在成像中的坐标,通过简单的单目视觉测距算法,便可得算出火车距离摄像头的距离,一旦火车距离摄像头的距离小于设定阈值,系统便会报警。

目前,在我国广大地区,火车识别预警系统依然主要依靠人力来对火车进行观测,当然也有一小部分地区已经采用CPU或GPU部署神经网络算法来实现火车识别预警系统。然而,无论是CPU还是GPU在实际部署中都面临着成本、速度和功耗这三大问题。对于GPU而言,虽然GPU的处理速度很快,但是由于GPU所需功耗巨大,且成本过高,不利于大面积部署。对于CPU而言,CPU虽然成本和功耗较GPU低,但是处理速度过慢,无法实时高效地地对普通列车和高铁进行精确检测、跟踪、识别。

发明内容

为解决上述问题,本发明公开了一种基于单目视觉的铁道路口火车识别预警系统。本发明铁道路口火车识别预警系统具有功率低、体积小识别速度快等优点,它可有效地避免火车撞人的情况发生;在硬件电路架构上,输入存储器采用了类似乒乓操作的结构,保证了输入数据的准确性。实现了一边传输一边处理的流式处理架构,节省了处理时间和存储空间。进行多并行化处理,相当于16核计算,从而节省等待时间。系统采用mobilenet_v1SSD算法进行目标检测,对加法计算使用koggle stone算法进行优化,减少了加法计算时间。

为实现上述目的,本发明的技术方案为:

一种基于单目视觉的铁道路口火车识别预警系统,包括摄像头,摄像头通讯连接有数据处理系统,数据处理系统通讯连接有报警装置;

摄像头用于拍摄照片,数据处理系统用于处理摄像头拍摄的照片,报警装置用当数据处理系统判断有火车驶过时进行报警;

数据处理系统包括PL端和PS端,其中,PL是逻辑部分,为FPGA端,PS部分为ARM端;

其中,PL端包括AccSystem单元。PS端主要包括fpgadrv单元、ssd_detection单元、Paddlelite单元、mobilenet_v1 SSD单元、lib单元和opencv单元;

AccSystem单元通讯连接fpgadrv单元,fpgadrv单元通讯连接ssd_detection单元,ssd_detection单元通讯连接lib单元、opencv单元和Paddlelite单元

AccSystem单元用于对卷积部分进行了加速;

fpgadrv单元为FPGA加速器在Linux端的驱动;

Mobilenet_v1 SSD单元英语存储SSD模型及参数;

Lib单元用于存储运行demo所需的库文件;

Ssd_detection单元用处存储demo源码;

Opencv单元用于存储编译好的opencv库;

Paddlelite单元用于装载paddle框架。

进一步的改进,所述ConvCore模块包括din_fifo单元、ConvCompute单元和dout_fifo单元;其中din_fifo单元用于对输入数据做缓存,ConvCompute单元对卷积核的输入数据做乘加运算,dout_fifo单元用于对计算之后数据做缓存。

进一步的改进,所述din_fifo单元包括Input fifo模块、Kernal fifo模块和Convheight计数器;Input fifo模块进行对输入图像数据的缓存,Kernal fifo模块进行权重数据的缓存;在数据进入时,input fifo单元对输入图像数据进行乒乓存储;Convheight计数器对每个批次kernel行数进行计数,每32bit打包成一个单元,之后通过复制32bit单元使变成512bit,最后将权重数据和图像数据进行拼接,将拼接后的结果输入到卷积计算单元。

进一步的改进,所述ConvCompute单元对于输入进来的图像数据与权重数据进行乘加操作;ConvCompute单元包括8*8乘法器单元和加法器阵列单元;其中权重数据和图像数据通过8X8乘法器单元进行乘法操作,然后结果进入到加法器阵列单元做加法计算;其中ConvHeght计数器对每个批次的kernel行数做计数操作,控制输出。

进一步的改进,所述ConvCompute单元多核并行计算的方式,即采用64个乘法器,并行地完成16个点的计算。

进一步的改进,所述加法器阵列单元做加法计算时,使用koggle stone算法进行优化;所述基于单目视觉的铁道路口火车识别预警系统采用mobilenet_v1 SSD算法进行目标检测。

进一步的改进,所述基于单目视觉的铁道路口火车识别预警系统的数据处理流程如下:

ARM端将数据按不同通道的同批次数据进行融合组装,然后每行数据为64bit,一行数据里包含16个点的数据,每个点所需要的数据按4字节进行切分组装,ConvHeight单元计算得到一行结果所需要的数据量对4字节向上取商,然后结果是按每行16个点进行输出到输出存储器,配置参数中仅配置计算深度和结果深度,ARM端需要先配置每个批次的kernel,然后将数据进行分片通过AXI总线转Avalon总线传输到FPAG端的加速核,加速核一边接受数据一边进行卷积计算,传输完成后,通过读状态寄存器得知数据是否处理完成,然后读回到ARM端重组数据。

进一步的改进,ARM端的输入存储器为2行存储结构,共128字节的存储器,而Kernel存储器为512行存储器,输出存储器为4096行存储器,可以存储65536个结果点数;在Avalon总线选择器,将Avalon地址线扩展到18bit的长度,在ARM端映射地址扩展到了4194304字节),而在FPGA端输入存储器只占了128字节,从而优化了Avalon总线地址映射选择的规则,且输入存储器采用类似乒乓操作的结构,保证了输入数据的准确性,实现了一边传输一边处理的流式处理架构,驱动程序中将需要卷积的数据进行通道融合和卷积核归一化,即任何卷积计算都视为1*1*多通道的卷积计算,提高卷积加速核的通用性。。

本发明对pl端的卷积核计算进行了法创新,对存算系统进行了重新设计,重新编写了可配置卷积核和存储系统。具体创新点如下:

1.将输入输出缓存和卷积计算放在一起,实现了流水式存算,边传边算大幅提高了卷积核的效率,减少了数据在总线上频繁交互浪费的时间。

2.输入缓存只打了两拍完成寄存,对输入卷积核的数据进行了乒乓式的缓存,同时扩大输出缓存的容量,提高存储和传输效率。

3.进行了多并行化的处理,数据多路进行存储和卷积运算。权重数据和图像数据同时进入卷积核,节省了一些等待时间。

4.对综合器进行了综合策略调整,使其布局布线更偏向提高系统速度,并且根据时序报告进行了一些时序优化。

5.对卷积的乘加运算进行优化,乘法充分利用dsp资源进行提速,每两次乘法调用了一个dsp资源。加法使用了时钟数路径均衡的加法矩阵,使用了高速的koggle stone算法的树形加法器,并插入寄存器生成流水线。

6.算法上进行了通道融合,一个批次的数据一次卷积运算全部处理,对卷积核进行归一化处理,将3乘3的卷积核转化为1 乘1的卷积核的形式,提高了运算速度,并且通用性强。

7.系统采用mobilenet_v1 SSD算法进行目标检测。

附图说明

图1为FPGA整体的整体架构示意图;图2为Accsystem的架构示意图;

图2为ConvCore模块的架构示意图;

图3为din_fifo单元的架构示意图;

图4为ConvCompute单元的架构示意图;

图5为卷积计算模块的架构示意图;

图6为乘法计算单元的架构示意图;

图7为加法器单元的架构示意图;

图8为卷积计算单元的并行计算架构示意图。

具体实施方式

以下结合附图及实施例对本发明做进一步说明。

本系统主要由摄像头、FPGA、报警装置构成。摄像头主要用于识别铁道上的火车与人。FPGA用于处理和计算摄像头传来的视频数据,并得到识别结果。报警模块在接收到识别到人和火车的信号后报警,用来提醒周围的人注意。其中FPGA开发板型号为Altera的C5SOC。

如图1所示,FPGA整体分为两大部分,分别为PL部分和PS部分,PL是逻辑部分,为FPGA端,PS部分为ARM端。其中,PL端主要包括AccSystem单元、算子单元以及存储单元,PS端主要包括fpgadrv单元、ssd_detection单元、Paddlelite单元、mobilenet_v1 SSD单元、lib单元、opencv单元组成。

PL端主要实现了卷积的加速;PS端主要为PL传递图像数据而且还需要将卷积后的结果进一步处理。系统整体框图如图1所示,各单元具体功能如下所示。

AccSystem:单元主要对卷积部分进行了加速。数据通过Avalon总线进入到卷积核中,通过卷积核对权重数据与图像数据进行卷积操作。

Fpgadrv:Fpgadrv为FPGA加速器在Linux端的驱动。

Mobilenet_v1 SSD:Mobilenet_v1 SSD存储了SSD模型及参数。

Lib:Lib包含了运行demo所需的库文件。

Ssd_detection_src:包含了demo源码。

Opencv:编译好的opencv库。

如图2所示,Accsystem由AvalonBusUpSizer ABUS模块、AvalonBusMatrix MTX模块、ConvCore模块和sysCtrl模块组成。Sysctrl模块通过配置模式寄存器,完成了对卷积核寄存器的配置。

AvalonBusUpsizer ABUS模块将数据进行总线适配,将128bit的总线扩展成512bit。

AvalonBusMartix MTX模块对进入该模块中的数据进行判断与仲裁,根据地址位进行适配,判断其是为图像数据还是卷积核数据,同时将卷积核计算结果置于总线。ConvCore模块主要对输入进来的数据做卷积运算。

如图3所示,ConvCore模块由din_fifo单元、ConvCompute单元、dout_fifo单元组成。其中din_fifo主要对输入数据做缓存,ConvCompute主要对卷积核的输入数据做乘加运算,dout_fifo主要对计算之后数据做缓存。

din_fifo:如图4所示,din_fifo主要完成了对输入的权重数据及图像数据进行缓存并拼接输入到卷积计算模块中。如图5所示,该图为din_fifo的结构图。Input fifo完成了对输入图像数据的缓存,Kernal fifo完成了对权重数据的缓存,在数据进入时,inputfifo单元进行乒乓存储。Convheight对kernal每个批次kernel行数进行计数,每32bit打包成一个单元,之后通过复制32bit单元使其变成512bit。最后将权重数据和图像数据进行拼接,将拼接后的结果输入到卷积计算单元。

ConvCompute:如图5所示,卷积计算模块的功能在于对于输入进来的图像数据与权重数据进行乘加操作。其中权重数据和图像数据通过8X8乘法器单元进行乘法操作,其结果进入到加法器阵列单元做加法计算,其中ConvHeght计数器对每个批次的kernel行数做计数操作,控制输出使能。

乘法器单元:对于乘法计算单元,如图6所示。我们利用4个乘法器对输入进来的图像数据与权重数据做8bit定点数乘法计算,然后将结果输入到加法矩阵模块进行加法运算,这样我们就完成了一个点的运算。

加法器矩阵单元:图7所示,加法器单元由三层加法器组成,数据首先通过32个加法器完成一次加法操作,接着将计算结果再进行一次加法操作,之后将数据进行寄存后再通过一层加法器完成自加操作。对于加法器,我们选择了Koggle-Stone 树形加法器并行算法,该算法极大地提升了加法运算的速度。

为了增加卷积计算单元的计算速度,我们采取多核并行计算的方式,即采用64个乘法器,并行地完成16个点的计算,使卷积计算单元的计算能力达到最大化。

尽管本发明的实施方案已公开如上,但并不仅仅限于说明书和实施方案中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里所示出与描述的图例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号