APP下载

车载环境下实时行人检测系统研究

2018-11-21邓健峰

自动化仪表 2018年11期
关键词:分类器行人预处理

邓健峰,谢 云

(广东工业大学自动化学院,广东 广州 510006)

0 引言

随着计算机视觉的发展,行人检测技术越来越受到人们关注[1]。许多行人检测方法被提出,如方向梯度直方图(histogram of oriented gradient,HOG)特征和支持向量机(support vector machines,SVM)分类算法[2];统计转换直方图(census transform histogram,CENTRIST)和SVM分类算法[3];深度学习的方法[4]等。然而,上述方法存在检测时间长的问题。此时可以采用并行运算降低耗时,如:文献[5]采用Opencv实现行人检测,但检测时间仍然较长;文献[6]采用CPU进行加速,对运行平台要求较高,而车载环境下设备性能有限,无法运行大功耗系统。嵌入式系统虽然性能不如计算机,但具有功耗低等优点,适合在车载环境下运行,目前广泛应用于机器视觉[7-9]等领域。

本文提出基于Zynq[10]的实时行人检测系统,利用Vivado HLS对图像进行预处理加速,采用CENTRIST特征作为行人特征,级联SVM作为分类算法,并通过试验分析验证了方法的可行性。

1 系统总体结构

行人检测系统主要由摄像头采集模块、硬件加速模块、图像缓存模块、显示模块、IP核初始化模块、CENTRIST特征提取模块和SVM分类模块组成。摄像头采集模块由OV7670摄像头采集图像,显示模块则通过VGA接口显示图像。其中,现场可编程门阵列(field programmable gate array,FPGA)部分主要通过封装IP核来搭建,包括摄像头采集模块、硬件加速模块和显示模块;ARM部分主要通过编写软件程序来实现模块功能,包括图像缓存模块、IP核初始化模块、CENTRIST特征提取模块和SVM分类模块。FPGA和ARM之间的数据交互是通过高级可扩展接口(advanced extensible interface,AXI)实现的。

系统总体设计框图如图1所示。

图1 系统总体设计框图

2 FPGA工程设计

2.1 视频采集IP核设计

本系统采用OV7670摄像头采集视频图像,通过串行摄像头控制总线(serial camera control bus,SCCB)协议[11]初始化摄像头,设置为RGB565、分辨率640×480的输出格式。在行同步有效、帧同步信号有效的情况下,每两个像素时钟周期拼接出一个16位的像素值,将16位像素值低位补0,合成一个24位的像素值输出,同时输出有效的写使能信号、行同步信号和帧同步信号。

2.2 图像缓存显示通路设计

FPGA中的图像数据主要以AXI-Stream与ARM通信,所以图像数据信号要转换成AXI-Stream的接口信号,而AXI-Stream不能直接和ARM相连[12]。因此本设计采用IP核视频直接内存访问(video direct memory access,VDMA)[13]作为传输工具,将AXI-Stream格式的数据流转换为AXI4 Memory Map格式,从而实现DDR3缓存。

当视频图像显示时,首先IP核AXI4-Stream to Video Out[14]将DDR3的数据转换为三元色(red,green,blue,RGB)格式,然后IP核视频时间控制器(video timing controller,VTC)[15]提供分辨率为640×480,扫描频率为60 Hz的视频图移阵列(video grapnics array,VGA)时序,最后只需要根据数据有效信号将24位数据转换为16位数据输出即可。

2.3 图像预处理加速IP核设计

在行人检测前需要进行图像预处理,图像预处理包括图像缩放、灰度化和Sobel边缘检测。在实际检测中,行人距离摄像头远近不同,造成行人成像大小不同,影响检测。需要按照比例对原图像进行缩放,然后对缩放后的图像进行检测,直到图像缩小到不小于滑动窗口的尺寸为止。图像缩放算法采用双线性插值法,缩放比例是0.8。在此基础上,对原图像进行灰度化,目的是降低原图像的信息量,减少干扰。灰度值g(x,y)公式如式(1)所示。

g(x,y)=0.3R+0.59G+0.11B

(1)

式中:R为像素H(x,y)中红色分量值;G为像素H(x,y)中绿色分量值;B为像素H(x,y)中蓝色分量值。最后采用Sobel边缘检测对灰度图像进行编码,使行人轮廓清晰显示。

由于在ARM环境下运行预处理算法耗时较长,而在FPGA环境下运行预处理算法比较复杂。Vivado HLS开发工具能够将高级语言(C/C++语言)编写的算法通过高层次综合,实现FPGA开发,同时获得良好的加速性能。所以本设计通过Vivado HLS实现图像预处理算法。

在Vivado HLS工程中,图像数据的输入输出都是AXI-Stream接口信号,其他参数(图像缩放系数)由ARM通过AXI4-Lite总线进行配置,选择的时钟频率跟全局时钟频率一致。当编写完成后,需要对工程进行仿真以检测是否有逻辑错误,准确无误后可以封装IP核并导入FPGA工程中。运行时,需要先设置IP核参数。硬件加速的优点是提高检测速度,降低系统功耗。表1为硬件加速IP核时序。

表1 硬件加速IP核时序

3 ARM工程设计

CENTRIST是统计局部区域统计转换(census transform,CT)值得到的直方图特征[16]。本系统采用了“CENTRIST+SVM”框架的行人检测算法。完整的行人检测流程如图2所示。

图2 行人检测流程图

3.1 CENTRIST特征提取

相比于HOG特征,CENTRIST特征主要描述行人轮廓信息,不需要归一化处理,这样能够减少计算时间。具体实现过程如下。

①本设计利用滑动窗口扫描法来检测图像中行人,滑动窗口的尺寸是36×108。预处理后,进行CT值计算。在图像中,定义某个像素点P(x,y),以P点为中心,从左到右,从上到下,定义周围8个点为P1,P2,…,P8,将P1,P2,…,P8的灰度值分别与P点相减,差值用二进制值代替,大于0则为0,其余则为1,并赋值到Pi中,如式(2)所示:

(2)

由式(2)得出8个二进制数值,将数值按下标从小到大排列,得到一个8位的二进制数值,数制转换为十进制,即为P点的CT值。遍历所有像素得到CT值图像。由于边缘像素没有8个像素比较,所以边缘像素不用计算。

②得到CT值图像后,采用滑动窗口扫描CT值图像进行特征向量计算。滑动窗口水平方向移动步长为9像素,垂直方向移动步长为12像素,窗口里分为9×4个图像小块,小块大小为9×12,上下左右相邻的小块合并成超块,超块移动步长与窗口移动步长一致,则整个窗口共有24个超块。对每个超块计算CENTRIST特征向量,超块的特征向量为256维,每个CT值对应一个维度。计算特征向量时,将CT值对应维度的数值加1,整个窗口的CENTRIST特征向量维度为256×24=6 144维。这样就完成了CENTRIST特征提取。

3.2 级联SVM训练和分类

本设计采用级联SVM分类器进行分类,包含线性分类器和非线性分类器,非线性分类器采用的核函数为直方图交叉核(histogram intersection kernel,HIK)。首先进行SVM分类器训练,完成后分别读取线性和非线性分类器(二进制文件)进行行人检测。分类器训练使用的是INRIA数据库,该训练库包含正样本集和负样本集,正样本集包含2 400个正样本,分辨率为36×108,负样本集包含1 200个负样本。接着进行线性分类器的训练,在负样本集中随机截取分辨率为36×108的图片和正样本一起训练分类器h1。然后用h1判别负样本集,生成的子负样本集,子负样本集和正样本一起训练分类器h2,用h2判别负样本集,生成另一个子负样本集,如此下去,直到至少有一个分类器能正确判别负样本集。最后将所有子负样本集合并,得到最终分类器S1。

线性分类器S1虽然精度不高,但能够排除大部分非行人区域,速度快;而非线性分类器正好相反。所以用线性分类器S1判别负样本集,生成一个新的负样本集,然后新负样本集和正样本集训练非线性分类器S2。

在进行在线检测时,首先用S1对滑动窗口提取的CENTRIST特征进行判别,判别公式如(3)所示。若式(3)成立,则记录滑动窗口的位置。

WTX≥0

(3)

式中:W为分类器的检测向量;X为CENTRIST特征向量。

当线性分类结束后,被记录的滑动窗口对应的CENTRIST特征输入到S2作进一步检测。倘若判别为符合行人特征,则输出滑动窗口位置。

3.3 窗口融合

当所有尺度下的图像检测完毕后,如果包含行人,则使用方框将滑动窗口的四点坐标相连接,但这样同一个行人会产生大小不一的方框,需要窗口融合算法将这些方框合并成一个方框。判别式如式(4)所示。

Recti>0.6rect且Recti>0.6RECTi

(4)

式中:Recti为分类矩形框与i类别合并矩形框的相交面积;rect为分类矩形框的面积;RECTi为i类别合并矩形框的面积。

当式(4)成立时,分类矩形框分类到i类别,否则是新类别。能对所有分类矩形框进行上述操作,将窗口都分类到相应的类别中;然后,剔除类别中个数少于阙值的矩形框,并计算保留类别中矩形框的平均位置;最后,舍去大矩形框里的小矩形框,输出融合窗口。

3.4 IP核VDMA初始化程序设计

因为FPGA和ARM之间图像数据传输是通过VDMA传输的。数据缓存地址和VDMA工作模式由相关寄存器负责控制[17],所以需要在软件部分初始化VDMA。初始化主要是软件程序通过AXI-Lite接口向VDMA中不同功能的寄存器进行赋值。FPGA工程包含VDMA1和VDMA2,两个VDMA都分配缓存起始地址、字节数。当开始检测时,VDMA1写通道中断,帧缓存暂停,读通道读取数据进行图像预处理加速。加速完成后由VDMA2将数据缓存到DDR3中,由ARM处理器进行行人特征提取分类。完成检测后,VDMA1写通道重新工作,以此循环。

4 系统测试与分析

本系统在Zynq-7000 SoC开发板进行测试。测试分为图像预处理效果测试和行人检测性能测试。行人检测性能测试结果通过准确率和覆盖率曲线描述。设定图片测试集中,实际行人个数为L,正确检测行人个数为P,错误检测为行人的物体个数为N,没有检测到的行人个数为S。

准确率和覆盖率计算公式如下所示。

(5)

(6)

4.1 系统的资源利用率和功耗

FPGA工程的资源利用率如表2所示。

表2 FPGA工程的资源利用率

从表2看出,FPGA消耗的逻辑资源比较多,这是因为FPGA工程使用IP核个数较多所致。IP核的工作频率统一为100 MHz,整个系统的片上功耗为1.920 W,达到预期效果。

4.2 图像预处理加速效果和耗时对比

图3分别是计算机、ARM处理器和硬件加速对图像预处理效果图。表3给出图像预处理耗时对比。计算机的配置为主频3.1 GHz的四核Inter Core i5-7 300处理器,内存为8 GB。

图3 图像预处理效果对比图

ms

对比图3(b)、图3(c)和图3(d)看出,三种方法均能实现图像预处理,视觉效果基本没有差别,硬件加速方法虽然颜色较暗,但行人轮廓显示较为清晰。从表3看出,硬件加速耗时仅为计算机的一半,由此可见,硬件加速能减少图像预处理时间。

4.3 行人检测耗时对比

行人检测耗时对比如表4所示。

对比表4可看出,本文提出的方法检测一帧图像所需时间比计算机和ARM方法要少,能有效提高检测速度。

表4 行人检测耗时对比

4.4 行人检测准确率对比

从ETH行人数据库截取20 s视频,对大约600帧图像进行测试。为了更好地评价本系统采用的行人检测算法,本文引入另一种行人检测算法(HOG特征和线性SVM)进行对比。表5为两种行人检测方法的检测率和误检率。

表5 两种行人检测系统检测率和误检率

从表5可看出,本文采用方法的检测率略高于HOG+SVM方法,主要由于本文方法采用级联SVM进行分类,提高了分类精度。图4是两种行人检测算法的准确率曲线。

图4 两种行人检测算法的准确率曲线

从图4可看出,CENTRIST和SVM检测算法的检测效果与文献[3]中的机器人的检测效果相差不大,但本系统是采用低功耗开发板完成的。

5 结束语

本文在Zynq-7000 SoC开发板上,进行嵌入式软硬件协同设计,结合CENTRIST特征向量和级联SVM分类器,设计了基于FPGA+ARM的行人检测系统。该系统已经进行了测试,证明本文提出的方法在效果上与计算机没有明显差别,但在运行时间、功耗和成本都有优势,达到准确度高、实时性好的应用要求。今后在行人特征提取算法上,可以适当增加不同行人特征来描述行人,提高鲁棒性;同时可以采用FPGA实现循环计算以提高运算速度。

猜你喜欢

分类器行人预处理
求解奇异线性系统的右预处理MINRES 方法
毒舌出没,行人避让
高COD二噻烷生产废水预处理研究
基于特征选择的SVM选择性集成学习方法
路不为寻找者而设
基于深度优先随机森林分类器的目标检测
基于预处理MUSIC算法的分布式阵列DOA估计
基于差异性测度的遥感自适应分类器选择
我是行人
曝光闯红灯行人值得借鉴