行人检测系统设计与实现

行人检测系统设计与实现

摘要:本文为提高行人检测系统运行效率,将ZYNQ-7000作为算法平台,联合应用HOG特征和AdaBoost级联分类器,设计出一款高运行效率的行人检测系统,通过实验分析,该系统检测效率与传统行人检测系统检测效率相同,但运行速度大幅度提升。

关键词:行人检测系统;ZYNQ-7000算法平台;HOG特征;AdaBoost级联分类器

随着行人检测技术水平的不断提高,各行业均不断引入行人检测技术,尤其在户外场景、汽车等移动设备中得到了极为广泛的应用,但传统行人检测技术检测算法复杂性高、灵活度低、便捷性差,进而导致其应用受到了严重限制,所以本文将基于ZYNQ-7000算法平台构建出一款高效行人检测系统,现报道如下。

1相关算法

1.1HOG特征。方向梯度直方图(HOG)属于一种特征描述子,能揭示行人轮廓信息,主要通过对局部方向梯度直方图进行合理应用,来构建特征集。HOG算法的核心思想为滑动窗口机制,可使图像局部目标的原有形状转化为梯度方向的密度分布[1]。HOG特征提取过程中,图像需被平均分成多个cell单元,再根据cell单元具体大小,计算每个像素梯度,并行梯度直方图统计,最后将cell单元以3×3形式拼为相互重叠的block块,获得图像HOG特征[2]。

1.2AdaBoost级联分类器。AdaBoost算法属一种迭代算法,利用若干弱分类器学习同一训练集,每个弱分类器可获得0、1两种结果,再将所有弱分类器组成一个强分类器[3]。

2算法优化与实现

利用串行结构提取特征是传统HOG算法常用方式,效率低,难满足实时性要求。为加快HOG特征提取速度,本文在传统HOG算法中融入现场可编程逻辑门阵列(FPGA)的三级流水线结构,从而实现HOG特征提取算法能够在一个时钟周期内完成梯度计算模块、cell和block单元统计直方图生成模块等更多工作内容,提高算法执行效率。然而,本文为能进一步提高算法效率,选用位移运算代替相对复杂的除法运算,这样不仅能促进归一化速度有效提高,同时还能对硬件资源的消耗进行有效控制。本文选用赛灵思公司开发的ZYNQ-7000片上系统实现这种算法,这种片上系统主要由PL和PS两部分组成,其中PL端更加适合提取模块等计算量较大和级联分类器模块等容易发生并行化的内容实现,而PS端则更加适合图片读取模块、显示控制模块等运算量相对较小但流程控制较为复杂的内容实现[4]。

2.1HOG算法硬件设计。此部分设计主要包括梯度计算、梯度幅值和角度、生成cell统计直方图和生成block统计直方图四方面内容。其一,梯度计算。梯度计算模块设计选用流水线结构,此模块由处理区和缓存区两部分组成,处其中处理区包含8个8bit位移寄存器(包含REG_1_1~2,REG_2_1~3,REG_3_1~3),如图1,时钟上升沿驱动后,8bit亮度值L首先进入REG_3_1,此时其他寄存值会按顺序进入下一级。检测80×60像素图片时,想要实现图片信息完全储存,缓存区必须设置2×57个8bit寄存器单元,采取这种方式可为计算梯度的亮度值一直处于处理区REG_1_2、REG_2_1、REG_2_3及REG_3_2中提供保障,同时这种方式无需一次性缓存所有像素值,只需要设计122个8bit寄存器缓存,从而一定程度上降低了硬件资源使用。其二,梯度幅值和角度。直方图生成过程中,无需获取具体角度值,仅需要明确对应段号,即可实现直方图生成,技术研发人员针对原有像素点的梯度幅值和角度计算公式进行简化,获得公式(1),其中将梯度方向表示为θn(h,w),并且θn(h,w)∈{0,1,2,…,7}。利用这种方法进行计算时,可使用4次乘法运算、4次比较运算以及1次减法运算替代相对复杂的tan-1运算,进而节省运算难度,提高运算效率。其三,cell统计直方图。单个像素点包含梯度幅值与梯度角度两部分,设计复杂性得以降低,将梯度幅值(9bit)与梯度角度(3bit)连接成1个数据(12bit)作为本模块输入内容。本文设计cell统计直方图依然采用流水线结构,其中处理区共包括25个寄存器单元,对应1个cell单元,并利用8×14bit表示生成cell单元统计直方图h,但由于各cell单元并不存在重叠关系,因此无需在每个时钟周期都进行计算。其四,block统计直方图。Block块由cell单元以3×3形式组成,其设计同样采用流水线结构完成,见图2,通过上一级生成的8×14bitcell统计直方图h依次流入下一寄存器单元,技术开发人员为有效简化归一化过程,研发出一种分段法近似法,这种方法将归一化计算公式中的归一化分母近似为以2为底的指数幂和,进而将除法运算转换为一种移位运算,使得算法运算速度在一定范围内可大幅度提升。

2.2AdaBoost级联分类器硬件设计。分类器硬件设计包含离线学习和硬件实现两部分。选用矩阵实验室(MATLAB)软件实现分类器的离线学习,在此期间,需要全面分析样本中每个block块单元的HOG特征值,并选择最大累计分布差值时对应的特征值与块坐标作为迭代输出弱分类器,作为一次迭代训练,连续500次。将重复弱分类器全部清除后,最终共获得弱分类器61个,将其联合为一个强分类器,利用这个强分类器匹配待检测图片和已训练完成分类器,再统计匹配成功数量,以此判定当前窗口是否存在行人,匹配成功个数高于阈值表明有行人,反之表明无行人。技术研发人员为明确最佳阈值,分别将阈值设置为10~50,最终发现分类器阈值设置为24时,检测效果最为优异。在FPGA的BRAM中固化训练获取分类器参数,是硬件设计阶段基本内容。首先在硬件弱分类器中设置一个8bitRAM,以保存特征值。例如本文选用80×60大小图像作为训练样本,通过乘法运算可获得14×10个block块,但乘法运算对FPGA产生资源消耗较大,若想减少资源消耗,则需要紧凑设计电路,同时还需要在设计过程中,利用宽度方向坐标与高度方向坐标拼接而成的8bit定点数,替代原有的宽度方向坐标与高度方向坐标乘积值,以达到节省资源的目的。据此,本文设计出图3所示分类器。

3实验结果及分析

本文选用以ZYNQ-7000为基础的ALINX7010开发板作为硬件平台,ARM主频设置为667MHz,FPGA主频设置为250MHz,选用VIVADO2017.4与XilinxSDK2018.1作为开发环境,选用C语言作为编程语言,行人数据库选用CSDN,选择大小为80×60图像作为样本数据,在数据库中随机抽取正负样本各2000个作为训练样本集,另随机抽取正负样本各3000个作为测试样本集。检测不同实现方式下算法的召回率(TPR)、精度(P)和误检率(FPR),结果显示三种实现方法检测准确性大致相同,详见表1;对比不同实现方式资源利用和时间消耗情况,结果显示本文应用的PS+PL实现方式资源占用更高,但运行时间明显低于PS实现方式,详见表2。

4结束语

本文构建基于ZYNQ-7000算法平台的行人检测系统,对FPGA特性进行了充分利用,对HOG算法和AdaBoost分类器均进行优化处理,同时充分结合ARM完成显示与控制,在保持同等检测效率的基础上,大幅度提升检测速度。

参考文献

[1]马忠磊,郎文辉,李晓明等.基于DSP+FPGA的矿井轨道行人检测系统设计[J].传感器与微系统,2018,37(5):97-100.

[2]张坤,柴波,王晓洁等.基于ZYNQ平台的测发控无线供电系统的设计与实现[J].计算机测量与控制,2020,28(8):102-106.

[3]黄才权,毕增军,周翠.基于ZYNQ的雷达显示终端远程操控系统设计[J].电子设计工程,2020,28(11):27-30.

[4]高树静,王程龙,董廷坤.基于ZYNQ的优化Adaboost人脸检测[J].计算机工程与应用,2020,56(6):201-206.

作者:李传志 单位:吉林工业经济学校