首页 / 专利库 / 广播 / 基于段的缓存 / 基于DSP技术的安全帽配戴检测装置及其检测方法

基于DSP技术的安全帽配戴检测装置及其检测方法

阅读:11发布:2020-05-12

专利汇可以提供基于DSP技术的安全帽配戴检测装置及其检测方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及基于DSP技术的 安全帽 配戴检测装置及其检测方法,与 现有技术 相比解决了安全帽配戴检测难以实际应用的 缺陷 。本发明包括安全帽检测报警终端,所述监控摄像头的视频 信号 输出端与安全帽检测报警终端的 视频信号 输入端相连,安全帽检测报警终端的网口与路由器相连。本发明将安全帽佩戴状态的实时视频检测报警 算法 优化移植于DSP芯片上,通过DSP芯片直接判断出工作人员是否佩戴安全帽,再将判断结果无线传送给 服务器 。,下面是基于DSP技术的安全帽配戴检测装置及其检测方法专利的具体信息内容。

1.一种基于DSP技术的安全帽配戴检测装置,包括监控摄像头(2)、路由器(3)和服务器(4),路由器(3)与服务器(4)进行无线网络连接,还包括安全帽检测报警终端(1),所述监控摄像头(2)的视频信号输出端与安全帽检测报警终端(1)的视频信号输入端相连,安全帽检测报警终端(1)的网口(18)与路由器(3)相连;所述的安全帽检测报警终端(1)包括FPGA芯片(11)和DSP芯片(12),监控摄像头(2)的视频信号输出端与BNC视频接口(13)相连,BNC视频接口(13)的模拟信号输出端与模拟视频信号采集芯片(14)的输入端相连,BNC视频接口(13)的数字信号输出端与数字视频信号调理芯片(15)的输入端相连,模拟视频信号采集芯片(14)的输出端、数字视频信号调理芯片(15)的输出端分别与FPGA芯片(11)的数据输入端相连,FPGA芯片(11)的数据I/O端口上连接有Flash存储器(16)及DDR芯片(17),FPGA芯片(11)的数据输出端与DSP芯片(12)的数据输入端相连,DSP芯片(12)的数据输出端与网口(18)相连;基于DSP技术的安全帽配戴检测装置的检测方法,其特征在于,包括以下步骤:
41)监控摄像头(2)拍摄施工作业现场视频,并实时传输给安全帽检测报警终端(1);
42)安全帽检测报警终端(1)的BNC视频接口(13)接收视频信号后传给模拟视频信号采集芯片(14)或数字视频信号调理芯片(15),模拟视频信号采集芯片(14)或数字视频信号调理芯片(15)传给FPGA芯片(11)进行视频编程处理,视频编程处理为根据DSP芯片(12)反馈的率及分辨率需求,对输入视频信号进行插值采样颜色空间转换处理;
43)安全帽配戴检测,FPGA芯片(11)将处理后的数据发送给DSP芯片(12),DSP芯片(12)进行人员安全帽配戴检测,若发现有人员未配戴安全帽,则通过网口(18)经由路由器(3)发送报警信息给服务器(4);所述的安全帽配戴检测包括以下步骤:
51)DSP芯片(12)对内存资源进行合理分配;
52)DSP芯片(12)加载人员检测跟踪算法和安全帽佩戴状态检测算法,将人员检测跟踪算法和安全帽佩戴状态检测算法加载在4MB的共享SRAM中;
53)DSP芯片(12)加载模型数据,将人体模型数据、安全帽模型数据加载入112M的多核共用只读数据区;
54)DSP芯片(12)对人员检测跟踪算法和安全帽佩戴状态检测算法进行优化处理;所述DSP芯片对人员检测跟踪算法和安全帽佩戴状态检测算法进行优化处理包括以下步骤:
71)DSP芯片(12)人员检测跟踪算法和安全帽佩戴状态检测算法的特征提取阶段进行优化处理,其具体步骤如下:
711)使用SIMD指令优化循环运算;将所有循环加法处理改为循环两路加,其中,无符号整数加改为_dadd、有符号整数加改为_dsadd、浮点数加改为_daddsp;
将所有循环减法处理改为循环两路减,其中,无符号整数减改为_dsub、有符号整数减改为_dssub、浮点数减改为_dsubsp;
将所有循环乘法处理改为循环四路乘法,其中32位整数乘改为_qmpy32、浮点乘改为_qmpysp;
712)根据行列特点将所有图像的行列双层循环运算改为单层循环;
713)使用查找表优化梯度特征提取的梯度方向计算,如下:
7131)计算查找表,
定义2N+1个元素的浮点数组,弧度0到π的余弦值为1到-1,将1到-1细分成2N+1个值,其中,每个值相差1/N;
循环2N+1次使用反余弦函数计算每个余弦值的弧度值,依次存入定义好的数组:acosT[j]=acos((N-j)/(float)N),
其中,acos()为求反余弦函数,j为余弦值序号,acosT为存储弧度值的数组;
7132)梯度特征提取时根据余弦值获取对应弧度值,
将余弦值乘以N,被N减去后,下取整转换为整数:
j=(int)(N-aN),其中a为某个余弦值,j为计算得到的整数,
以其为下标从数组中取出已计算好的弧度值;
714)进行梯度方向直方图特征计算时,根据方向粒度将方向乘以数值转换为整数,将浮点数计算转换为整数处理;
设定直方图统计方向度数量为M,对每个梯度方向进行计算,将梯度方向除以π再乘以M,下取整转换为整数,以此整数参与后续计算;
715)采用流线编排技术对图像循环处理,
7151)设置编译选项为编译时生成汇编代码文件;
7152)根据一次循环代码中指令特点分析循环代码中运算数据依赖情况和流水线使用情况;
7153)将无依赖的指令编排至复用流水线,若单次循环无法充分复用流水线,则将多次循环组合成一次循环;
72)DSP芯片(12)人员检测跟踪算法和安全帽佩戴状态检测算法的滑窗检测处理阶段进行优化处理,其具体步骤如下:
721)采用查找表进行根据模型窗口内像素位置获得每个滑窗中对应像素位置的计算,
7211)遍历模型窗口所有像素,计算得到滑窗中对应像素位置,存入查找表,其表达式如下:
c[modelWidth*modelHeight*chs+modelWidth*i+j]=imgWidth*imgHeight*chs+imgWidth*i+j
其中:modelWidth为模型窗口宽度,modelHeight为模型窗口高度,imgWidth为检测图像宽度,imgHeight为检测图像高度,chs为通道序号,i为循环行号,j为循环列号,c为计算得到的查找表;
7212)使用该查找表得到所需滑窗像素位置及该位置上的特征值,
计算滑窗起始像素特征值指针
ptr=feats+modelWidth*top+left,
其中:feats为特征值数组,top为滑窗上部坐标,left为滑窗左边坐标;
在循环处理中以此获得某个像素上的特征值,
feat=ptr[c[fids[k]]],其中:fids为决策树模型中每个节点对应像素序号的数组,k为当前的节点编号;
722)采用流水线编排技术对决策树从树根到树叶进行循环跳转判断处理,
7221)将决策树结构的左、右跳转判断处理改为三目条件运算,去除分支处理;
7222)根据后一次循环依赖前一次循环特点,提前加载左、右子节点数据,由此编排好流水线指令;
55)DSP芯片(12)根据多核处理方法运行人员检测跟踪算法和安全帽佩戴状态检测算法。
2.根据权利要求1所述的基于DSP技术的安全帽配戴检测装置,其特征在于:所述DSP芯片(12)的型号为TMS320C678。
3.根据权利要求1所述的基于DSP技术的安全帽配戴检测装置的检测方法,其特征在于,所述的DSP芯片对内存资源进行分配步骤为进行DSP芯片(12)的各运算核心内存分配,其分配如下:
61)将32KB的L1P SRAM作于代码Cache,32KB的L1D SRAM作为L1的数据Cache,256KB的L2 SRAM作为L2的数据Cache,256KB的L2 SRAM用作运算核心的堆栈,4MB的共享SRAM用于加载算法代码;
62)将512MB的DDR用于存取各种数据,其中,512MB的DDR中前496M设为Cached模式,Cached模式的496M内存中112M用于存储多核共用只读数据,8个48M用于存储每个运算核心计算过程中使用的独立临时数据;
512MB的DDR中后16M设为Uncached模式,用于存储多核交互数据,Uncached模式的16M内存中前15M用于存储多核共用数据,8个128K用于存储每个运算核心与主进程交互的状态数据。
4.根据权利要求1所述的基于DSP技术的安全帽配戴检测装置的检测方法,其特征在于,所述DSP芯片根据多核处理方法运行人员检测跟踪算法和安全帽佩戴状态检测算法包括以下步骤:
81)定义运算核心,将DSP芯片(12)的8个C66x运算核心依次定义为运算核心0、运算核心1、…、运算核心7;
82)主进程配置EDMA控制器循环从FPGA芯片(11)获取图像帧存入512MB的DDR中后15M双缓存中;
83)主进程将人员及安全帽检测任务按一定时间间隔依次分发至空闲队列中一个运算核心,并将该核心移除空闲队列;
84)主进程操作EDMA控制器将512MB的DDR中15M双缓存中的最新图像帧传输至该运算核心的独立48M内存中图像数据buf中;图像帧号存入该核心128K交互内存区;
85)主进程等待图像帧传输结束后启动该核心进行分析处理工作,分析结束再加入空闲队列,分析花费时间和分析结果存入该核心128K交互内存区;
86)主进程读出128K交互内存区中分析花费时间,计算启动各核心分析任务间隔时间;
87)主进程读出128K交互内存区中的逐帧分析结果进行加权中值滤波处理,分析出当前安全帽佩戴状态并进行告警处理。
5.根据权利要求4所述的基于DSP技术的安全帽配戴检测装置的检测方法,其特征在于,所述根据行列特点将所有图像的行列双层循环运算改为单层循环包括以下步骤:
91)计算每行数据占用内存字节数与实际所需内存字节数之差:
pad=frame.step[0]-frame.channels()*frame.cols*frame.step[1],
其中,frame为图像帧对象,step[0]为图像帧行字节数,channels()返回图像帧通道数,cols为图像宽度,step[1]为每像素字节数;
92)采用一维指针指向图像数据首地址:
ptr=frame.data(),其中,data()返回图像帧数据首地址;
93)使用单层循环依次操作每个像素,采用三目条件运算符计算每个像素数据之间的地址偏移:
ptr+=(j<frame.cols-1)?frame.step[1]:frame.step[1]+pad,
其中,行中像素数据间偏移为单个像素数据长度,行尾像素数据偏移增加计算出的字节差pad,式中j为像素列号。

说明书全文

基于DSP技术的安全帽配戴检测装置及其检测方法

技术领域

[0001] 本发明涉及DSP技术领域,具体来说是基于DSP技术的安全帽配戴检测装置及其检测方法。

背景技术

[0002] 在工程建设的过程中,由于工作环境的复杂性,容易出现较多的安全事故,其中较常见的安全事故之一,便是在施工过程中高空坠物击向工作人员的头部,造成人员伤亡。因此现有的安全规范均要求进入作业施工现场的人员采用佩戴安全帽的规章制度,对进入作业施工现场的人员进行约束。其缺乏有效的全程自动监管,常出现工作人员不按规定配戴安全帽的情况。
[0003] 现有技术中也提出了一些针对安全帽配戴的监测装置,其主要分为硬件监测和软件监测两种。硬件监测是通过配戴安全帽时对硬件的触发进行监测,当脱下安全帽时触发解除,则进行报警,这种监测方式工作人员可控性强,实际应用价值不高。软件监测为通过摄像头拍摄现场图像,记录工作人员的工作状态,对其图像传送给后台服务器进行软件分析,通过服务器的分析计算判断出工作人员是否配戴安全帽,这种监测方式虽监测效果好,但视频图像的数据量过大,在施工场所这样的临时环境中,难以实现摄像头海量数据至服务器的有效传输,其也难以应用于实际。
[0004] 因此,如何设计出一种能够满足实际使用需要的安全帽配戴检测装置已经成为急需解决的技术问题。

发明内容

[0005] 本发明的目的是为了解决现有技术中安全帽配戴检测难以实际应用的缺陷,提供一种基于DSP技术的安全帽配戴检测装置及其检测方法来解决上述问题。
[0006] 为了实现上述目的,本发明的技术方案如下:
[0007] 一种基于DSP技术的安全帽配戴检测装置,包括监控摄像头、路由器和服务器,路由器与服务器进行无线网络连接,
[0008] 还包括安全帽检测报警终端,所述监控摄像头的视频信号输出端与安全帽检测报警终端的视频信号输入端相连,安全帽检测报警终端的网口与路由器相连。
[0009] 所述的安全帽检测报警终端包括FPGA芯片和DSP芯片,监控摄像头的视频信号输出端与BNC视频接口相连,BNC视频接口的模拟信号输出端与模拟视频信号采集芯片的输入端相连,BNC视频接口的数字信号输出端与数字视频信号调理芯片的输入端相连,模拟视频信号采集芯片的输出端、数字视频信号调理芯片的输出端分别与FPGA芯片的数据输入端相连,FPGA芯片的数据I/O端口上连接有Flash存储器及DDR芯片,FPGA芯片的数据输出端与DSP芯片的数据输入端相连,DSP芯片的数据输出端与网口相连。
[0010] 所述DSP芯片的型号为TMS320C678。
[0011] 基于DSP技术的安全帽配戴检测装置的检测方法,包括以下步骤:
[0012] 监控摄像头拍摄施工作业现场视频,并实时传输给安全帽检测报警终端;
[0013] 安全帽检测报警终端的BNC视频接口接收视频信号后传给模拟视频信号采集芯片或数字视频信号调理芯片,模拟视频信号采集芯片或数字视频信号调理芯片传给FPGA芯片进行视频编程处理,视频编程处理为根据DSP芯片反馈的率及分辨率需求,对输入视频信号进行插值采样颜色空间转换处理;
[0014] 安全帽配戴检测,FPGA芯片将处理后的数据发送给DSP芯片,DSP芯片进行人员安全帽配戴检测,若发现有人员未配戴安全帽,则通过网口经由路由器发送报警信息给服务器。
[0015] 所述的安全帽配戴检测包括以下步骤:
[0016] DSP芯片对内存资源进行合理分配;
[0017] DSP芯片加载人员检测跟踪算法和安全帽佩戴状态检测算法,将人员检测跟踪算法和安全帽佩戴状态检测算法加载在4MB的共享SRAM中;
[0018] DSP芯片加载模型数据,将人体模型数据、安全帽模型数据加载入112M的多核共用只读数据区;
[0019] DSP芯片对人员检测跟踪算法和安全帽佩戴状态检测算法进行优化处理;
[0020] DSP芯片根据多核处理方法运行人员检测跟踪算法和安全帽佩戴状态检测算法。
[0021] 所述的DSP芯片对内存资源进行分配步骤为进行DSP芯片(12)的各运算核心内存分配,其分配如下:
[0022] 将32KB的L1P SRAM作于代码Cache,32KB的L1D SRAM作为L1的数据Cache,256KB的L2SRAM作为L2的数据Cache,256KB的L2SRAM用作运算核心的堆栈,4MB的共享SRAM用于加载算法代码;
[0023] 将512MB的DDR用于存取各种数据,其中,512MB的DDR中前496M设为Cached模式,Cached模式的496M内存中112M用于存储多核共用只读数据,8个48M用于存储每个运算核心计算过程中使用的独立临时数据;
[0024] 512MB的DDR中后16M设为Uncached模式,用于存储多核交互数据,Uncached模式的16M内存中前15M用于存储多核共用数据,8个128K用于存储每个运算核心与主进程交互的状态数据。
[0025] 所述DSP芯片对人员检测跟踪算法和安全帽佩戴状态检测算法进行优化处理包括以下步骤:
[0026] DSP芯片人员检测跟踪算法和安全帽佩戴状态检测算法的特征提取阶段进行优化处理,其具体步骤如下:
[0027] 使用SIMD指令优化循环运算;将所有循环加法处理改为循环两路加,其中,无符号整数加改为_dadd、有符号整数加改为_dsadd、浮点数加改为_daddsp;
[0028] 将所有循环减法处理改为循环两路减,其中,无符号整数减改为_dsub、有符号整数减改为_dssub、浮点数减改为_dsubsp;
[0029] 将所有循环乘法处理改为循环四路乘法,其中32位整数乘改为_qmpy32、浮点乘改为_qmpysp;
[0030] 根据行列特点将所有图像的行列双层循环运算改为单层循环;
[0031] 使用查找表优化梯度特征提取的梯度方向计算,如下:
[0032] 计算查找表,
[0033] 定义2N+1个元素的浮点数组,弧度0到π的余弦值为1到-1,将1到-1细分成2N+1个值,其中,每个值相差1/N;
[0034] 循环2N+1次使用反余弦函数计算每个余弦值的弧度值,依次存入定义好的数组:acosT[j]=acos((N-j)/(float)N),
[0035] 其中,acos()为求反余弦函数,j为余弦值序号,acosT为存储弧度值的数组;
[0036] 梯度特征提取时根据余弦值获取对应弧度值,
[0037] 将余弦值乘以N,被N减去后,下取整转换为整数:
[0038] j=(int)(N-aN),其中a为某个余弦值,j为计算得到的整数,
[0039] 以其为下标从数组中取出已计算好的弧度值;
[0040] 进行梯度方向直方图特征计算时,根据方向粒度将方向乘以数值转换为整数,将浮点数计算转换为整数处理;
[0041] 设定直方图统计方向度数量为M,对每个梯度方向进行计算,将梯度方向除以π再乘以M,下取整转换为整数,以此整数参与后续计算;
[0042] 采用流线编排技术对图像循环处理,
[0043] 设置编译选项为编译时生成汇编代码文件;
[0044] 根据一次循环代码中指令特点分析循环代码中运算数据依赖情况和流水线使用情况;
[0045] 将无依赖的指令编排至复用流水线,若单次循环无法充分复用流水线,则将多次循环组合成一次循环;
[0046] DSP芯片人员检测跟踪算法和安全帽佩戴状态检测算法的滑窗检测处理阶段进行优化处理,其具体步骤如下:
[0047] 采用查找表进行根据模型窗口内像素位置获得每个滑窗中对应像素位置的计算,[0048] 遍历模型窗口所有像素,计算得到滑窗中对应像素位置,存入查找表,其表达式如下:
[0049] c[modelWidth*modelHeight*chs+modelWidth*i+j]=imgWidth*imgHeight*chs+imgWidth*i+j
[0050] 其中:modelWidth为模型窗口宽度,modelHeight为模型窗口高度,imgWidth为检测图像宽度,imgHeight为检测图像高度,chs为通道序号,i为循环行号,j为循环列号,c为计算得到的查找表;
[0051] 使用该查找表得到所需滑窗像素位置及该位置上的特征值,
[0052] 计算滑窗起始像素特征值指针
[0053] ptr=feats+modelWidth*top+left,
[0054] 其中:feats为特征值数组,top为滑窗上部坐标,left为滑窗左边坐标;
[0055] 在循环处理中以此获得某个像素上的特征值,
[0056] feat=ptr[c[fids[k]]],其中:fids为决策树模型中每个节点对应像素序号的数组,k为当前的节点编号;
[0057] 采用流水线编排技术对决策树从树根到树叶进行循环跳转判断处理,[0058] 将决策树结构的左、右跳转判断处理改为三目条件运算,去除分支处理;
[0059] 根据后一次循环依赖前一次循环特点,提前加载左、右子节点数据,由此编排好流水线指令。
[0060] 所述DSP芯片根据多核处理方法运行人员检测跟踪算法和安全帽佩戴状态检测算法包括以下步骤:
[0061] 定义运算核心,将DSP芯片的8个C66x运算核心依次定义为运算核心0、运算核心1、…、运算核心7;
[0062] 主进程配置EDMA控制器循环从FPGA芯片获取图像帧存入512MB的DDR中后15M双缓存中;
[0063] 主进程将人员及安全帽检测任务按一定时间间隔依次分发至空闲队列中一个运算核心,并将该核心移除空闲队列;
[0064] 主进程操作EDMA控制器将512MB的DDR中15M双缓存中的最新图像帧传输至该运算核心的独立48M内存中图像数据buf中;图像帧号存入该核心128K交互内存区;
[0065] 主进程等待图像帧传输结束后启动该核心进行分析处理工作,分析结束再加入空闲队列,分析花费时间和分析结果存入该核心128K交互内存区;
[0066] 主进程读出128K交互内存区中分析花费时间,计算启动各核心分析任务间隔时间;
[0067] 主进程读出128K交互内存区中的逐帧分析结果进行加权中值滤波处理,分析出当前安全帽佩戴状态并进行告警处理。
[0068] 所述根据行列特点将所有图像的行列双层循环运算改为单层循环包括以下步骤:
[0069] 计算每行数据占用内存字节数与实际所需内存字节数之差:
[0070] pad=frame.step[0]-frame.channels()*frame.cols*frame.step[1],[0071] 其中,frame为图像帧对象,step[0]为图像帧行字节数,channels()返回图像帧通道数,cols为图像宽度,step[1]为每像素字节数;
[0072] 采用一维指针指向图像数据首地址:
[0073] ptr=frame.data(),其中,data()返回图像帧数据首地址;
[0074] 使用单层循环依次操作每个像素,采用三目条件运算符计算每个像素数据之间的地址偏移:
[0075] ptr+=(j<frame.cols-1)?frame.step[1]:frame.step[1]+pad,[0076] 其中,行中像素数据间偏移为单个像素数据长度,行尾像素数据偏移增加计算出的字节差pad,式中j为像素列号。
[0077] 有益效果
[0078] 本发明的基于DSP技术的安全帽配戴检测装置及其检测方法,与现有技术相比将安全帽佩戴状态的实时视频检测报警算法优化移植于DSP芯片上,通过DSP芯片直接判断出工作人员是否佩戴安全帽,再将判断结果无线传送给服务器,避免了传统的海量视频数据与服务器的传输过程,对进入作业施工现场的人员及安全帽佩戴状态进行全程、实时的监控及报警,从而实现安全措施的自动监控和主动预防。本发明实施简便、检测准确度高、实时性强,利于推广和普及。附图说明
[0079] 图1为本发明的结构连接框图
[0080] 图2为本发明中安全帽检测报警终端的结构连接框图;
[0081] 图3为本发明中多核处理方法逻辑示意图;
[0082] 其中,1-安全帽检测报警终端、2-监控摄像头、3-路由器、4-服务器、11-FPGA芯片、12-DSP芯片、13-BNC视频接口、14-模拟视频信号采集芯片、15-数字视频信号调理芯片、16-Flash存储器、17-DDR芯片、18-网口。

具体实施方式

[0083] 为使对本发明的结构特征及所达成的功效有更进一步的了解与认识,用以较佳的实施例及附图配合详细的说明,说明如下:
[0084] 如图1所示,本发明所述的基于DSP技术的安全帽配戴检测装置,包括监控摄像头2、路由器3和服务器4,路由器3与服务器4按现有技术的方式进行无线网络连接。
[0085] 安全帽检测报警终端1用于对监控摄像头2所拍摄的工作人员配戴安全帽情况进行检测,其运行在传统服务器上运行的安全帽佩戴状态实时分析检测模,安全帽佩戴状态实时分析检测模块由施工人员检测跟踪模块和施工人员头部安全帽佩戴状态检测模块构成。监控摄像头2的视频信号输出端与安全帽检测报警终端1的视频信号输入端相连,监控摄像头2将拍摄的影像发送给安全帽检测报警终端1进行检测判断,安全帽检测报警终端1的网口18与路由器3相连,安全帽检测报警终端1将检测结果通过路由器3无线发送给服务器4,从而避免了视频数据在无线网络中的传输。
[0086] 如图2所示,安全帽检测报警终端1包括FPGA芯片11和DSP芯片12,其中,DSP芯片12的型号可以为TMS320C678,其具有8个C66x运算核心。BNC视频接口13用于传输监控摄像头2视频信号,监控摄像头2的视频信号输出端与BNC视频接口13相连,BNC视频接口13的模拟信号输出端与模拟视频信号采集芯片14的输入端相连,BNC视频接口13的数字信号输出端与数字视频信号调理芯片15的输入端相连,模拟视频信号采集芯片14用于采集模拟视频信号,数字视频信号调理芯片15用于采集数字视频信号。模拟视频信号采集芯片14的输出端、数字视频信号调理芯片15的输出端分别与FPGA芯片11的数据输入端相连,FPGA芯片11用于对视频信号进行编程处理。FPGA芯片11的数据I/O端口上连接有Flash存储器16及DDR芯片17,FPGA芯片11的数据输出端与DSP芯片12的数据输入端相连,DSP芯片12用于运行安全帽检测模块算法,DSP芯片12的数据输出端与网口18相连。在实际应用时,根据需要,还可对安全帽检测报警终端1加入拨码开关、串口、USB口等常规设计。
[0087] 在应用过程中,首先,根据需要将笔记本电脑通过调试串口接入安全帽检测报警终端1,以配置后台控制系统IP地址,使安全帽检测报警终端1与服务器4通过互联网进行连接;再使用DSP芯片12的网络协议以实现网络通讯功能;最后由后台控制系统发送控制命令,启动检测分析:拨码开关对应选择监控摄像头2输送过来的模拟或数字视频信号的类型,并送入相应的模拟视频信号采集芯片14或数字视频信号调理芯片15进行采集或调理,通过FPGA芯片11对输入的视频信号进行采样转换处理后,由DSP芯片12运行施工人员安全帽佩戴状态检测算法,检测分析出施工人员及其安全帽佩戴状态,如发现未佩戴安全帽的状况,则通过路由器3向服务器4发送告警信息,服务器4即可通知相关人员或使用现场设备进行警示。
[0088] 本发明通过DSP芯片12直接运行安全帽佩戴状态检测算法,依赖DSP芯片12的硬件特性对安全帽佩戴状态检测算法进行资源分配和优化处理,将传统复杂的安全帽佩戴状态检测算法应用在单片机芯片(DSP芯片12)上,使得在监控摄像头2安装处即可完成检测判断,无线网络只需传输数据量极小的判断结果给服务器4,满足施工现场临时网络环境的特殊要求。
[0089] 在此,还提供基于DSP技术的安全帽配戴检测装置的检测方法,包括以下步骤:
[0090] 第一步,监控摄像头2拍摄施工作业现场视频,并实时传输给安全帽检测报警终端1。
[0091] 第二步,安全帽检测报警终端1的BNC视频接口13接收视频信号后传给模拟视频信号采集芯片14或数字视频信号调理芯片15,模拟视频信号采集芯片14或数字视频信号调理芯片15传给FPGA芯片11进行视频编程处理,视频编程处理为传统的根据DSP芯片反馈的帧率及分辨率需求,对输入视频信号进行插值采样及颜色空间转换处理。
[0092] 第三步,安全帽配戴检测。FPGA芯片11将处理后的数据发送给DSP芯片12,DSP芯片12进行人员安全帽配戴检测,若发现有人员未配戴安全帽,则通过网口18经由路由器3发送报警信息给服务器4。
[0093] 其中,安全帽配戴检测包括以下步骤:
[0094] (1)DSP芯片12对内存资源进行合理分配。为保证程序的稳定性,对内存的使用规则为:存储在DDR中的各种数据(主要是大尺寸数据和全局变量)改为固定位访问方式,即每个数据指定固定位置存储,代码中使用结构体进行定义。函数内部使用的局部变量,则在系统堆栈中使用。其分配如下:
[0095] A、将32KB的L1P SRAM作于代码Cache,32KB的L1D SRAM作为L1的数据Cache,256KB的L2SRAM作为L2的数据Cache,256KB的L2SRAM用作运算核心的堆栈,4MB的共享SRAM用于加载算法代码。
[0096] B、将512MB的DDR用于存取各种数据,其中,512MB的DDR中前496M设为Cached模式,Cached模式的496M内存中112M用于存储多核共用只读数据(包括常量和模型数据),8个48M用于存储每个运算核心计算过程中使用的独立临时数据(包括分析用的图像帧数据和分析过程中使用的各类缓冲数据)。
[0097] 512MB的DDR中后16M设为Uncached模式,用于存储多核交互数据,Uncached模式的16M内存中前15M用于存储多核共用数据(包括两个图像帧Buf构成的双缓冲区),8个128K用于存储每个运算核心与主进程交互的状态数据(包括图像帧数据读写状态、当前图像帧序号、图像帧分析状态、图像帧分析结果、图像帧分析花费时间)。
[0098] (2)DSP芯片12加载人员检测跟踪算法和安全帽佩戴状态检测算法,将人员检测跟踪算法和安全帽佩戴状态检测算法加载在4MB的共享SRAM中。
[0099] (3)DSP芯片12加载模型数据,将人体模型数据、安全帽模型数据加载入112M的多核共用只读数据区;
[0100] (4)DSP芯片12对人员检测跟踪算法和安全帽佩戴状态检测算法进行优化处理。
[0101] 整个算法中有两块操作(阶段)耗费主要的时间,代码优化的地方即集中在此两块操作(阶段)上。一个阶段是图像多尺度滑窗特征提取(特征提取),每一帧图像进行分析前需要对整幅图像多尺度的提取几种特征,需要进行大量的浮点数循环计算。其需要循环对图像各区块进行大量重复操作,大部分操作为浮点运算,此处代码综合采用查找表、浮点转定点、流水线指令编排技术进行优化。另一个阶段是滑窗决策树森林遍历处理(滑窗检测处理),需要循环遍历决策树森林,逐步累积滑窗内各像素特征值并根据阈值进行决策树跳转判断。此部分操作为循环进行索引、浮点数加法、逻辑判断操作,先将浮点数计算转换为整数计算,然后对上述几种连续的不同操作进行流水线编排。经上述代码优化后,性能提升10倍有余,达到实用要求。
[0102] 其具体步骤如下:
[0103] A、DSP芯片12人员检测跟踪算法和安全帽佩戴状态检测算法的特征提取阶段进行优化处理:
[0104] a、由于DSP支持SIMD指令,移植时使用SIMD指令优化循环运算;将所有循环加法处理改为循环两路加,其中,无符号整数加改为_dadd、有符号整数加改为_dsadd、浮点数加改为_daddsp;
[0105] 将所有循环减法处理改为循环两路减,其中,无符号整数减改为_dsub、有符号整数减改为_dssub、浮点数减改为_dsubsp;
[0106] 将所有循环乘法处理改为循环四路乘法,其中32位整数乘改为_qmpy32、浮点乘改为_qmpysp。
[0107] b、特征提取时主要是对图像进行行和列的双层循环运算,根据行列特点将所有图像的行列双层循环运算改为单层循环,其包括以下步骤:
[0108] 计算每行数据占用内存字节数与实际所需内存字节数之差:
[0109] pad=frame.step[0]-frame.channels()*frame.cols*frame.step[1],[0110] 其中,frame为图像帧对象,step[0]为图像帧行字节数,channels()返回图像帧通道数,cols为图像宽度,step[1]为每像素字节数;
[0111] 采用一维指针指向图像数据首地址:
[0112] ptr=frame.data(),其中,data()返回图像帧数据首地址;
[0113] 使用单层循环依次操作每个像素,采用三目条件运算符计算每个像素数据之间的地址偏移:
[0114] ptr+=(j<frame.cols-1)?frame.step[1]:frame.step[1]+pad,[0115] 其中,行中像素数据间偏移为单个像素数据长度,行尾像素数据偏移增加前述所计算出的字节差pad,式中j为像素列号。
[0116] c、进行梯度特征提取时,需要进行梯度方向计算,需采用大量反余弦计算,非常耗时。在此,采用查找表进行优化,不再需要反复进行反余弦计算。
[0117] 使用查找表优化梯度特征提取的梯度方向计算,步骤罗列如下:
[0118] 首先,计算查找表,
[0119] 定义2N+1个元素的浮点数组,弧度0到π的余弦值为1到-1,将1到-1细分成2N+1个值,其中,每个值相差1/N;
[0120] 循环2N+1次使用反余弦函数计算每个余弦值的弧度值,依次存入定义好的数组:acosT[j]=acos((N-j)/(float)N),
[0121] 其中,acos()为求反余弦函数,j为余弦值序号,acosT为存储弧度值的数组。
[0122] 其次,梯度特征提取时根据余弦值获取对应弧度值,步骤罗列如下:
[0123] 将余弦值乘以N,被N减去后,下取整转换为整数:
[0124] j=(int)(N-aN),其中a为某个余弦值,j为计算得到的整数,
[0125] 以其为下标从数组中取出已计算好的弧度值。
[0126] d、进行梯度方向直方图特征计算时,需要对梯度方向进行大量的统计处理,根据方向粒度将方向乘以数值转换为整数,将浮点数计算转换为整数处理。
[0127] 设定直方图统计方向角度数量为M,对每个梯度方向进行计算,将梯度方向除以π再乘以M,下取整转换为整数,以此整数参与后续计算(累计、加权统计、与梯度幅度值整合计算等,减少浮点数计算)。
[0128] e、特征提取绝大部分均是对图像循环处理,采用流水线编排技术能较大幅度提高速度,采用流水线编排技术对图像循环处理。
[0129] 设置编译选项为编译时生成汇编代码文件;
[0130] 根据一次循环代码中指令特点分析循环代码中运算数据依赖情况和流水线使用情况(通常为少量数据加载、数据存储、大部分为乘法、加法运算);
[0131] 将无依赖的指令编排至复用流水线,若单次循环无法充分复用流水线,则将多次循环组合成一次循环。
[0132] B、DSP芯片12人员检测跟踪算法和安全帽佩戴状态检测算法的滑窗检测处理阶段进行优化处理。滑窗检测过程中,需要根据模型窗口内像素位置计算获得每个滑窗中对应像素位置,由于这种计算需要对每个决策树都要反复进行,在此采用查找表进行优化。
[0133] 其具体步骤如下:
[0134] (a)采用查找表进行根据模型窗口内像素位置获得每个滑窗中对应像素位置的计算。
[0135] 遍历模型窗口所有像素,计算得到滑窗中对应像素位置,存入查找表,其表达式如下:
[0136] c[modelWidth*modelHeight*chs+modelWidth*i+j]=imgWidth*imgHeight*chs+imgWidth*i+j
[0137] 其中:modelWidth为模型窗口宽度,modelHeight为模型窗口高度,imgWidth为检测图像宽度,imgHeight为检测图像高度,chs为通道序号,i为循环行号,j为循环列号,c为计算得到的查找表;
[0138] 使用该查找表得到所需滑窗像素位置及该位置上的特征值,
[0139] 计算滑窗起始像素特征值指针
[0140] ptr=feats+modelWidth*top+left,
[0141] 其中:feats为特征值数组,top为滑窗上部坐标,left为滑窗左边坐标;
[0142] 在循环处理中以此获得某个像素上的特征值,提高检测速度,
[0143] feat=ptr[c[fids[k]]],其中:fids为决策树模型中每个节点对应像素序号的数组,k为当前的节点编号;
[0144] (b)采用流水线编排技术对决策树从树根到树叶进行循环跳转判断处理,[0145] 将决策树结构的左、右跳转判断处理改为三目条件运算,去除分支处理;
[0146] 根据后一次循环依赖前一次循环特点,提前加载左、右子节点数据,得以编排好流水线指令,充分利用流水线长度,提升速度。
[0147] (5)DSP芯片12根据多核处理方法运行人员检测跟踪算法和安全帽佩戴状态检测算法。
[0148] 为提供算法总体性能,需根据算法特点充分利用每个核心的计算资源。算法除了对每一帧图片的大量运算外,还有很多流程控制和逻辑操作,另外,算法使用多尺度滑窗方法检测画面中的不同大小的人体,这些特点都决定了采用多核并行操作每一帧图片时各核心分配的计算资源难以均衡,无法发挥每个核心的计算能。如图3所示,本发明采用多核轮流处理每一帧图片的并行模式,即图像帧采集-分析任务发布模式。
[0149] A、定义运算核心,将DSP芯片12的8个C66x运算核心依次定义为运算核心0、运算核心1、…、运算核心7。
[0150] B、主进程配置EDMA控制器循环从FPGA芯片11获取图像帧存入512MB的DDR中后15M双缓存中。
[0151] C、主进程将人员及安全帽检测任务按一定时间间隔依次分发至空闲队列中一个运算核心,并将该核心移除空闲队列。
[0152] D、主进程操作EDMA控制器将512MB的DDR中15M双缓存中的最新图像帧传输至该运算核心的独立48M内存中图像数据buf中;图像帧号存入该核心128K交互内存区。
[0153] E、主进程等待图像帧传输结束后启动该核心进行分析处理工作,分析结束再加入空闲队列,分析花费时间和分析结果存入该核心128K交互内存区。
[0154] F、主进程读出128K交互内存区中分析花费时间,计算启动各核心分析任务间隔时间。
[0155] G、主进程读出128K交互内存区中的逐帧分析结果进行加权中值滤波处理,分析出当前安全帽佩戴状态并进行告警处理。
[0156] 本发明在安全帽检测算法被优化移植于DSP上,主要内容集中在多核处理、内存处理及代码优化三个方面。通过将安全帽佩戴状态实时视频检测报警算法模块优化移植于DSP上,可以对进入作业施工现场的人员及其安全帽佩戴状态进行全程、实时的监控及报警,且实施简便,实时性强,利于产品的推广和普及。
[0157] 以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明的范围内。本发明要求的保护范围由所附的权利要求书及其等同物界定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈