关键字 |
检测;功耗;执行时间;硬件解决方案;HW / SW合作设计 |
简介及相关工作 |
有必要建立能够自动监测人类活动的系统,以减轻培训压力和扩大卫生解决方案的力量。因此,开发一个自动跌倒检测应用程序,以防止长者和康复人士跌倒的风险,并为他们提供即时的帮助,是非常重要的。 |
跌倒检测方法 |
一般来说,自动跌倒检测可以通过许多不同的技术来执行: |
•室内传感器:红外传感器[1],激光扫描仪[2],甚至地板振动和声音[3]。 |
•可穿戴传感器:加速度计、陀螺仪甚至是气压传感器。 |
•视频系统:单摄像头[5],多摄像头[6],Kinect传感器[7]。 |
其中,可穿戴传感器能够捕捉关键阶段发生的高速,以及后坠落阶段的水平方向。然而,在这些方法中,用户必须一直佩戴设备,因此,如果不方便,它可能会打扰他们。此外,这种系统需要频繁地为电池充电,这可能是实际应用的严重限制。另一方面,视频系统使操作员能够快速检查警报是否与实际坠落有关。图1描述了基于视频处理的跌倒检测框图。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-g001.gif) |
一个有趣的对象(即前景)将从视频剪辑中的每个视频帧的背景中提取出来。这种检测技术被称为背景减法。该方法通过对当前帧与建模背景之间的差值进行逐像素的阈值处理来检测前景。在Filter模块中对对象进行blobbing和平滑后,该结果将通过2D建模进行跟踪,如点跟踪、内核跟踪(矩形、椭圆、骨架……)或轮廓跟踪。然后,基于其中一种建模方法来计算理解对象手势的特征提取。问题在于,这些特征必须为相同的活动封装独特的特征,但由不同的人执行。为了避免该系统的误检和误报,不仅取决于技术,而且还面临着一些挑战,如 |
•动态背景:在某些情况下,在指定的场景中有许多移动的对象,以及如何提取准确的对象。 |
•亮度:一天中不同时间的光强变化或灯光的突然转向也会影响背景处理。 |
遮挡:通常被认为是伪影,在许多图像运动计算中是不可取的。我们认为,遮挡显示了有关相机运动(相机的位置和角度)和场景结构(静态或动态环境;物体的亮度、颜色和服装)。 |
•静态物体:当物体在睡觉、坐着或平静行走时,很容易错误地提取物体。 |
在目标特征被跟踪和提取之后,系统的问题就是要通过识别块中的目标动作特征来理解目标动作的意义。 |
实现跌倒检测应用程序 |
最近,一个名为OpenCV的视频处理框架在英特尔的计算机视觉开源库上定期开发。然而,如何在硬件平台上使用OpenCV实现视频应用是一个很大的挑战。在Floris Driessen[8]的工作中,他提出了在异构计算平台上结合嵌入式处理器和定制加速器——Zynq- 7000全可编程片上系统,它提供了一种结合基于现场可编程门阵列(FPGA)的可重构逻辑的高端嵌入式处理器。此外,另一个跌倒检测系统是在Terasic的DE2- 115开发板上实现的,包括Altera Cyclone IV (EP4CE115) FPGA器件,一个500万像素CMOS摄像机传感器和一个LCD触摸面板。该系统在设计时充分利用了FPGA[9]的并行和流水线架构。 |
在[10]中展示了Shimmer技术和应用正交匹配追踪(OMP)算法进行高级数据压缩。该系统在Virtex-5和Zynq 7 (FPGA)上使用Vivado高级合成工具进行了仿真和实现。用于估计不同场景下坠落检测的面积、功率和计算时间。另一方面,利用Kinect和无线加速度计的结合,提取暗室[11]中的物体图像。该系统在PandaBoard ES上实现,并具有实时指示功能。 |
在下一节中,将提到研究目标。跌倒检测应用将在第三节中描述,分为四个步骤:对象分割,滤波,特征提取和识别。在第四节中,描述了一个有深刻见解的实施和评估实验。最后,第五节是本文的结论。 |
研究目标 |
为了将嵌入式系统的应用部署在包含各种计算单元的异构平台上,如现场可编程门阵列(FPGA)、微处理器和图形处理单元GPU,我们需要确定设计阶段的特定活动。然后,设计人员将为软件(SW)或硬件(HW)实现配置分区。 |
在通常的实践中,部署决策是在设计阶段的早期阶段做出的,并且它分支为两个分离的流:硬件和软件设计流。然后,在实现阶段,它们分别发展,直到最后的集成。在这种情况下,设计阶段会受到诸如硬件或软件流程中断、重新设计和计划外迭代等问题的影响,这些问题会在效率、质量和成本以及系统生命周期方面对整个开发过程产生负面影响。特别是在硬件和软件上分离实现整个应用,耗时较长。 |
在本研究中,我们提取了部署在Zynq -7000 AP SoC平台ARM处理器上的整个跌落检测应用程序的执行时间、功耗。在此之后,Fall Detection中执行时间最长的模块将在HW(使用fpga)上实现。 |
跌落检测应用 |
对象分割 |
物体分割块负责检测和区分运动物体和帧的其余部分,即背景。本研究采用背景减法。像素被标记为前景 |
如果|Ii - Bi | > τ, (1) |
其中Ii为当前视频帧;Bi是模拟的背景帧,τ是“预定义的”阈值。 |
更新后的背景估计为:Bi+1 = α ii +(1−α)。Bi (2) |
其中α保持较小,以防止人造“尾巴”形成。 |
过滤器 |
目前已有形态学数学(MM)、边缘检测滤波器(Sobel、Canny、Prewit Filter)等辅助方法从目标二值图像中提高图像质量。在这个模块中,对象将被平滑,斑点和噪声将被删除。 |
形态学数学(MM)是一种分析和处理几何结构的技术。它还用于形态图像处理中,根据物体的特征对图像进行变换。有些mm是膨胀,侵蚀,打开,关闭或这些的组合。 |
索贝尔边缘检测算法[12]是图像处理中最常用的边缘检测技术。本文使用了水平和垂直两种Sobel算子。算子计算每个点的图像强度梯度,给出从亮到暗最大可能增加的方向和该方向的变化率。索贝尔核由 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-e001.gif) |
在这里,内核Gx对x方向的变化很敏感,即垂直运行的边,或具有垂直分量。类似地,核Gy对y方向的变化敏感,即沿水平方向运行的边,或具有水平分量。与上述两个核卷积得到的每个像素上的两个梯度(Gx和Gy)可视为梯度向量的x和y分量。这个向量沿着变化的方向,垂直于边缘运行的方向。梯度大小和方向为: |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-e002.gif) |
近似震级计算方法为:|G| = |Gx| + |Gy| (5) |
产生空间梯度的边缘的方向角(相对于像素网格)由: |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-e003.gif) |
特征提取 |
椭圆模型通常用于跟踪对象,因为它很容易在对象周围拟合一个椭圆。在本研究中,椭圆的设置需要三个参数:椭圆的质心、物体的垂角、物体的长、小轴(图2) |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-g002.gif) |
椭圆质心:对于每一二进制帧,确定椭圆的质心坐标O (Ox, Oy):横坐标(Ox)和纵坐标(Oy)是白色像素的整个x坐标和整个y坐标的平均值。 |
物体的垂直角度:确定质心坐标后,系统计算主轴椭圆与水平线的夹角(θ或电流角由式7计算)。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-e004.gif) |
其中i, j为像素(i=1,…)帧宽,j=1…x = i - Ox, y = j - Oy (Ox, Oy:质心位置),P (i, j):像素(i, j)的值。 |
物体的长轴和小轴 |
A和b分别为椭圆的半长轴和半短轴。d1和d2分别是O到O1(x1, y1)和O2(x2, y2)的距离。计算O1和O2: (x1, y1)和(x2, y2)坐标是满足以下2个条件的白色像素W (Wx, Wy)的整个x坐标和y坐标的平均值: |
这些白色像素的y坐标(Wy)小于质心的y坐标(Oy)。 |
这些W处在有限的角度,所以 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-e005.gif) |
最后计算出长、次轴:a = 2d1, b = 2d2。 |
特征提取:定义5个特征 |
电流角:cf。 |
运动系数(Cmotion) |
在相同的位置和时间,灰色像素是前一帧的白色像素。灰色像素的亮度相对于同一位置包含白色像素的帧的时间帧增加。灰色帧用于确定物体的运动速率,也称为运动历史成像(MHI)。物体Cmotion的运动系数由: |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-e006.gif) |
其中“白色像素”为白色像素的数量;“灰度像素”是灰度像素的数量。Cmotion的值必须在[0,1]范围内。 |
角度偏差(Ctheta) |
Ctheta是15个连续帧的15个角θ的标准偏差。当发生下降时,Ctheta通常会更高。 |
计算当前帧的偏心距为: |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-e007.gif) |
式中e:偏心率;A、b:椭圆的半长、半短轴;当直接下降时,E更小。 |
质心的偏差(Ccentroid)定义为15个连续帧的15个纵坐标的标准偏差。当坠落发生时,质心迅速减小。 |
基于模板匹配的识别 |
根据坠落的方向和类型,已经建立了四个模型来检测坠落事故。第一个模型是正面坠落,在这种情况下,Cmotion, Ctheta,中心点很高,但Theta很低。第二种模式是交叉下降,具有高Cmotion和Ctheta,而Theta, centrroid和Eccentricity具有中等值。在下一个模型中,受害者在垂直于摄像机的方向上下落,因此Theta几乎是恒定的,Cmotion是平均的,离心率很低,而中心心相当高。其他情况包括在最后一个模型中。这些特征根据下降模型相互结合,阈值从训练视频的调查中选择。 |
实施与评估 |
我们使用C/ c++指定的高级语言,集成OpenCV和交叉编译,以及使用gcc/g++工具链实现通信应用程序编程接口(api)和运行时层的库来设计该系统。这些工具链生成一个。elf文件,下载到处理器ARM Cortex A9上的Zynq平台支持SDK工具。此外,该系统出现了功耗问题;根据处理器上的输入数据估计每一帧的执行时间。该核心的频率设置为666 MHz。 |
执行时间从可用的time.h库中提取。功率和热的测量是由Fusion数字功率设计器GUI进行的。TI USB适配器连接Zynq平台上的控制器电源管理总线(PMBus)和PC,用于显示测量结果,如图3所示。 |
在本研究中,输入视频由Camera Web Cam -Philips SPC 900NC PC记录,该PC安装在距离地板3m的墙上。数据捕获分辨率为320x240像素和680x360像素。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-g003.gif) |
软件实现 |
分类性能: |
本系统使用DUT-HBU数据库[5]。所有视频数据压缩为。avi格式,由一台摄像机在一个小房间内拍摄,亮度、物体、摄像机方向等条件都是可变的。 |
数据库:下落方向被细分为三个基本方向 |
直接下落:物体面朝相机下落。 |
十字坠落:当物体从相机上坠落时发生。 |
侧落:物体垂直地落在相机的两侧。 |
在非摔倒视频中,躺着、坐着、匍匐、弯腰等容易被误认为是摔倒动作的常见活动也被分为上述三个方向。 |
在本研究中,我们创建了两个数据集(如表1所示): |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-t001.gif) |
Train set:清晰的数据由背景稳定的视频组成。这些视频是在一个亮度良好的小房间里拍摄的。这个物体没有被房间里的家具遮蔽。列车集包含21个秋季视频和26个日常活动视频。 |
测试集:测试视频片段的内容和活动基本与训练视频片段的内容和活动相似,只是环境条件略有不同。在每个片段中,只有一个背景稳定的物体,包括21个坠落视频,其余的是33个视频。 |
分类评估: |
ROC (Receiver Operating Characteristics)是通过计算Precision (PR)、Recall (RC)和accuracy (Acc)来评估系统效率和准确性的方法之一,如式6所示。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-e008.gif) |
其中TP、TN、FN、FP定义如下: |
真阳性(TP):正确归类为跌倒动作的数量。 |
假阳性(FP):非坠落动作的数量被错误地认为是坠落。 |
假阴性(False negatives, FN):被错误地拒绝并归类为非跌倒动作的数量。 |
真负(TN):被正确归类为非坠落动作的数量。 |
混淆矩阵 |
混淆矩阵给出了分类系统所做的实际分类和预测分类的信息。这种系统的性能通常使用矩阵中的数据进行评估。下表2给出了在Zynq-7000 AP SoC平台ARM Cortex A9上实现的Train和Test数据集的两个分类为FALL或NON FALL的混淆矩阵。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-t002.gif) |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-g004.gif) |
根据混淆矩阵,计算出Recall, Precision和Accuracy,如图4所示。 |
在查全率、查准率、查准率方面,Train集中的清晰数据均高于Test集中。原因是Template Matching使用“硬阈值”,特征的组合非常简单,可以检测fall事件。四种跌倒模式不足以描述所有可能发生的跌倒。 |
测量 |
如图5所示,Fall Detection应用程序总执行时间的平均值约为0.107s/帧。基于形态学过滤器的框架过滤器模块大约需要2/3的总执行时间。当使用更高分辨率的680x360像素输入视频时,也得到了类似的观察结果。其中frame Filter的执行时间为0.221ms/帧,总执行时间为0.3s/帧。 |
在这种情况下,整个Fall Detection应用的实测功耗接近0.403W。 |
因此,每帧能量乘以功耗(P)和总执行时间(T),如下所示: |
E = P*T= 0.403*0.107= 0.043 (J/帧) |
根据实验结果,本系统的帧率计算公式为: |
帧速率= 1/0.107 = 9。3帧/秒 |
结果表明,该系统不能以每秒24帧的速度运行。因此,该参数会对系统的识别能力产生影响。当我们将离线处理改为在线处理时,如何获得合理的精度、准确性和性能也是视频设计的一大挑战。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-g005.gif) |
HW实现 |
Zynq®-7000系列基于Xilinx全可编程SoC架构。这些产品在单个器件中集成了功能丰富的双核ARM®Cortex™-A9处理系统(PS)和28纳米Xilinx可编程逻辑(PL)。ARM Cortex-A9处理器是PS的核心,还包括片上存储器、外部存储器接口和一组丰富的外围连接接口[13]。因此,Zynq-7000 AP soc能够服务于包括视频应用在内的广泛应用。 |
正如第二节中所讨论的,从图5中观察到的结果来看,选择帧滤波器在HW上实现。为了减少执行时间,将Sobel Filter替换为形态学Filter。在Sobel Filter中,使用了两种类型的Sobel算子,水平和垂直。算子计算每个点的图像强度梯度,给出从亮到暗最大可能增加的方向,以及该方向的变化率[14]。这样,通过Vivado_HLS工具估算出该模块的功耗和执行时间。 |
根据表3所示的功耗和执行时间,计算出每帧的能耗为 |
(*) E = P*T = 1.65.10-3 (J/帧) |
(**) E = P*T = 1.158.10-3 (J/帧) |
在帧滤波器功能相同的情况下,在HW上实现的Sobel滤波器比在ARM处理器上实现的形态学滤波器节省了40倍的能量。 |
在此之后,执行前面的实验以选择哪些模块或算法是HW或SW实现的候选模块或算法。因此,本文针对跌落检测应用提出了软硬件架构,其中采用基于Sobel滤波器的帧滤波器以获得更好的性能和更低的功耗。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-1183-t003.gif) |
结论 |
本文在Zynq-7000 AP Soc平台的ARM Cortex A9处理器上实现了一个跌倒检测应用程序,该处理器具有两种视频输入分辨率。从召回率、精密度和准确度三个方面对其识别性能进行了评价。应用程序的SW实现在不同的测试条件下显示了近80%的平均精度。从实际功耗和估计执行时间的测量中,选择Sobel滤波器在同一平台的fpga上进行硬件实现。使用Vivado_HLS对功耗、执行时间和能量等相关参数进行了估计。总体观察得出了软硬件协同设计的建议,以利用fpga的技术特点来加速数字信号处理算法。本文将在此平台上研究软硬件架构的优化。 |
|
参考文献 |
- A. Sixsmith, N. Johnson,和R. Whatmore,“老年人群中用于跌倒检测的热释电红外传感器阵列”,《物理杂志》IV(继续),第128卷,第153-160页,2005年9月。
- T. Pallejà, M. Teixidó, M. Tresanchez,和J. Palacín,“使用地面激光距离传感器测量步态”,传感器杂志(巴塞尔),第9卷,no. 1。11, pp. 9133-9146, 2009年1月。
- Y. Zigel, D. Litvak,和I. Gannot,“一种利用地板振动和隔音的概念来自动检测老年人跌倒的方法,”IEEE生物医学工程学报,第56卷,no. 1。12, pp. 2858-2867, 2009年12月。
- 托尔金,阿塔拉,罗,g - z。杨,“使用三轴加速度计和气压传感器的方向敏感跌倒检测”,IEEE医学生物学会工程会议论文集,2011卷,第369-372页,2011年1月。
- Y. T. Ngo, H. V. Nguyen, T. V. Pham,“基于智能视频分析的跌倒检测研究”,国际先进技术通信会议,第114-117页,2012年10月。
- E. Auvinet, F. Multon, A. Saint-arnaud, J. Rousseau和J. Meunier,“多摄像头跌倒检测:基于三维剪影垂直分布的抗遮挡方法”,IEEE生物医学信息技术学报,第15卷,no. 1。2,页290-300,2011。
- S. Gasparrini, E. Cippitelli, S. Spinsante, E. Gambi,和U. Politecnica,“使用Kinect®传感器的基于深度的跌倒检测系统”,传感器杂志,第14卷,第2756-2775页,2014。
- F. Driessen,“面向可重构平台的消费相机接口的吞吐量探索和优化”,http://parse.ele.tue.nl/tools/usbcam/papercameraFD.pdf。
- P. S. Ong, Y. C. Chang, C. P. Ooi, E. K. Karuppiah,和S. M. Tahir,“基于智能视觉的跌倒检测的FPGA实现”,国际计算机,信息,系统与控制工程,vol.7, no. 7。2,页199-204,2013。
- H. Rabah, a. Amira,和a. Ahmad,“使用压缩传感和微光技术的跌倒检测系统的设计和实现”,第24届微电子国际会议(ICM), pp. 1-4, 2012年12月。
- M. Kepski和B. Kwolek,“使用Kinect和无线加速计在嵌入式平台上进行跌倒检测”,第13届国际计算机帮助特殊需要的人会议记录,第2卷,第407-414页,2012。
- 古普塔和马宗达,“Sobel边缘检测算法”,《计算机科学与管理》,第2卷,第1期。2, pp. 1578-1583, 2013。
- D. S. 12月,“Zynq-7000全可编程SoC概述”,Xilinx的出版物,DS190, pp. 1-21, 2013。
- 在香港。T. K. Nguyen, C. Belleudy,和Tuan Van Pham,“Sobel滤波器在Xilinx平台上的功率评估”,IEEE失效张力失效确认(FTFC)会议,第1-5页,2014。
|