APP下载

基于嵌入式平台的行人行为检测系统设计

2023-10-22张文卓尉天成陈小锋

智能计算机与应用 2023年8期
关键词:中断行人像素

张文卓, 尉天成, 陈小锋

(西北工业大学自动化学院, 西安 710072)

0 引 言

视频是图像信号在时域的扩展和延续,随着计算机视觉学科的发展,越来越多视频中的信息可以通过一定的特征来进行提取和应用。 近年来,基于视频的人体异常行为分析和检测已经成为计算机视觉领域的热门研究方向,其主要内容是利用计算机视觉技术对视频中的人体行为进行语义特征分析,量化并形成行为表达[1]。 现已在智能视频监控系统、自动驾驶、智能人机交互等方面获得广泛应用。

研究可知,本世纪以来,计算机性能的不断优化和交通智能化的快速发展为行人异常行为检测技术提供了契机。 行人异常行为检测技术的相关研究也陆续推出了多项成果。 Moeslund 等学者[2]把人体行为检测分成4 种基本类型,包括元动作、个人行为、交互行为、群体行为。 Giorno 等学者[3]提出了一种基于大型视频异常检测的判别框架,将异常事件定义为与同一视频中的其他示例的不同示例。Ionescu 等学者[4]提出了通过去遮掩的方式在视频中捕捉异常事件。 Tran 等学者[5]提出了一种基于大规模监督视频数据集的深度三维卷积网络时空特征学习方法。 Hasan 等学者[6]提出了利用传统手工制作的时空局部特性学习一个完全连接的自动编码器,并建立了一个完全卷积的前向自动编码器来学习局部特征和分类器。 Xu 等学者[7]提出了一种用于复杂视频场景中异常事件检测的无监督深度学习框架。 Guan 等学者[8]用光流法对行为进行全局描述,通过假设连续2 帧图像之间没有光照变化,表征连续2 帧中的显式运动模式。

考虑到作为低功耗微处理器的DSP 有着系统可靠性高、灵活性高、编程难度较小等优势,国内外的研究学者和团队也提出了基于DSP 的一系列设计方案。 赵渊[9]采用混合高斯背景建模和运动目标检测跟踪等算法,并通过CCS 编译器优化、软件流水优化、算法代码优化、TI 相关函数库的使用等优化手段,在DM6437 硬件平台上实现了完整的视频目标跟踪系统。 刘哲夫在DM6437 嵌入式DSP平台上,通过对相关模块的运行周期进行分析, 结合硬件平台的特性,设计了一种有效的行人检测系统。 戴毅[10]利用DM8168 硬件平台,提出一种前景增强检测算法结合Centrist 算子的行人分类检测算法,实现了行人的有效检测。 Kehtarnavaz 等学者[11]设计了一种针对等待过马路的行人的检测系统,并在TMS320C40 平台上进行了开发和实现。 Wang 等学者[12]基于TMS320C6455 平台,提出了一种基于小波金字塔分解的算法, 通过多目标视觉跟踪器实现多目标检测。 许德衡等学者[13]对基于DM6437的行人检测硬件平台进行了设计,研究了一种能够检测路人行为并发出警告的DSP 汽车辅助驾驶行人自动检测系统。

1 行人检测算法设计

1.1 基于改进的ViBe 算法进行运动目标检测

ViBe(Visual Background Extractor)算法是一种像素级的图像处理算法。 不同于高斯混合模型等基于模型的方法,ViBe 算法是基于样本的方法[14-15], 用于前景检测并进行背景建模。 需要指出的是,本方法是对每个像素点存储了一个样本集,样本集中存储了该像素点的历史数据和相邻点的数据,从而判断是否属于背景点。 该方法不涉及浮点数和对算力要求较高的乘除法,计算量小,适合运用在嵌入式平台上。

ViBe 算法的优势在于运算简单、易于实现, 在检测效率和效果上都优于传统的运动目标检测算法。 但是存在着图像死区的问题,影响使用。 传统ViBe 算法出现的“死区”现象如图1 所示。 研究可知,在ViBe 算法中,如果视频第一帧含有运动目标,该像素也会用来填充背景像素,在前景像素分类过程中,就会出现死区现象。 第一帧图像中行人的初始位置在一段时间内被当成前景,虽然在此后的更新中会被正确划分为背景区域,但这个过程比较缓慢,见图1(a),在第10 帧时死区的存在还是比较明显的;由图1(b)可看到,在第100 帧图像时, 图像死区现象开始明显减缓,但仍存在;由图1(c)可看到,一直到175 帧时,图像死区才完全消失。

图1 传统ViBe 算法出现的“死区”现象Fig. 1 The “dead zone” phenomenon of traditional ViBe algorithm

本文采用获取前景运动属性的策略,如果一个像素点在之前更新中被判定为前景点,则在此后特定次更新之内不将该点纳入背景样本集中;但该点被判定为前景点超过这个次数,则更新其为背景区域像素点,从而在一定程度上缓解“死区”现象。 具体步骤为:

(1)算法初始化。 首先使用变量B0(i,j) 保存每个像素是否为初始的背景模型,若该点为第一帧图像的背景模型,则置为1;否则置为0。 另外对初始图像的各个像素都使用一一对应的变量Ci(i,j)专门保存该像素点被判定为符合条件点的次数,作为前景点计数器。

(2)前景检测。 利用ViBe 算法,分离前景和背景。

(3)背景更新。 经过前景检测,如果某像素点被判断为背景像素,则用来更新背景模型;若为前景区域,对比是否是初始的背景区域,若是则将原始背景区域内的像素替换为当前背景区域内的像素,并将标志位B0(i,j) 置为0。

(4)“死区”判定。 如果某像素点满足以下条件:

①当前被判断为前景点。

②不是初始的背景模型。

③与上一帧同一位置像素值Ii-1(x,y) 之差的绝对值小于TSD,则将前景点计数器Ci(i,j) 加1;否则将其减半。 直到Ci(i,j) ≥K时,则认为该点为“死区”,此处K= 10,Ci(i,j) 的更新逻辑见式(1):

(5)“死区”抑制。 对于被判定为“死区”的区域,使用当前检测得到的该区域像素值代替背景模型像素值,将计数器Ci(i,j) 置为0。

抑制ViBe 算法“死区”总体流程如图2 所示。经过以上的步骤,抑制“死区”的效果较为明显,效果见图3。 对比图1,可见当视频在第10 帧时,出现“死区”现象;在第34 帧时,“死区”已基本不存在;在第100 帧时,“死区”早已完全消失,而此时未经处理的ViBe 算法“死区”仍然存在。

图2 抑制ViBe 算法“死区”流程Fig. 2 Process of suppressing “dead zone”of ViBe algorithm

图3 改进后的ViBe 算法“死区”抑制情况Fig. 3 The “dead zone” suppression of improved ViBe algorithm

经过改进ViBe 算法对“死区”的抑制和闭运算操作,得到了较为清晰的前景区域,本文将前景区域作为感兴趣区域,通过对二值化后,求连通域的正外界矩形,即完成了所需感兴趣区域的提取。

1.2 HOG 特征和Haar-like 特征融合

在行人检测场景中,传统的Haar-like 特征对目标的纹理比较敏感,对水平和竖直的目标特征进行描述,缺点是准确性容易受到光照强度的干扰,且其对行人轮廓的描述效果一般;HOG 特征可以对梯度方向进行表示,对于局部明暗不同的情况,通过使用单一的检测特征进行行人检测难以满足要求,需要采取措施提升检测效果。

根据2 种特征的特点,本文使用HOG 特征进行行人的轮廓的检测,再使用Haar-like 特征进行行人上半身检测,2 种特征通过串行级联的方式进行组合。 首先使用HOG 特征描述行人轮廓,为了提高通过率,本文使用包含下半身遮挡的数据集进行训练,以便提高行人识别率,代价是虚警率随之变高。 在此后的判断中,使用Haar-like 特征对行人上半身进行再次识别,对比全身识别可以提高计算速度、减少运算量。 对上半身Haar-like 特征进行训练时,采用简单数据集进行训练,需要对其中上半身区域进行裁剪。 当通过2 次判断之后,就可以检测出行人检测结果,标注出行人所在区域。 具体级联方法如图4 所示。

图4 HOG 和Haar-like 特征穿行级联Fig. 4 Cross cascade of HOG and Haar-like features

使用上述特征融合后的检测方法进行检测,检测样本为INIRA 行人数据库中的测试样本,针对此测试集的测试结果见表1。

表1 行人检测效果统计Tab. 1 Statistics of pedestrian detection effect

由表1 中数据可知,传统的3 种描述特征应用在行人检测的场景中,HOG 特征的检测效果最优,Haar-like 特征次之,而LBP 特征虽速度快、但效果最差。 本文使用串行级联的方式将HOG 特征和Haar-like 特征结合的检测方法可以提升行人检测的性能,在提升识别率的同时将误检率和虚警率控制得较低。

2 行人异常行为检测算法设计

2.1 行人异常行为检测Hu 不变矩及其改进

图像的矩特征是指矩特征算子在特定的图像中有关几何特征的性质,简称几何矩。 通常将图像在缩放、平移和旋转等操作之后仍然保持不变的矩算子特征称为不变矩,常见的7 个Hu 不变矩为:

对于离散f(x,y) 数字图像的7 个Hu 矩组,设其进行比例因子为λ的缩放变换,可以得到:

经过变换之后的中心矩和标准化中心矩变为:

由式(4)~式(5)可知,尺度变换之后的中心矩μpq'和标准化中心矩ηpq'随着比例系数发生了变化,且同p、q、λ的值有关。 根据式(2)给出的Hu 矩的定义,可知在离散数字图像场景中,传统的7 个Hu矩不具有尺度不变性。

为了消去比例系数λ,构造新的不变矩组:

式(6)中的6 个不变矩组消去了比例因子,具有平移、旋转和尺度不变性。

2.2 基于Hu 矩不变性行人异常行为识别算法

本小节通过实验验证改进后的Hu 矩对行人动作的判别。 为了降低运算量,提高计算准确度,本文使用提取到的行人动作的二值图像进行判别。 首先对正常行走的3 帧图像进行验证,如图5 所示,提取3 幅图像的Hu 特征值,得到的结果见表2。

表2 正常行走的Hu 特征值Tab. 2 Hu characteristic values of normal walking

图5 正常行走二值图像Fig. 5 Binary image of normal walking

本文使用KTH 数据集作为样本数据集[16],由于其不含弯腰、下蹲、摔倒动作,因此使用自己拍摄的300 幅图像作为增补样本数据集,使用自己拍摄的一段2 min 54 s 长的视频作为测试数据,包含了行走、弯腰、下蹲、摔倒几种动作,每个动作提取50个测试数据,得到的特征值如图6 所示。 测试数据最终的识别准确率见表3,将7 种不同的行为,与样本数据集中的动作进行对比,通过欧式距离进行交叉匹配。

表3 动作检测准确率结果Tab. 3 Accuracy results of motion detection%

图6 不同姿态Hu 矩组特征图Fig. 6 Characteristic diagram of Hu moment group with different attitude

由表3 分析可知,基于原始Hu 矩的动作检测结果准确性一般,对“下蹲”动作的检测准确率只有70%;而改进后的Hu 矩对不同动作的检测准确率均有提升,主要原因就在于改进后的Hu 矩具有尺度不变性,因而对视频画面中行人占比大小具有良好的适应性。

3 系统在DSP 平台的实现

3.1 程序设计与移植

在本文中,要进行行人异常行为检测研究,依次需要实现的算法有感兴趣区域提取、行人检测、以及行为的判别。 基于前文理论分析,按照均衡负载的原则,将整体任务分配为以下几个子任务:通过改进型ViBe 算法进行前景检测、感兴趣区域提取、基于HOG 特征的行人区域筛选、基于Haar-like 特征的行人检测、改进型Hu 矩的计算。 为了保证核间通信的时效性,在数据流的基础上,设计了适用于多核场景的并行处理框架,如图7 所示。 该框架的特点为:

图7 多核并行框架下的程序流程Fig. 7 Program flow under multi-core parallel framework

(1)使用核间中断的方式进行同步触发,相较于传统的同步脉冲触发的方式实现简单。

(2)第一帧数据需要首先填满整个模型,以串行方式来驱动,而其余帧数据按照后驱机制的方式驱动。前驱机制使用到的核间中断ID为16,后驱机制中的核间中断ID各不相同。

(3)并行处理的实现可以使得多核的利用率大大提升,在8 个核的子任务分配均衡的理想情况下,处理一帧完整数据的耗时最多可以减少到原来的1/4,提高任务处理效率。

当特定核完成子任务后,该核共享内存区的数据已被处理过,失去了时效性,可以被覆盖。 从图像接收、运动检测、感兴趣区域提取、行人轮廓检测、行人头肩检测、Hu 矩特征值计算对被检测目标进行分析。 研究中给出的对该程序中的数据实时性进行分析的过程如图8 所示。

图8 多核并行处理实时性分析Fig. 8 Real time analysis of multi-core parallel processing

除了第一帧数据填满整个6 个核的过程中是串行执行外,其余帧均处于多核并行的状态。 设当前帧为第N帧,各个核均在执行运行,即处于满载状态,以上6 个核的状态如下:

(1)核5 响应来自核4 的ID为16 的核间中断,对当前第N帧进行改进后Hu 矩的计算,最终得到当前行为的特征值。 当第N帧处理完成后,发送ID为512 的核间中断,触发核4 进行行人检测操作。

(2) 核4 接收到ID为512 的核间中断, 对第N+1 帧数据执行Haar-like 特征行人检测,完成处理之后向核5 发送ID为16 的核间中断,触发第(1)步操作;发送ID为256 的核间中断触发核3 进行HOG 特征行人检测。

(3) 核3 接收到ID为256 的核间中断,对N+2 帧数据执行HOG 特征行人检测,完成后向核4 发送ID为16 的核间中断,触发(2)所述操作;发送ID为128 的核间中断触发核1 进行感兴趣区域提取。

(4) 核2 收到ID为128 的核间中断,对第N+3 帧进行感兴趣区域提取。 完成后发送ID为64 的核间中断触发核1 操作。

(5) 核1 接收到ID为64 的核间中断,对第N+4 帧数据执行ViBe 算法,为后续操作提供数据;向核0 发送ID为32 的核间中断触发核0 工作。

(6)核0 接收到ID为32 的核间中断,开始接受第N+5 帧图像并保存,完成后发送ID为16 的核间中断通知核1 已完成接受,可以开始处理。

通过以上操作,实现了多核并行图像处理操作。

3.2 实验结果分析

本文所采用的C6678 DSP 开发板由于不具备视频输入输出接口,因此为了分析视频序列设计了检测系统,其架构图和实物图分别如图9、图10 所示。 本文使用Qt Creator 集成开发环境搭建了上位机,其功能是通过千兆网口和DSP 开发板建立TCP通信,向DSP 开发板发送图像数据,接收到DSP 回传的图像数据进行显示。 C6678 DSP 运行行人异常行为检测算法,并将检测后的结果通过千兆网口发送回上位机。

图9 系统架构图Fig. 9 System architecture

图10 系统实物图Fig. 10 Physical diagram of the system

本文选取了KTH 数据集中大小为160×120 视频和通过手机拍摄的3 段大小为960×540 的视频作为测试数据,拍摄的测试数据通过摄像头平时静止拍摄,分为3 个不同的场景,其中包含了行走、跑步两种正常动作以及弯腰、下蹲、摔倒、挥手和拳击五种异常动作。 正常行走和摔倒场景的测试结果如图11 所示。

当系统检测出值得注意的异常行为,包括挥手、下蹲、弯腰、摔倒和拳击时,会在窗口右侧显示警告标志以及文字提示。 上述测试的检测结果见表4。由表4 可知,在较为简单场景中,本文检测效果较为理想,可以满足要求。

表4 测试准确率Tab. 4 Test accuracy

本文依次通过编译器优化、关键字优化、Cache存储优化、库函数优化四个步骤进行优化,处理一帧960×540 图像的时间可以达到150 ms 左右,满足了实时性的要求,表明了该系统可以实现简单场景下的行人异常行为检测功能。

4 结束语

本文在归纳总结行人检测和行为识别技术发展的基础上,围绕视频中的行人检测和行为识别问题,从检测行人和行为特征出发,重点研究了运动目标检测算法、基于特征融合的行人检测算法以及行人异常行为检测算法,设计了适合多核DSP 平台的行人检测和行为识别程序,完成了基于嵌入式平台的行人异常行为检测系统的开发。 首先,设计了基于运动目标检测的感兴趣区域提取算法,解决了ViBe算法出现的“死区”,实现了对运动区域的提取。 其次针对单一特征在行人检测过程中存在的问题,基于HOG 特征和Haar-like 特征的特点,设计了基于串行级联方式的特征融合方法。 然后,提出了基于改进后的Hu 矩不变性的行人异常行为检测算法,使用欧氏距离作为待检测动作Hu 矩组特征值相似程度的衡量准则,实现了几种行人行为的识别。 最后,设计了基于多核DSP 平台的行人异常行为检测系统。 通过实验测试,验证了系统功能的有效性。

猜你喜欢

中断行人像素
赵运哲作品
像素前线之“幻影”2000
毒舌出没,行人避让
“像素”仙人掌
路不为寻找者而设
跟踪导练(二)(5)
千里移防,卫勤保障不中断
我是行人
高像素不是全部
AT89C51与中断有关的寄存器功能表解