1. 引言
随着社会经济的不断发展与进步,全社会高度重视高等教育,高校规模在不断变大。校园教室资源数量虽然也在不断增加,但是多数高校的空闲教室资源仍然比较紧张。学生对教室是否有空位及其排布情况无法便捷获取,盲目寻找耽误时间,影响学习效率。针对此现象,开发教室人数实时统计跟踪系统,并通过手机APP推送至师生,将极大便利师生及时获取教室人员情况。
考虑到教室内学生分布特点及教室建筑风格,通过检测学生头部特征,并使用AdaBoost级联分类器对提取的视频帧HOG样本特征进行训练,实现头部检测模型用于检测人数。开发的教室人数跟踪系统可将提取的教室人数和座位空闲位置分布推送到手机客户端上,且具有良好的识别率,极大地方便师生及时了解空闲教室资源。
2. 人数统计技术综述
当前越来越多的视频监控系统广泛应用在各类公共场所,如何从这些视频监控数据中提取出有用的信息,是该领域的研究热点和难点之一 [1] 。现阶段在人数统计方面,研究人员已提出很多方案。Mikoaljczyk提出先匹配头部、肩膀和脸部信息后,再确定人体的方法;Leibe提出通过提取关键点、Hough投票和Chamefr距离模板匹配的方法,实现人体检测;Viola等人采取Haar特征结合人体的动态姿势,利用Ada Boost算法来完成分类器的训练,实现了在视频中的快速检测出人数 [2] 。
文献 [3] 提取图像有效的Harris角点和SURF点信息,采用基于多分类器融合的算法实现人数检测,可以更准确的统计出多种复杂场景下的人数,包括被遮挡的行人和静止的行人,但计算特征值过多,步骤复杂;文献 [4] 提出一种基于卷积神经网络和密度分布特征的人数统计算法,但该算法未完全考虑距离远近对团块大小的影响以及非行人目标出现时的情况;文献 [5] 针对视频监控中步态识别算法精度低的问题,提出了一种基于时空HOG特征模板匹配的多镜头步态识别算法。该算法针对不同角度下运动特征差异基于双边傅立叶级数,适应于运动场景下人数检测。文献 [6] 采用基于Mean Shift图像分割和支持向量机判决实现电梯人数检测,较好的解决了检测候梯人数统计的问题,但统计准确率受检测的发色和肤色影响。
3. 理论依据
3.1. HOG特征
方向梯度直方图是一种常用的特征提取方法。HOG + SVM是对行人检测一个显著的特征提取方法 [7] 。在进行人体检测时,本系统采用方向梯度直方图HOG提取特征来实现。图1为HOG特征的检测流程,先对输入的图像灰度化和Gamma校正,然后进行梯度计算得到梯度方向直方图,最后对重叠块直方图归一化得到HOG特征。
Figure 1. The detection process of HOG feature
图1. HOG特征检测流程
在视频的一帧图像中,图像的梯度或边缘的方向密度分布可以很好地表示局部目标区域的特征。HOG正是利用这种统计梯度信息,并生成最终的特征描述 [8] 。梯度的方向分布被用作特征,沿着图片X和Y轴的方向上的梯度包含大量有效信息,图像的梯度去掉了很多不必要的信息,加重了轮廓。直方图的主要方向捕捉了人体的轮廓,例如可使用的头部信息。在HOG中,对一幅图像进行了如下划分:图像、检测窗口、图像块和细胞单元。
3.2. AdaBoost分类器
AdaBoost是一种自适应迭代的算法,其核心思想是调整数据的权重分布,训练中主要解决权重调整和模型如何组合的问题 [9] 。训练迭代过程中,错误预测的样本将会被赋予更高的权重,这样分类器就能在下次迭代时重点关注并最终取得一个较为合理的结果。
AdaBoost的表达式:
C
m
(
x
)
=
a
1
k
1
(
x
)
+
a
2
k
2
(
x
)
+
⋯
+
a
m
k
m
(
x
)
, (1)
其中,
m 为模型的迭代次数,每次迭代都会添加一个弱分类器,
k
i
(
x
) 为第
i 次迭代对应的弱分类器,输出值为
{
−
1
,
1
} 。
a
i 为第
i 个弱分类器对应的权重。
C
m
(
x
) 为最终的分类器,综合了所有的弱分类器预测结果 [10] 。
4. 系统设计与实现
4.1. 图像获取
步骤1:利用每个教室内安装的监控系统,每隔30秒抓取一次教室内场景图像,以此获得信息源。
步骤2:受光线和摄像头角度等采集环境的影响,采集到的图像通常需要进行预处理。首先,对采集的彩色图像进行灰度化处理,其转化公式为:
I
=
0.299
*
R
+
0.587
*
G
+
0.114
*
B
, (2)
其中,
I 为灰色图像,
R
,
G
和
B 分别为彩色图像的红、绿和蓝三分量。
步骤3:针对图像光照可能不均匀情况,对图像进行公式(3)所示的Gamma处理,采用平方根方法对图像亮度进行调整,
I
(
x
,
y
) 为输入像素值:
Y
(
x
,
y
)
=
I
(
x
,
y
)
, (3)
其中,
I
(
x
,
y
) 为灰色图像
I 在
(
x
,
y
) 处的像素值。
4.2. 人数检测
步骤1:人数统计系统的核心是人数检测算法。考虑到跟踪检测算法准确性和实时性要求,使用上述HOG特征与AdaBoost分类器相结合。利用式(2)、(3)对获取图像进行灰度化和Gamma处理,对于一个样本
f
i ,
i
=
1
,
2
,
3
,
⋯
,
N ,
N 为正样本个数,将其大小归一化。计算每一像素的水平和垂直方向梯度
G
x
(
x
,
y
)
,
G
y
(
x
,
y
) ,并相应的计算每个像素位置的梯度方向值,得到
f
i 的梯度幅值矩阵
m
i [11] 。其中像素点
(
x
,
y
) 的梯度如下式:
G
x
(
x
,
y
)
=
I
(
x
+
1
,
y
)
−
I
(
x
−
1
,
y
)
, (4)
G
y
(
x
,
y
)
=
I
(
x
,
y
+
1
)
−
I
(
x
,
y
−
1
)
. (5)
像素
(
x
,
y
) 处梯度幅值和梯度方向分别为:
m
i
(
x
,
y
)
=
G
x
(
x
,
y
)
2
+
G
y
(
x
,
y
)
2
, (6)
θ
(
x
,
y
)
=
arctan
(
G
y
(
x
,
y
)
G
x
(
x
,
y
)
)
. (7)
将所有样本的梯度幅值矩阵叠加得
M ,其中
(
x
,
y
) 位置的元素值为:
M
(
x
,
y
)
=
∑
i
=
1
N
m
i
(
x
,
y
)
. (8)
对
M 进行归一化处理:
M
˜
(
x
,
y
)
=
M
(
x
,
y
)
max
max
M
(
x
,
y
)
×
255. (9)
步骤2:然后将梯度图像转换成计算机能够读懂的数据特征语言。默认情况下,将图像分成若干个8 × 8像素单元格,采用9个bin的直方图来统计这8 × 8个像素的梯度信息,即将单元格的梯度方向360度分成9个方向块,然后对单元格内每个像素用梯度方向在直方图中进行加权投影,以构建梯度方向直方图 [12] 。最后,对统计出块的直方图特征做归一化处理,即对向量
β 做如下处理:
β
←
β
β
2
+
ε
2
. (10)
步骤3:在提取图像的HOG特征之后,使用AdaBoost分类器进行分类训练 [13] 。
输入:样本集
C
=
{
(
x
i
,
y
i
)
|
1
≤
i
≤
N
} ,特征集
F
C
1) 首先初始化样本权重
W
(
i
)
=
1
/
N ;
2) 在默认权重
W 和样本集
C 下,对每个特征
f
∈
F
C ,训练弱分类器
k
i
(
x
) ,并选取出最优的弱分类器;
3) 更新权重
W ;
4) 输出强分类器:
C
m
(
x
)
=
a
1
k
1
(
x
)
+
a
2
k
2
(
x
)
+
⋯
+
a
m
k
m
(
x
) 。
4.3. 数据推送
步骤1:安装MySQL数据库,命令行操作进入数据库并新建表单。表单中主要含有地点、时间和当前人数等字段;
步骤2:在Android studio中开发查询APP,Android采用JDBC直连MySQL,实现虚拟机和手机访问数据库,主要包括IP、MySQL数据库相关配置连接。
5. 系统测试与结果分析
5.1. 系统测试
为验证所采用算法的有效性,对获取的视频监控进行测试。视频为学生教室自习场景。实验的硬件平台为Intel(R) Core(TM) i7-7500U CPU @2.90 GHz,测试系统环境为Windows python 2.7。
首先,在监控视频中截取教室内一帧图像,如图2所示;其次,利用公式(2)实现对图像的灰度化处理;最后,根据公式(3)对图像进行Gamma处理,令γ为0.5,调整图像整体亮度。图像预处理结果,如图3所示。
Figure 2. Original image of video frame
图2. 视频帧原图
Figure 3. Pretreatment result
图3. 预处理效果图
利用公式(4)~(7),计算图3的水平和垂直方向梯度和每个像素位置的梯度方向值。图4为目标信息的梯度图。然后,将图像分成若干个8 × 8像素单元格。对单元格内每个像素用梯度方向在直方图中进行加权投影,图5为将每个单元格的梯度方向直方图绘出得到的特征图。
Figure 4. Gradient image
图4. 梯度图
Figure 5. Histogram of oriented gradient
图5. 梯度方向直方图
最后,从正样本池和负样本池中提取头部HOG特征,利用HOG + AdaBoost方式训练头部检测模型获得HOG特征分类器,图6为对视频帧图像人数检测结果。
Figure 6. System result of test
图6. 检测效果
5.2. 结果分析
5.2.1. 系统识别率分析
识别率R定义为:
R
=
|
教
室
实
际
人
数
−
系
统
统
计
人
数
|
教
室
实
际
人
数
×
100
%
. (11)
表1为对监控视频每隔30秒检测一次统计表,测试表明该系统对教室人数检测有良好的识别率。对原始图像进行预处理(图像灰度化和Gamma校正)的步骤可减弱周围环境对检测的影响,从而提高系统识别率,且系统识别率随人数的增加呈降低趋势。在不遮挡头部特征的条件下,系统识别准确率均高于75%,基本满足教室人数实时统计的需求。
Table 1. Recognition rate statistics
表1. 识别率统计
人数统计的评价指标用准确性衡量,其中准确性使用平均绝对误差(MAE)和平均均方误差(MSE)计算。表2是现有的其他算法和本文算法测试比较结果 [4] 。
Table 2. Evaluation of experimental indicators
表2. 实验指标评价
通过对比可得出,相比较近年人数统计领域内其他学者提出的算法,本文采用算法的测试结果在准确率上有所高。相比于Cumulative Attribute Regression研究结果,精度提高了13.04%;相比于Clustering motion cues研究结果,精度提高了39.39%;相比于Head detection研究结果,精度提高了25%,验证了算法的有效性。但本文算法的MSE较高,识别率波动大,对复杂环境适应性弱。
5.2.2. 系统延时分析
在上述测试硬件环境下,系统对图像大小为832 × 1691的视频帧识别检测平均时间约435 ms,对图像大小为1664 × 3382的视频帧识别检测平均时间约780 ms。因此,对于在实际中每隔30 s采样一次图像进行处理,本系统可实现近实时处理。
6. 结论与展望
通过HOG + AdaBoost方式训练头部检测模型,实现教室人数检测。相较于传统的传感器检测人数,用计算机视觉识别更为准确可靠。在识别算法上,使用AdaBoost级联分类器训练HOG特征。该方案成熟可靠,易于实现。最后,本系统将相关数据推送到手机客户端上,更加直观,便捷。系统测试结果表明:该系统在不遮挡头部有效信息情况下,识别率可达80%以上,且系统具有良好的实时性能。
然而,本系统针对人头部存在部分遮挡情况,识别率有待进一步提高,下一步拟结合卷积神经网络和密度分布特征算法以提高系统检测准确率与稳定性。
致谢
非常感谢国家自然科学基金“大容量高安全的加密域图像可逆水印算法研究”(61501465)和江苏省大学生创新训练项目“基于智能视觉物联网的教室人数跟踪系统”(201810290061X)对该文的资助。