基于ZYNQ- 7000 算法平台的行人检测系统设计与实现

2020-12-10 04:10李传志
科学技术创新 2020年35期
关键词:直方图分类器梯度

李传志

(吉林工业经济学校,吉林 吉林132000)

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

1 相关算法

1.1 HOG 特征

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

1.2 AdaBoost 级联分类器

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

2 算法优化与实现

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

2.1 HOG 算法硬件设计

此部分设计主要包括梯度计算、梯度幅值和角度、生成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 梯度计算流水线结构示意图

其二,梯度幅值和角度。直方图生成过程中,无需获取具体角度值,仅需要明确对应段号,即可实现直方图生成,技术研发人员针对原有像素点的梯度幅值和角度计算公式进行简化,获得公式(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×14bit cell 统计直方图h 依次流入下一寄存器单元,技术开发人员为有效简化归一化过程,研发出一种分段法近似法,这种方法将归一化计算公式中的归一化分母近似为以2 为底的指数幂和,进而将除法运算转换为一种移位运算,使得算法运算速度在一定范围内可大幅度提升。

2.2 AdaBoost 级联分类器硬件设计

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

图3 分类器设计

3 实验结果及分析

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

表1 不同实现方式下算法检测准确性

表2 资源和时间消耗

结束语

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

猜你喜欢
直方图分类器梯度
带非线性梯度项的p-Laplacian抛物方程的临界指标
符合差分隐私的流数据统计直方图发布
学贯中西(6):阐述ML分类器的工作流程
基于朴素Bayes组合的简易集成分类器①
基于FPGA的直方图均衡图像增强算法设计及实现
基于特征选择的SVM选择性集成学习方法
一个具梯度项的p-Laplace 方程弱解的存在性
用直方图控制画面影调
基于AMR的梯度磁传感器在磁异常检测中的研究
基于差异性测度的遥感自适应分类器选择