Print

发布时间: 2019-04-16
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.180387
2019 | Volume 24 | Number 4




    图像分析和识别    




  <<上一篇 




  下一篇>> 





使用聚合通道特征的嵌入式实时人体头肩检测
expand article info 陆泽早, 彭刚, 何顶新
华中科技大学自动化学院图像信息处理与智能控制教育部重点实验室, 武汉 430074

摘要

目的 头肩检测由于抗遮挡能力强、计算需求低,常用于复杂场景中的人体检测。针对嵌入式头肩检测中常用的运动检测和手工模型匹配方法检测精度较低、对不同姿态和人体外观适应性较差的问题,提出了使用聚合通道特征的嵌入式实时人体头肩检测方法。方法 首先分析多种行人检测与人体姿态数据集,从中生成多姿态、多视角的人体头肩样本集;然后基于图像的聚合通道特征,使用AdaBoost算法通过多个阶段的训练,得到基于增强决策树的头肩图像分类器;接下来,在快速特征金字塔算法的基础上,针对ARM-Linux平台,利用多核并行和单指令多数据流技术,加速图像特征金字塔的计算;最后,进行多线程的滑动窗口检测,利用头肩图像分类器识别每个检测窗口,并通过非极大值抑制(NMS)算法优化检测结果。结果 重新标注了INRIA验证数据集中的头肩样本,采用本文训练得到的头肩图像分类器进行检测,通过样本漏检率、每图片平均误检率以及ROC(receiver operating characteristic)曲线评估检测效果。对INRIA数据集中高度≥50像素的头肩目标的对数平均漏检率为16.61%。此外,采集了不同场景中多种姿态、视角下的头肩图像,以验证分类器的适应性,结果表明该分类器能够良好检测多姿态、多视角、受遮挡以及不同光照情况下的头肩目标。但由于检测器感受野局限于头肩区域,对少量疑似头肩样本的图像区域存在误检测。在嵌入式平台(树莓派3B)中,经过优化的头肩检测程序,对640×480像素分辨率的图像,特征计算耗时约213 ms;对单个包含正样本的检测窗口,分类耗时约2 ms。整体检测效率能够满足视频流实时检测的需求。结论 本文基于聚合通道特征进行人体头肩检测,采用种类丰富、标注准确的头肩训练样本,使用AdaBoost算法学习头肩图像的聚合通道特征,得到的头肩图像分类器适应性强,硬件性能要求低,能够良好检测多视角、多姿态的人体头肩图像,并具备在嵌入式平台上实时检测视频流的能力,应用场景广泛。

关键词

行人检测; 头肩检测; 嵌入式; 聚合通道特征; AdaBoost; 机器学习

Embedded real-time human head-shoulder detection based on aggregated channel features
expand article info Lu Zezao, Peng Gang, He Dingxin
Key Laboratory of Image Processing and Intelligent Control of Ministry of Education, School of Automation, Huazhong University of Science and Technology, Wuhan 430074, China
Supported by: National Natural Science Foundation of China (61672244)

Abstract

Objective Human body detection is a key subject of computer vision and has important research relevance in areas, such as intelligent video surveillance, unmanned driving, and intelligent robots. Head-shoulder detection is often used in embedded systems due to its strong anti-masking capabilities, attitude adaptability, and low computational requirements. Commonly used embedded head-shoulder detection methods mainly include motion detection and matching; however, these two methods have low detection accuracy and poor adaptability to different postures and human appearances. To improve the head-shoulder detection accuracy, an embedded real-time human head-shoulder detection method based on aggregated channel features (ACFs) is proposed. Method A variety of pedestrian detection and human pose datasets, namely, Caltech Pedestrian dataset, INRIA Pedestrian dataset, and MPⅡ Human Pose dataset, are analyzed to generate human head-shoulder sample. Suitable samples in MPⅡ Human Pose dataset are filtered. Then, head-shoulder areas are clipped accurately on the basis of the positions of head and neck joints, and a human head-shoulder dataset with varied head-shoulder poses and perspectives, named MPⅡ-HS, is generated. The MPⅡ-HS dataset is used as positive training samples. Images from Caltech and INRIA Pedestrian datasets, which do not contain humans are used as negative training samples. AdaBoost algorithm with multiple stages, which consist of one channel of gradient amplitude, six channels of gradient direction, and three channels in YUV color space, is used to train a head-shoulder classifier for a 40×40 pixels image based on ACFs. The trained classifier is an enhanced decision tree composed of 4 096 binary decision trees with a maximum depth of five. The final score of the classifier is the sum of the scores of every binary decision tree. The classification will end early if the score sum reaches a lower threshold to speed up detection. Image feature pyramid is calculated based on fast feature pyramid algorithm. For the Linux ARM platform, multi-core parallel techniques and single-instruction multiple-data instruction set are used to accelerate the calculation of image feature pyramid. Finally, sliding-window detection is applied in multiple threads where each thread handles one row of detection windows. The trained head-shoulder image classifier identifies candidate head-shoulder targets in every detection window, and candidate detection results are merged via non-maximum suppression algorithm. Result To estimate the accuracy of the proposed head-shoulder detector, head-shoulder targets in the validation set of INRIA Pedestrian dataset are re-labeled and named as INRIA-HS. The trained head-shoulder image classifier is applied. The detection results are evaluated by miss rate (MR) and false positive per picture (FPPI) in the receiver operating characteristic curve. The log-average MS for head-shoulder targets with a height of ≥ 50 pixels in INRIA-HS dataset is 16.61%, that of MR is lower than 20%, whereas the FPPI is 0.1. In addition, the head-shoulder images of various poses and perspectives in different scenes are collected in actual scenes to verify the adaptability of the proposed classifier. Results show that the proposed classifier can detect multi-pose, multi-perspective, and occluded head-shoulder target under different illumination conditions. However, the receptive field of the proposed classifier is limited to the head-shoulder area; thus, some image areas similar to that of the head-shoulder but not similar to the human body may be misclassified as positive. Thus, the FPPI of the proposed head-shoulder detection is slightly higher than that of the ACF classifier trained for all human body detection. However, the proposed head-shoulder classifier is suitable for occluded human in indoor and crowded scenes. In the embedded platform with quad-core ARM Cortex-A53 with 1.4 GHz Raspberry Pi 3B, the proposed optimized head-shoulder detection program takes approximately 178 ms for a 640×480 pixels image. For a single detection window containing positive samples, the classification takes approximately 2 ms. The overall detection speed can satisfy the demands of real-time detection of video streams. Conclusion Human head-shoulders are detected based on ACF. The generated head-shoulder dataset MPⅡ-HS has rich and varied head-shoulder samples with accurate annotations. The AdaBoost algorithm is used to learn the ACF of head-shoulder images. The trained head-shoulder image classifier has strong adaptability to different human poses or appearances. It benefits from the struct of classifier, and its hardware performance requirement is low. These advantages allow human head-shoulder detection accuracy possible on an embedded platform in a wide range.

Key words

pedestrian detection; head-shoulder detection; embedded system; aggregated channel features; AdaBoost; machine learning

0 引言

行人检测是计算机视觉中的重要研究课题,广泛用于智能视频监控、车辆辅助驾驶、智能交通和智能机器人等领域。但是由于人体外观易受穿着、遮挡、姿态和视角的影响,尽管取得了一些成果,行人检测依然是一个具有研究价值和挑战性的课题。主流的行人检测方法分为基于人工图像特征的统计学习方法和基于人工神经网络的深度学习方法。统计学习方法对行人目标的对数平均漏检率一般为15%左右,可以在CPU上进行实时检测。而深度学习方法对行人目标的对数平均漏检率低至7%,但是需要使用GPU进行运算,不利于在硬件资源受限的嵌入式系统上实现实时检测[1]

头肩检测是行人检测的一个分支。头肩检测器既可以直接用于行人检测,也可以作为部件检测器并入行人检测系统中,提高行人检测的鲁棒性。头肩检测的优点在于:相对整个人体,人的头肩部分变形较少,形状较为固定,有利于使用统计学习方法进行识别,而且在复杂的场景下也不易被遮挡。尽管仅针对人体的头肩部分进行识别会因为信息量较少导致人体检测效果下降,但是对拥挤的人群和下半身受遮挡的人体目标,头肩检测仍然具有很大的研究意义和实用价值。

除基于人工神经网络的方法之外,常用的人体头肩检测方法主要分为基于运动区域检测的方法[2]、基于手工模型匹配的方法[3]和基于人工图像特征的统计学习方法。基于运动区域进行人体识别,无法识别长时间静止的人体目标,应用场景有限。基于手工模型匹配的方法,难以识别不同发型、不同发色、不同姿态、不同视角的人体,适应性较差。基于人工图像特征的统计学习方法,使用统计学习方法筛选出有效的头肩图像特征来进行头肩检测,检测效果最为有效。不同方法之间的主要差异在于特征和分类器类型的选择。文献[4-5]结合运动区域检测、肤色识别以及行人梯度特征进行行人检测。文献[6]在GPU上分区域提取SILTP(scale invariant local ternary pattern)与HOG(histogram of oriented gradvent)特征,使用SVM(support vector machine)识别特征向量。文献[7]使用HOG和LBP(local binary patterns)特征,并使用SVM作为分类器。文献[8]使用头顶像素梯度作为预检测器,以加快检测速度。文献[9]使用10通道LUV+HOG特征组合而成的聚合通道特征,并使用AdaBoost训练分类器,在CPU上达到了实时检测(100帧/s)。文献[10]挑选了对头肩部分特征最为显著的6个特征通道,构成ACF(aggregated channel feature)头肩检测器作为行人检测的预检测器,以提高检测效率。

本文提出了一种在嵌入式设备上的实时头肩检测方法。为了能够检测多视角、多姿态下的人体头肩目标,本文选择并分析了多个人体图像数据集,提出了一种从人体姿态数据集中截取并生成人体头肩样本的方法,结合多个人体数据集得到了包含多视角、多姿态的人体头肩样本的数据集。然后,利用头肩样本的聚合通道特征(ACF),并使用AdaBoost算法进行了4个阶段的训练,得到了基于增强决策树的头肩检测模型,该模型具有较好的头肩检测效果。同时,本文在ARM-Linux平台上实现了ACF目标检测程序,进行了多核并行优化与单指令多数据流优化,在嵌入式系统上具有良好的实时检测效果。

1 人体头肩样本的选择与生成

人体头肩样本指的是包含人体头部和肩部的图像。考虑到头肩位姿的多样性,本文以长宽比为1 :1的矩形框表示头肩区域。为增加头肩检测模型对多样的人类活动和拍摄场景的适应性,用于模型训练的头肩样本集应覆盖头肩的多种姿态,如仰头、低头、歪头等,还应包含以多种视角拍摄的头肩图像,如背面、正面、侧面、侧上方等。

为获得足够数量的头肩样本,需要选用包含人体图像的开源行人检测数据集和人体姿态样本数据集。常用的行人检测数据集有MIT数据集、INRIA数据集和Caltech数据集。由于MIT行人数据集仅包含人体正面与背面两个视角[11],无法满足在多视角下检测头肩的要求,故不使用MIT数据集。INRIA行人数据集是一个广泛使用的静态行人数据集,包含288张正样本和453张负样本,分为训练样本集和检测样本集两个部分[12]。Caltech行人数据集是使用车载摄像机拍摄的,包含2 300个行人,标注信息准确且无漏标注[1],并提供了相应的MATLAB计算机视觉工具箱,用于处理样本和训练模型(https://pdollar.github.io/toolbox/)。本文使用该工具箱进行样本处理和注释生成,并使用其中的ACF检测模型的训练功能。由于行人检测数据集的样本为整个人体,因此需要进行处理,从人体样本的标注框中获得本文所需的人体头肩部分图像。

与整个人体图像相比,头肩部分图像带有的信息量较少,若将难以识别的小尺寸头肩样本用于训练,会导致头肩检测器的误检率升高。因此本文要求头肩样本的尺寸应大于24×24像素。头肩样本的尺寸与对应的整个人体的宽度可以粗略地认为是2 :3的关系,要获得足够大的头肩样本,人体样本的宽度应至少为36像素。图 1(a)是Caltech行人数据集人体样本的宽度分布直方图,样本宽度主要分布于40像素以下,难以满足头肩样本的尺寸需求,因此无法作为头肩模型训练的正样本。但是Caltech数据集属于户外拍摄,包含种类丰富的物体,可以截取不包含人体部分的图像作为头肩模型训练的负样本。图 1(b)是INRIA行人数据集中训练样本的宽度分布直方图,大部分人体样本的宽度都大于40像素,能够生成足够尺寸的头肩样本,可以用作头肩模型训练的正样本,且本文将其作为测试样本,用于验证模型的有效性。图 1(c)是本文从MPII数据集中生成的用于头肩检测器训练的MPII-HS样本集的宽度分布直方图。

图 1 样本宽度分布
Fig. 1 Sample width distribution
((a)Caltech dataset; (b)INRIA dataset; (c) MPII-HS training sample set)

从人体样本中截取头肩样本,最简单的方法是根据头肩在人体中相对位置的先验知识,将人体图像的顶部中央的部分作为头肩图像,可以假设头肩样本的宽度为人体样本宽度的2/3,头肩样本为正方形。对正立的人体样本(图 2(a)),可以较好地提取出人体头肩部分。但是对倾斜人体样本(图 2(b)),截取出的头肩部分,远远偏离了实际位置。所以该方法无法准确找到人体的头肩部分。大部分的行人检测样本集如INRIA、Caltech等都缺少头肩的位置信息,需要结合人脸检测等方法进一步处理才能得到准确的头肩样本,步骤过于复杂,而且可能会引入更大的误差。因此从一般的行人检测数据集中难以提取出准确的头肩样本。

图 2 以先验知识直接截取头肩样本
Fig. 2 Intercepting head-shoulder area based on prior knowledge
((a)correct samples from INRIA dataset; (b)error samples from INRIA dataset)

人体姿态数据集是一种用于训练人体姿态检测器的样本集,包含人体各个关节的标注数据,其中使用较为广泛的是MPII人体姿态数据集[13]。MPII数据集是使用YouTube视频进行人工标注得到的,共约25 000幅图像,包含超过40 000个具有关节标注的人体样本,覆盖超过410种人类活动,如图 3所示,人体姿态样本的标注包含头部外接矩形(白色框)和身体各个关节的标注信息(白色文字、白色线段端点)。但是,部分样本图片存在未标注的人体图像,无法用于生成头肩检测的负样本。

图 3 人体姿态样本(截取自MPII数据库)
Fig. 3 Body posture samples from MPII dataset

为提高算法的适应性,头肩样本包含仰头、低头、歪头等多种姿态,以及背面、正面、侧面、侧上方等多种视角。由于ACF目标检测算法的核心思想是通过判定多个固定位置上的特征组合来进行图像分类,所以需要避免训练样本之间的差异过大,以提高模型训练的效率并降低模型的误检率。为此,本文不考虑人体处于卧姿或从正上方拍摄等情况,在生成头肩样本的过程中也排除了上述两种“非正常”姿态的头肩图像。从MPII人体姿态数据集中,遍历每一个人体姿态样本,筛选并生成人体头肩样本,步骤如下:

1) 检查头顶、颈部和左右肩部节点是否在图像中,若不存在,则排除该人体姿态样本;

2) 通过头顶、颈部以及肩部节点的高度坐标,判断头部是否高于肩部,以排除处于倒立等姿态的样本;

3) 检查头部到骨盆节点的连线的倾斜角度是否小于30°,如图 4(a),白色粗线所在的人体姿态样本的躯干倾斜角度过大,予以排除;

图 4 人体头肩样本的提取
Fig. 4 Extraction of body head-shoulder samples
((a)remove samples with too large trunk tilt angle; (b)remove samples with too large trunk pitch angle; (c)extract head-shoulder samples)

4) 选取合适位置和大小的部分作为头肩样本框,头肩样本框顶部与头部框对齐。头肩样本框的边长取两肩距离、肩部中心到样本框顶部的距离、头部对角线长度这三者中的最大值,效果如图 4中黑色框所示;

5) 若头肩样本框的边长大于骨盆节点到头部的距离,如图 4(b),则认为该样本躯干的俯仰角度过大,排除该样本;

6) 排除尺寸过小(边长小于24像素)或过于贴近图片边缘(样本框距离图片边缘小于2像素)的样本;

7) 对包含有效头肩样本的图片,如图 4(c),将标注信息保存为文本文件。

经过以上步骤,从MPII人体姿态数据集中生成的头肩正样本集,包含13 710幅正样本图像,共有22 801个人体头肩样本,简称为MPII-HS数据集。人体头肩样本尺寸分布如图 4(c)所示,几乎所有头肩样本的宽度都大于40像素,满足头肩样本尺寸的要求。

用于训练头肩检测器的负样本由以下多个数据集的负样本组合而成:1)根据标注信息,选取Caltech行人数据集的所有训练样本中不包含行人样本的部分作为负样本。由于Caltech数据集图像的内容重复率较高,从符合要求的图像中,每20幅选取1幅,共有32 077幅图像。2)INRIA数据集的所有负样本图像,共有1 218幅图像。3)上述两个数据集中选出的负样本图像,构成本文人体头肩数据集的负样本集,共有33 295幅图像。

2 ACF头肩检测模型训练

本节介绍ACF目标检测算法的原理,并说明人体头肩检测模型的具体训练过程和训练参数。

2.1 ACF目标检测算法

ACF目标检测算法以滑动窗口检测为基础,主要特点是使用快速特征金字塔算法[9]计算多尺度多通道的图像特征金字塔,并在每一个检测窗口将多个不同类型的特征聚合为一个特征向量进行学习和分类。快速特征金字塔算法的核心是根据幂法则对某一尺度的特征图进行双线性降采样并乘以增益系数来估计邻近尺度的特征图。通过这样的方式,只需要计算少量几个尺度下的特征图,即可推算出其余尺度下的特征图。与逐层计算特征图相比,可以在几乎不损失精度的情况下,大大提升特征金字塔的计算速度。

ACF目标检测过程如图 5所示,步骤如下:

图 5 ACF目标检测流程图
Fig. 5 Flow chart of ACF object detection

1) 在原图上使用快速特征金字塔算法计算包含多个图像尺度、多种特征通道的图像特征金字塔;

2) 在特征金字塔的每个尺度下进行滑动窗口检测,对每个检测窗口,根据检测窗口在原图中的相对位置,提取出多通道特征图在对应位置的特征值,作为ACF特征向量;

3) 对每个检测窗口的特征向量,采用以二叉决策树作为弱分类器的增强决策树,判定该检测窗口是否为待检测目标,若判定检测窗口为待检测目标,则同时输出置信度;

4) 使用非极大值抑制(NMS)算法合并相似检测窗口,得到目标的最佳外接矩形。

2.2 ACF头肩检测模型的训练

在行人检测领域,最高水准的统计学习方法都使用了相同的3种类型,共10个通道的特征[1, 14]。由于头肩检测与行人检测类似,都是通过检测人体肤色、人体部件和人体外观轮廓进行识别,所以本文的ACF头肩检测模型使用了与行人检测相同的3种特征,分别为LUV颜色特征、梯度幅值特征和梯度方向特征[15],共10个特征通道。其中,LUV颜色特征由原RGB图转换得到的L亮度通道和U、V颜色通道共3个通道组成,主要用于检测目标的固定颜色模式。梯度幅值特征表示图像的梯度大小,主要用于检测目标的边缘信息。梯度方向特征表示图像梯度在各个方向上的分布,主要用于检测目标边缘的方向。本文使用了6个通道的梯度方向特征,方向不分正负极性。检测窗口的尺寸设定为40×40像素,这是综合考虑检测准确性和最大检测距离后的结果。

ACF头肩检测模型本质上是一个增强决策树。增强决策树由数千个弱分类器级联组成,每个弱分类器是一个深度较浅的二叉决策树,二叉决策树中的每一个树桩称为节点,每个节点有5个数据字段,分别为特征向量的索引号(整型)、特征的阈值(浮点型)、该节点的输出权值(浮点型)以及2个子节点索引号(整型)。最终的增强决策树以节点列表的形式进行保存。

ACF头肩检测模型的训练使用了改进的快速AdaBoost算法[16],步骤如下:

1) 随机选取20 000个头肩标注。根据标注,从正样本图片中采集对应的正样本窗口。为保证对称性,对所有正样本窗口进行复制翻转,得到共40 000个头肩正样本窗口。然后计算所有正样本窗口对应的特征向量。

2) 增强决策树的训练分为4个阶段,每阶段的训练中首先采集负样本窗口。在首个阶段,将所有负样本图片分割为若干个网格,随机选择50 000个网格作为本阶段的负样本窗口;而其余阶段,为实现增强学习的效果,需筛选出较难的训练样本,故在所有负样本图片上运行前一阶段训练出的头肩检测模型,并将检测到的疑似目标作为新的负样本窗口,共提取25 000个新的负样本窗口,并从前一阶段的负样本窗口中随机选择25 000个旧的负样本窗口,合并成50 000个本阶段的负样本窗口。然后,计算每个负样本窗口的特征向量,并将40 000个正样本特征向量和50 000个负样本特征向量作为训练数据,训练该阶段的增强决策树(第1阶段到第4阶段的增强决策树分别包含64、256、1 024、4 096个弱分类器,代表由粗到细的分类)。本文中,作为弱分类器的二叉决策树的深度最多为5层。

3) 最后训练出的增强决策树由4 096个弱分类器组成,保存为mat格式文件,作为最终的ACF头肩检测模型。

3 嵌入式系统上的实现与优化

ACF检测模型的训练是在PC机上完成的,嵌入式系统上仅需要实现与目标检测相关的检测功能。为了获得较高的运行效率,选用C++作为程序开发语言,使用OpenCV库用于处理图像和绘制用户界面。在嵌入式上实现的ACF目标检测程序主要分为以下几个部分:

1) 读取模型文件。使用MatIO库读取ACF目标检测模型文件。目标模型文件主要分为参数部分和数据部分。参数部分包含模型尺寸、特征金字塔的计算参数以及其他训练时使用的参数。数据部分为增强决策树的节点列表。

2) 计算图像特征金字塔。特征金字塔由多个尺度组成,根据快速特征金字塔算法,为了加速特征图的运算,仅在特征金字塔的2倍数尺度上计算实际特征图(1倍、0.5倍、0.25倍等)。2倍数尺度的实际特征图是通过降采样原始RGB图像到相应尺寸,然后在缩小后的图像上计算多通道特征得到的,其余尺度的估计特征图直接从2倍数尺度的实际特征图上根据幂法则进行减采样得到。尺度的数量由图像和检测窗口的尺寸决定。本文中,每2倍数采样8个尺度,其中1个尺度由原图运算得到,剩余7个尺度的估计特征图是从实际特征图根据幂法则进行降采样得到。对图像尺寸为320×240像素,检测窗口尺寸为40×40像素的情况,尺度数量为log2(240/40)×8+1≈22。程序需要计算每个尺度上的10通道特征图,分别为Y、U、V颜色通道、梯度幅值通道和6个梯度方向通道。

由于多个2倍数尺度下的特征图计算是相互独立的,因此使用Intel TBB并行计算库的parallel_for库函数进行多核并行运算,充分发挥多核处理器的优势。

另外,嵌入式系统使用的基于ARM Cortex-A53的微处理器,内核版本为ARM v7l,支持NEON指令集,可进行单指令多数据流(SIMD)的单核并行运算,以加快特征图的计算。而MATLAB计算机视觉工具箱中,提供了基于x86平台的特征图计算程序,采用SSE2指令集进行SIMD运算。因此,本文通过替换SSE2的头文件emmintrin.h为SSE2NEON.h,将MATLAB计算机视觉SSE2NEON.h文件使用了一个简单的API翻译层,将SSE指令转换为对应的NEON指令。经过测试,使用该翻译层不影响程序的计算结果,并保留了SIMD并行计算的速度优势。

在完成所有尺度下的特征图计算后,程序将平滑每个特征图,并在每个特征图的4边通过复制或零填充的方式,增加6个像素的大小,也就是检测框外尺寸与内尺寸之间的差,以保证检测框可以覆盖特征图的每个部分。这一步同样采用了parallel_for库函数进行多核并行优化。

3) 遍历特征金字塔,应用分类器来检测目标。ACF目标检测算法中的增强决策树分类器将一个高维特征向量作为输入数据。该特征向量从特征金字塔中提取,位置对应于检测框所在的区域。本文的头肩特征向量共有10(通道)×(40/2)(宽)×(40/2)(高)=4 000个维度。增强决策树中的弱分类器是输出为浮点型权值的二叉决策树,权值可能为正或负值。从二叉决策树的根节点开始,根据该节点的给定阈值与特征向量的指定维度的特征值之间的大小关系,选择对应的左子节点或右子节点,并在子节点上重复这一步骤,直到该节点不存在子节点。然后,将该节点对应的权值作为该分类器的输出值,输出的权值带有符号,权值越大说明检测框是待检测目标的概率越大。

程序将在特征金字塔中每个尺度下的多通道特征图上分别进行滑动窗口检测。对每个检测框,按次序遍历增强决策树中的每个弱分类器,求出该检测框在每个弱分类器下的权值,并对该权值累积求和。若权值之和小于给定负阈值,说明检测框是待检测目标的概率极小,立即停止遍历,跳过该检测框。若遍历通过了所有的弱分类器,且权值之和大于给定阈值,说明检测框是待检测目标的概率大,输出其权值之和作为置信度,记为候选检测框,否则抛弃该检测框。程序对不同检测框的判定是相互独立的,为加快检测效率,对不同尺度下的特征图以及一张特征图上的不同行采用parallel_for库函数进行了多核并行加速。

由于使用了级联的检测方法,根据检测框与待检测目标之间的相似性,判定每个检测框需要计算的弱分类器数量。对不同的输入图像,检测所需时间可能相差近百倍。在典型情况下,检测所需时间与检测到的候选检测框数量成正比例关系。

4) 使用NMS算法,融合相似的候选检测框。本文使用贪婪算法进行非极大值抑制(NMS),将候选检测框按置信度从高至低排序,并全部标记为主要候选框。然后,遍历所有的主要候选框,对每个主要候选框,遍历其余置信度低于该候选框的主要候选框,若二者的重合率$Are{a_{A \cap B}}/{\rm{min}}(Are{a_A}, Are{a_B}) > 65\% $,则将置信度较低的候选框标记为次要候选框,遍历完毕后,得到若干个主要候选框(代表有若干待检测目标)。接下来,将每一个主要候选框作为一类,将所有次要候选框放入到与其重合率最高的主要候选框类中。最后,融合每一类的所有候选框,以这些候选框的置信度作为权值,将位置和尺寸的加权平均值作为融合后的位置和尺寸,取候选框置信度的最大值作为融合后的置信度。

经过以上步骤计算后,在图像中绘出检测到的目标位置,以及该目标的置信度和包含的候选框数量,图形用户界面(GUI)如图 6所示。

图 6 嵌入式ACF目标检测程序图形界面截图
Fig. 6 GUI of the embedded ACF object detection program

4 实验分析

首先在PC平台上,采用INRIA数据集验证ACF头肩检测模型效果,与其他行人检测模型进行比较,并分析ACF头肩检测器存在的问题。然后将模型文件拷贝到ARM-Linux平台上,运行针对嵌入式系统优化的ACF头肩检测程序,进行实际环境下的多视角、多姿态的实时人体头肩图像检测实验,验证头肩检测效果和程序运行效率。

4.1 在INRIA数据集上的验证

INRIA行人检测数据集中的测试集共有288幅包含人体的正样本图像。由于INRIA测试集中的样本为人体样本,与检测目标人体头肩部分不符,因此将其中的人体标注框裁剪为其顶部1/3的区域作为头肩标注框,修改后的测试样本集简写为INRIA-1/3数据集。

在所有正样本图片上分别运行ACF头肩检测器,对比测试集标注和头肩检测结果。若某个头肩检测结果与任何一个标注框的重合面积大于头肩检测结果面积的50%,则认为二者匹配。

匹配失败的检测结果(即被判定为正样本,但事实上是负样本)记为误检(FP);匹配成功的检测结果(即被判定为正样本,事实上也是正样本),记为TP(true positive);标注框没有与检测结果匹配(即被判定为负样本,但事实上是正样本),记为漏检(FN)。

图像的平均误检数称为误检率(FPPI)。漏检率(MR)定义为

$ {f_{{\rm{MR}}}} = \frac{{{\rm{FN}}}}{{{\rm{TP}} + {\rm{FN}}}} $

验证ACF头肩检测器的最后一步是剔除置信度低于阈值的检测结果。不同的置信度阈值将产生不同检测结果,使FPPI和MR发生变化。将不同置信度阈值下的FPPI和MR绘制为曲线,称为ROC(receiver operating characteristic)曲线,常用于评价检测器的检测效果,如图 7所示。ROC曲线越靠近左下角,检测效果越好。图例中的百分比数值表示对应ROC曲线的对数平均漏检率,虚线代表ACF头肩检测器在INRIA-1/3数据集上的ROC曲线,对数平均漏检率为32.15%。

图 7 ACF头肩检测器在多个测试集上的ROC曲线
Fig. 7 ROC of ACF head-shoulder detector on multiple datasets

ACF检测器在INRIA-1/3数据集上置信度最高的误检样本如图 8所示。从图 8可以看出,由于INRIA测试集有部分图像样本缺少对人体头肩图像的标注,部分未标注的人体头肩图像会被作为误检样本,导致误检率虚高。为获得更准确的验证结果,本文重新标注了INRIA测试集中的头肩图像,重标注后的头肩数据集简写为INRIA-HS(INRIA-head-shoulder)。

图 8 置信度最高的误检样本(INRIA-1/3测试集)
(白色数字为样本置信度)
Fig. 8 FP samples with highest score from INRIA-1/3 test set
(white number is sample confidence)

4.2 在INRIA-HS数据集上的验证

INRIA-HS数据集包含781个人体头肩样本,样本尺寸的分布如图 9所示。

图 9 INRIA-HS测试集样本高度分布
Fig. 9 Sample height distribution from INRIA-HS test set

图 7中实线代表ACF头肩检测器在INRIA-HS数据集上的ROC曲线,对数平均漏检率为41.22%。图 10为ACF头肩检测器在INRIA-HS测试集上的部分漏检样本,其中大部分都是较为模糊的小尺寸头肩图像。说明ACF头肩检测器对小尺寸的头肩图像检测效果不佳,从而导致在INRIA-HS测试集上的对数平均漏检率较高。

图 10 部分漏检样本(INRIA-HS测试集)
Fig. 10 Missed samples from INRIA-HS test set

若忽略INRIA-HS数据集中高度小于50像素的头肩样本,对应的ROC曲线为图 7中点划线,对数平均漏检率为16.61%。与包含小尺寸头肩样本的INRIA-HS数据集相比,漏检率下降了很多。

图 11是过滤了小尺寸样本后的INRIA-HS数据集的漏检样本。

图 11 漏检样本(INRIA-HS测试集,样本高度≥50像素)
Fig. 11 Missed samples from INRIA-HS, sample height≥50 pixels

图 11可以看出,漏检样本大部分是由于拍摄或光照原因造成的模糊图像,或从背部拍摄且人眼都难以分辨的头肩图像。说明ACF头肩检测器极度依赖于图像的梯度信息,对尺寸过小、拍摄模糊或光照不足的头肩图像,由于无法提供足够的梯度信息,漏检率较高。

几种主流的行人检测算法在INRIA行人检测数据集上的ROC曲线和对数平均漏检率如图 12所示[1]。除RPN+BF[17]和F-DNN[18]属于基于神经网络的方法外,其余都属于统计学习算法。与基于统计学习的行人检测算法相比,本文使用的ACF头肩检测器的对数平均漏检率达到了主流水准,算法具有实用性,经过一定的优化和加速后,可在嵌入式系统上用于头肩检测。

图 12 行人检测算法在INRIA数据集的ROC曲线
Fig. 12 ROC of pedestrian detection algorithm on INRIA dataset

4.3 嵌入式实时头肩检测实验分析

在室内环境下使用嵌入式系统对多视角、多姿态人体头肩目标进行检测实验。实验平台为树莓派3代B型,硬件主要包括博通BCM2837微处理器(4核1.2 GHz ARM Cortex-A53)、1 GB的LPDDR2内存以及带有广角镜头的摄像头,如图 13所示。由于广角镜头造成的图像畸变对本文提出的头肩检测效果影响不大,故没有进行图像桶形校正。

图 13 嵌入式实时头肩检测模块
Fig. 13 Embedded realtime head-shoulder detecting module

首先在ACF目标检测程序中加载头肩模型文件,文件大小约为2.4 MB。然后对拍摄到的多视角、多姿态画面进行实时头肩检测。算法的实时性能如表 1所示。

表 1 嵌入式实时头肩检测耗时
Table 1 Time of embedded head-shoulder detection

下载CSV
分辨率
(宽×高)/像素
计算特征
耗时/ms
应用分类器
最小耗时/ms
320×240 38 7
480×320 87 16
480×360 103 18
640×480 178 35
960×720 430 90
1 280×960 840 168

对单幅320×240像素的图像,当画面中没有待检测目标和疑似待检测目标的物体,检测仅需9~15 ms;当存在人体头肩目标时,每多一个候选检测框,检测耗时增加约2 ms。采用优化后的特征金字塔程序,计算特征耗时仅需38 ms左右,满足实时性的要求。

图 14是本文提出的ACF头肩检测器的运行效果。从图 14(a)(b)可以看出,对多视角、多姿态的场景,均可以准确检测出人体的头肩目标。同时,正确头肩目标与错误头肩目标之间的置信度相差较多,可以准确区分。图 14(c)是对画面中同时存在多人情况的检测效果。图 14(d)显示,在弱光环境下,也可以检测到人体头肩目标。图 14(e)中的目标与摄像头约有7 m的距离,表明当目标较远,图像分辨率增加到640×480像素后,也可以有效检测人体头肩目标。

图 14 树莓派上的ACF头肩检测器运行效果
Fig. 14 Results of ACF head-shoulder detector run on Raspberry Pi
((a) standing position; (b) sitting position; (c) multi people; (d) ambient light scene; (e) long distance object)

5 结论

本文提出了一种嵌入式实时人体头肩检测方法,使用从人体姿态数据集中生成的人体头肩样本,利用聚合通道特征进行人体头肩分类器的训练。该头肩分类器对多种视角下不同姿态的人体头肩都有良好的检测效果,人体检测精度接近主流的行人检测算法。与以往的头肩检测方法相比,本文方法不依赖于运动信息,对环境和人体姿态的适应性强。同时,针对ARM-Linux嵌入式系统,实现了基于ACF的嵌入式实时人体头肩检测程序,并进行了多核并行与单指令多数据流优化。本文方法对硬件要求低,具有较快的检测速度,可以用于人体检测(包括采集与检测一体化的智能人体检测系统)、智能视频监控和车辆辅助驾驶等领域。

参考文献

  • [1] Dollar P, Wojek C, Schiele B, et al. Pedestrian detection:an evaluation of the state of the art[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2012, 34(4): 743–761. [DOI:10.1109/TPAMI.2011.155]
  • [2] Jing Y, Liu L, Huang H Z, et al. Fast human detection based on HOG feature of head-shoulder model[J]. Video Engineering, 2014, 38(15): 227–230. [景阳, 刘琳, 黄鸿志, 等. 基于头肩HOG特征的快速行人检测[J]. 电视技术, 2014, 38(15): 227–230. ] [DOI:10.3969/j.issn.1002-8692.2014.15.056]
  • [3] Lin J, Ruan X G, Yu N G. Human recognition approach based on head-shoulder model[J]. Computer Measurement & Control, 2016, 24(12): 205–208. [林佳, 阮晓钢, 于乃功. 基于头肩模型的人体识别方法[J]. 计算机测量与控制, 2016, 24(12): 205–208. ] [DOI:10.16526/j.cnki.11-4762/tp.2016.12.059]
  • [4] Zhang H, An G C, Zhang F J, et al. Moving human detection algorithm with merging of multiple color space[J]. Journal of Image and Graphics, 2011, 16(10): 1944–1950. [张欢, 安国成, 张凤军, 等. 多颜色空间融合的人体检测算法研究[J]. 中国图象图形学报, 2011, 16(10): 1944–1950. ] [DOI:10.11834/jig.20111023]
  • [5] Li N, Gong Y, Xu J L, et al. Semantic feature-based visual attention model for pedestrian detection[J]. Journal of Image and Graphics, 2016, 21(6): 723–733. [黎宁, 龚元, 许莙苓, 等. 视觉注意机制下结合语义特征的行人检测[J]. 中国图象图形学报, 2016, 21(6): 723–733. ] [DOI:10.11834/jig.20160605]
  • [6] Qi M B, Li J, Jiang J G, et al. Pedestrian detection based on improved feature and GPU acceleration[J]. Journal of Image and Graphics, 2018, 23(8): 1171–1180. [齐美彬, 李佶, 蒋建国, 等. 改进特征与GPU加速的行人检测[J]. 中国图象图形学报, 2018, 23(8): 1171–1180. ] [DOI:10.11834/jig.170517]
  • [7] Xiao H J, Zhao S G, Zhang L. Head-shoulder detection HOG-LBP-based feature fusion[J]. Microcomputer & Its Applications, 2015, 34(5): 43–46, 50. [肖华军, 赵曙光, 张乐. 基于HOG-LBP特征融合的头肩检测研究[J]. 微型机与应用, 2015, 34(5): 43–46, 50. ] [DOI:10.3969/j.issn.1674-7720.2015.05.015]
  • [8] Qin S, Xie G, Rao Q, et al. Head-shoulder detection based on LW-PGD and SVM in video[J]. Application Research of Computers, 2014, 31(3): 949–952. [钦爽, 谢刚, 饶钦, 等. 视频中基于LW-PGD和SVM的头肩部检测[J]. 计算机应用研究, 2014, 31(3): 949–952. ] [DOI:10.3969/j.issn.1001-3695.2014.03.075]
  • [9] Dollár P, Appel R, Belongie S, et al. Fast feature pyramids for object detection[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2014, 36(8): 1532–1545. [DOI:10.1109/TPAMI.2014.2300479]
  • [10] Liu T R, Stathaki T. Fast head-shoulder proposal for scare-aware pedestrian detection[C]//Proceedings of the 10th International Conference on PErvasive Technologies Related to Assistive Environments. Island of Rhodes, Greece: ACM, 2017: 319-324.[DOI:10.1145/3056540.3076202]
  • [11] Oren M, Papageorgiou C, Sinha P, et al. Pedestrian detection using wavelet templates[C]//Proceedings of 1997 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. San Juan, Puerto Rico, USA: IEEE, 1997: 193-199.[DOI:10.1109/CVPR.1997.609319]
  • [12] Dalal N, Triggs B. Histograms of oriented gradients for human detection[C]//Proceedings of 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. San Diego, CA, USA: IEEE, 2005, 1: 886-893.[DOI:10.1109/CVPR.2005.177]
  • [13] Andriluka M, Pishchulin L, Gehler P, et al. 2D human pose estimation: new benchmark and state of the art analysis[C]//Proceedings of 2014 IEEE Conference on computer Vision and Pattern Recognition. Columbus, OH, USA: IEEE, 2014: 3686-3693.[DOI:10.1109/CVPR.2014.471]
  • [14] Benenson R, Omran M, Hosang J, et al. Ten years of pedestrian detection, what have we learned?[C]//Proceedings of the Computer Vision-ECCV 2014 Workshops. Zurich, Switzerland: Springer, 2014: 613-627.[DOI:10.1007/978-3-319-16181-5_47]
  • [15] Dollár P, Belongie S J, Perona P. The fastest pedestrian detector in the west[C]//Proceedings of the British Machine Vision Conference 2010. Aberystwyth, UK: BMVA Press, 2010: #7.[DOI:10.5244/C.24.68]
  • [16] Appel R, Fuchs T, Dollár P, et al. Quickly boosting decision trees: pruning underachieving features early[C]//Proceedings of the 30th International Conference on Machine Learning. Atlanta, GA, USA: JMLR.org, 2013: Ⅲ-594-Ⅲ-602.
  • [17] Zhang L L, Lin L, Liang X D, et al. Is faster R-CNN doing well for pedestrian detection?[C]//Proceedings of the 14th European Conference on Computer Vision - ECCV 2016. Amsterdam, The Netherlands: Springer, 2016: 443-457.[DOI:10.1007/978-3-319-46475-6_28]
  • [18] Du X Z, El-Khamy M, Lee J, et al. Fused DNN: a deep neural network fusion approach to fast and robust pedestrian detection[C]//Proceedings of 2017 IEEE Winter Conference on Applications of Computer Vision. Santa Rosa, CA, USA: IEEE, 2017: 953-961.[DOI:10.1109/WACV.2017.111]