基于DSP的监控视频行人检测系统优化与实现*

2021-12-30 05:36路锦正
传感器与微系统 2021年1期
关键词:行人嵌入式背景

杨 柳, 路锦正

(西南科技大学 信息工程学院,四川 绵阳 621010)

0 引 言

随着社会和科学技术的不断发展,监控视频在人们的生活中起着越来越重要的作用,而监控中的行人往往包含更有价值的信息。因此,监控视频中的行人检测[1,2]成为机器视觉研究领域中不可或缺的一部分。为此,研究人员提出了各种算法及其相应的实现方案。如Dalal N等人[3]提出了用方向梯度直方图(histogram of oriented gradient,HOG)特征来描述行人特征的方法;杨涛等人[4]采用统计学习和相关场景模型结合的方法提高检测的鲁棒性等。

计算机视觉和半导体技术的发展,使基于嵌入式平台的实时图像处理非常广泛[5~7],嵌入式的固有优势使其具有广阔的应用前景。其中数字信号处理器(digital signal processor,DSP)具有强大的并行处理能力,具有通用C语言编程、集成方便、低功耗高性能等特点。经优化的高性能DSP平台方案,信号处理速度比通用的CPU快多倍,是行人检测算法的硬件实施优秀平台。

但许多行人检测算法复杂度高、耗时长,在嵌入式平台检测效率低、实时性差。为了解决这个问题,应用摄像机固定情况下,监控视频中背景大部分是静止,而感兴趣的行人是运动的先验信息,提出了一种基于嵌入式DSP平台的快速行人检测系统。

1 系统设计

首选设计适用的行人检测算法,再将该算法移植到以TMS320C6657处理器为核心的嵌入式DSP开发板;然后将待检测的视频图像传输到DSP中,进行行人检测;最后将检测结果保存。

2 嵌入式TMS320C6657硬件平台

TMS320C6657具备2个TMS320C66x单核子系统,可以在高达1 GHz的主频下工作,峰值运算能力为80GMACS。它可以执行每个周期 8 个单精度浮点MAC 操作、双精度和混合操作等。这些功能使得用于信号处理、数学和图像采集功能的DSP内核性能得到相当大的提升。

此外,TMS320C665处理器集成了大量的片上存储器,除了32 kB的L1程序和数据高速缓存区,每核配有1 024 kB专用存储器,可配置为可映射 RAM或缓存,进一步提升了内核的处理性能。

3 关键技术研究

3.1 行人检测算法

Dalal N等人提出的HOG+支持向量机(support vector machine,SVM)算法已经被证明具有良好的检测效果[3],但HOG特征检测中检测窗口多、识别速度慢。针对该缺点,对传统的HOG+SVM算法进行改进。先利用Vibe背景建模[8]提取视频中的运动前景区域,确定感兴趣目标窗口;再使用HOG+SVM算法对感兴趣目标窗口进行检测,标记出行人目标。其算法系统流程如图1所示。

图1 行人检测算法系统流程

该方法在传统的HOG+SVM算法基础上,通过过滤一部分背景区域,减少检测窗口的数目来提高系统的检测速率,并且在一定程度上减少了背景信息带来的误检。

3.1.1 Vibe算法运动区域检测

Vibe是一种像素级的背景建模、前景检测算法,检测过程主要包括三部分:

1)背景模型的初始化:用第一帧中相邻区域随机抽取的值填充背景模型。因此,Vibe的背景模型可以用M(x)={v1,v2,…,vN}来描述。式中M(x)为背景模型,vi为第一帧图像中点x处的第i个样本的像素值。

2)前景检测:为了对图像中点x处的像素v(x)进行分类,如图2所示,定义了以点v(x)为中心,半径为R的圆SR(v(x))。设定一个阈值#min,如果模型M(x)与SR(v(x))的交集大于阈值#min,则认为v(x)是背景像素点,否则认为是前景。

图2 Vibe前景检测模型

3)背景模型更新:Vibe算法采用随机替换策略,在时间和空间上随机更换背景模型中的样本集;同时为了解决死区的问题,加入前景点计数方法,即当前景点计数达到一定数目后则认为该点为背景,并以1/φ的(φ为抽样系数)概率去更新模型样本集中本像素点的值。

利用Vibe背景建模,获得输入视频的前景运动区域图像,并对前景图像进行腐蚀、膨胀和连通区域标记处理,改善检测结果,获得最终的感兴趣区域。

3.1.2 行人识别

在行人识别模块,采用HOG+SVM算法对提取出的感兴趣区域进行检测。计算过程如下:

1)对Vibe算法提取出来的感兴趣区域进行归一化处理,使其统一缩放为大小为64像素×128像素。

2)计算像素点(x,y)处的梯度幅值和梯度方向

α(x,y)=arctan(Gy(x,y)/Gx(x,y))

(1)

式中Gx(x,y)为水平方向梯度;Gy(x,y)为垂直方向梯度

Gx(x,y)=H(x+1,y)-H(1,y),

Gy(x,y)=H(x,y+1)-H(x,y-1)

(2)

式中H(x,y)为像素的像素值。

3)把输入图像分割成多个8像素×8像素的单元(cell),且把梯度方向平均划分为9个区间,对Cell内的每一个像素用梯度方向在直方图中进行加权投影,以获得这个Cell的梯度直方图。

4)将2×2个Cell组合成大的、空间上联通的区间块(Block),并把每个Block中所有Cell的特征向量串联起来获得Block的HOG特征。

5)用Block对输入待检测图像向右或向下滑动8个像素进行扫描,最后,所有Block的特征串联起来获得人体的特征。

6)使用INRIA样本库获取训练集,通过离线训练构建线性SVM行人分类器。将得到的目标区域的HOG特征加载到SVM分类器,实现行人目标的检测标记。

3.2 行人检测算法在DSP平台的移植与优化

3.2.1 行人检测算法在DSP平台的移植

OpenCV是一个开源的跨平台计算机视觉库,由一系列C语言函数和一部分C++类构成,具备多种语言接口,提供了多个计算机视觉和图像处理函数API接口。为了提高开发效率以及考虑到OpenCV与嵌入式DSP平台的兼容等问题,本设计选用OpenCV1.0作为平台移植和开发的工具。

行人检测算法中主要利用CV和CXCOR模块来完成图像数据的处理,为了确保相关函数能够跨平台使用,主要对CV模块和CXCORE模块进行移植。在移植过程中需要解决的问题:

1)对CV和CXCORE模块进行适当的精简与删减,减少代码大小,降低代码一致的冗余。例如,摒弃使用一些由C++编写的CV模块中的函数,选择使用相同功能的函数来代替,降低DSP处理器的工作负担。

2)CCS编译环境与VC编译环境下的数据类型存在一定的区别,在移植的过程中需要对部分数据类型进行相应调整改写,使其能够在CCS中正常使用。本设计中,当代码中出现Bool类型时,移植到CCS编译环境下时需要用Char类型进行替代;且函数中同时出现Int和Long数据类型时,需考虑两者所占用的位数的不同,以避免数据类型发生截断等。

3)在CCS编译环境下进行软件开发时,开发者要手动的对系统堆栈大小进行配置和维护。移植过程中,需要对*.cmd文件中的起始地址长度、系统的大小等资源进行合理的配置,确保在CCS环境下能够正确编译。

3.2.2 行人检测算法在DSP平台的优化

将未优化的算法直接移植到嵌入式TMS320C6657平台后,算法的处理效率特别低,实时性和工程实用性都不能够满足要求。为此需要根据TMS320C6657自身的特点以及TI提供的多种优化工具,通过各种优化方法对程序和平台进行全面的优化,提高代码的执行效率。本文着重从以下几个方面对行人检测模块进行优化。

1)CCS编译器优化:TI公司的编译器CCS提供了分为若干等级和种类的自动优化选项,用户可以根据需要进行选择。本文在优化过程中采用-o3编译选项和Release编译模式。-o3编译选项启动文件级优化,支持去除所有没有被调用的函数、简化返回值等;Release编译模式可以使程序获得最大的优化效果。

2)循环展开:代码中的for循环需要打断C66x内部的软件流水线,频繁的for循环使程序运行缓慢,大大降低DSP的处理效率。在本文中,根据相关情况,将部分for循环进行展开,以代码增加为代价提高代码的执行效率。

3)内联函数的使用:针对C6000 DSP平台,TI公司提供了可快速优化C代码的内联函数,内联函数可以直接映射为C6000的汇编,代码执行效率与汇编相同。通过对内联函数的合理使用,可以减少代码的程序量,提高代码的执行效率。本系统中,图像的像素值进行点积运算时,未经优化的C程序需要循环N次,经过内联函数优化后,将2组数据划分为高16位和低16位,再分别做乘法和加法处理,使循环次数减少为原来的1/2。

4)C66x VLIB库的使用:C66x VLIB(Video Analytics & Vision Library )是TI提供的经过优化的图像/视频处理函数库,包含了40多个内核软件库,能够加速图像/视频分析与开发。采用VLIB库函数代替自己编写的C代码,对Vibe背景建模提取出来的前景图像进行腐蚀、膨胀和连通区域提取操作,提高代码的执行速度。

4 实验与结果分析

4.1 实验环境搭建

本文硬件系统选用TMS320C6657芯片作为图像处理核心单元,采用Seed公司的SEED XDS560V2 USB型仿真器和TI公司提供的CCS(Code Composer Studio)5.5软件开发环境,并辅以其它外设完成相应的调试功能。

4.2 实验结果分析

为了验证系统的性能,本文测试数据采用分辨率为768×576的PETS_09 View_001 监控视频。

1)检测效果分析

算法移植优化完成后,对输入视频进行测试,部分检测结果如图3所示。

图3 检测结果

统计测试视频中的100帧图像,共含待检测行人523个,将本设计中的算法与文献[3]中传统的HOG算法在准确率、误检率和漏检率方面进行比较,统计结果如表1所示。

表1 文献[3]算法与本文算法性能对比 %

从图4和表1分析可得,本文中的算法能够有效地对视频中的行人进行检测,且比文献[3]中传统的HOG方法在准确率、漏检率和误检率方面有更好的检测效果。

2)算法耗时分析

算法移植到嵌入式DSP平台后,通过对系统优化前后的周期数进行统计,实现对算法在嵌入式TMS320C6657的优化效果分析。本设计选用的TMS320C6657芯片的主频为1 GHz,准确的时钟值需要用实验测得的时钟周期除以DSP的主频。

为了能够更加清晰直观地对算法在DSP平台的优化效果进行分析,结合优化前后时钟周期的统计数据,使用如图4所示的折线图对算法优化前后的耗时情况进行对比分析。

图4 算法在DSP平台优化前后耗时对比

通过图4对比分析可以看到,算法在DSP平台未经优化时,想要获得理想的检测效果,其算法耗时过长,检测效率低,实时性差。而经过编译器优化、循环展开、内联函数的使用等优化方法优化后,在保证相同的检测效果的同时,算法在DSP平台处理一帧分辨率为768×576的图像的平均耗时从1.28 s左右降低到0.26 s左右,代码执行效率比未优化之前平均提高了5倍左右,优化效果明显,具有较好的工程实用价值。

5 结 论

提出了一种基于Vibe的背景建模结合HOG+SVM的行人快速检测系统;并借助OpenCV1.0和CCS开发环境以及TI提供的各种优化工具,结合TMS320C6657 DSP的硬件资源和行人检测算法的特点,实现了算法在嵌入式DSP平台的移植和优化。实验结果表明:本文行人检测系统在嵌入式DSP平台上有较好的检测精度和优化效果,具有一定的工程实用性。下一步将继续通过算法的改进,在保证检测精度的同时提高检测效率。

猜你喜欢
行人嵌入式背景
“新四化”背景下汽车NVH的发展趋势
毒舌出没,行人避让
《论持久战》的写作背景
路不为寻找者而设
搭建基于Qt的嵌入式开发平台
我是行人
嵌入式软PLC在电镀生产流程控制系统中的应用
曝光闯红灯行人值得借鉴
晚清外语翻译人才培养的背景
Altera加入嵌入式视觉联盟