Design and implementation of human posture detection system
-
摘要: 针对铁路岗位监控视频需要大量人力查看的问题,设计并实现了人体姿态检测系统,实现7×24 h不间断智能检测。运用人体姿态检测算法对人体关键点进行提取,构建特征向量,通过支持向量机分类算法得到姿态类别,通过滑动窗口法判断是否有异常行为,当发生异常时进行本地提醒和远程报警。在行车室和机车司机室2种环境下进行测试,结果表明,该方法对于人员异常行为的召回率和准确率均达到97%以上,具有实用价值,可以为铁路岗位管控提供有效方法。Abstract: In view of the problem that the railway post monitoring video needs a lot of manpower to view, a human posture detection system was designed and implemented to realize 7 × 24 h uninterrupted intelligent detection.This paper used the human posture detection algorithm to extract the key points of the human body, constructed the feature vector, obtained the posture category through the support vector machine classification algorithm, judged whether there was abnormal behavior through the sliding window method, and carried on the local reminder and remote alarm when there was abnormal. The system was tested in the railway operation room and locomotive cab. The results show that the recall rate and accuracy rate of abnormal behavior are above 97%, which has practical value and can provide an effective method for railway post management and control.
-
机车司机、行车室值班人员等关键岗位在铁路运营中发挥着至关重要的作用,这些岗位人员的规范行为对铁路运行安全保障起着重要作用。目前,铁路系统主要采用人工查看的方式进行监督审查,需要大量人力资源,审查效率低,及时性差。因此需要一种可靠、实时的智能化管控系统,督查工作人员的行为姿态,当发现违规行为时及时发出预警,提醒纠正,保障铁路系统的安全运行。
随着人工智能技术的广泛应用,利用深度学习对视频图像分析已成为未来的发展趋势,人体姿态检测算法在越来越多的场景中进行应用。魏非凡[1]提出多尺度级联的人体姿态检测算法,通过人体动作分类器实现多人人体行为识别。郑雪晨[2]提出基于人体姿态检测的异常跌倒检测方案,可以实时监护老人状态。王家兴[3]使用人体姿态检测算法完成铁路调车作业人员手的信号多分类任务,对作业人员手的动作进行分析判断。邓伟男[4]利用人体姿态检测算法提取空中交通管制员的姿态,检测是否出现疲劳风险。
目前,尚未有将人体姿态检测算法应用在铁路岗位管控方面的报道,本文设计人体姿态检测系统,自动检测值班人员是否有脱岗、睡觉、躺靠等异常行为,纠正异常行为,避免潜在的安全隐患,从而提升铁路运营安全。
1 算法设计
1.1 算法背景
人体姿态检测是指从图像或视频中检测人体骨骼关键点,通过连接有效的骨骼关键点创建肢体姿态,以人体骨骼架构形式表达人体运动的过程[5],如图1所示。
近年来,研究人员提出了多种人体姿态检测的方法,最早的方法仅在单人图像中检测人体姿态。但是在真实的场景中,图像中存在多个目标,单人姿态检测的方法难以满足应用需求[6]。
多人姿态检测与单人姿态检测相比要更复杂,主要包括自上而下和自下而上2种检测方法。(1)自上而下的方法先检测图像中人体的位置信息,再按照单人姿态检测的方法检测人体骨骼关键点,从而恢复每个人的姿态[7]。(2)自下而上的方法先检测图像中的所有人体骨骼关键点,再将关键点根据从属关系分组连接,从而找出属于各个人体骨骼的关键点[8]。表1所示为2种方法的检测流程和特性。
表 1 多人姿态检测方法流程及特性[9]方法 检测流程 特性 自上而下 先检测人体位置,再检测骨骼关键点。 依赖人体位置检测结果,易出现重复或遗漏检测;算法检测速度与人员数量成正比,在复杂场景下缓慢,但准确率
更高。自下而上 先检测人体骨骼关键点,再聚类处理不同个体。 算法检测速度与人员数量无关,检测
速度明显快于自上而下法,但易出现人体骨骼关键点间错误连接。1.2 算法介绍
1.2.1 姿态检测
考虑到系统检测精度问题,本文采取自上而下的Alphapose[10]算法进行人体姿态检测,网络结构主要由3部分组成,分别是对称空间变换网络(SSTN,Symmetric Spatial Transformer Network)模块、非极大抑制(NMS,Non Maximum Suppression)模块和姿态引导区域生成器(PGPG,Pose Guided Proposals Generator)模块,如图2所示。
SSTN模块由空间变换网络(STN,Spatial Transformer Network)、单人姿态检测器(SPPE,Single Person Pose Estimator)、空间反变换网络(SDTN,Spatial De-Transformer Network)模块组成,STN接收提取到的人体目标,得到准确的人体候选框;SPPE模块得到单人人体姿态;SDTN模块将估计的姿态映射回原始图像坐标,据此可以调整原来的检测框,使检测框更精准。
通过目标检测算法获得人体检测框后依次经过STN、SPPE和SDTN模块,生成姿态候选区域,并通过NMS模块获得唯一的人体姿态。PGPG模块用来进行数据增强,生成训练图像来训练SSTN模块。在训练阶段,引入Parallel SPPE模块,可以避免局部最优,进一步提升SSTN模块性能。
1.2.2 姿态分类
采用支持向量机(SVM,Support Vector Machines)对人体姿态进行分类,SVM的核心思想是求解能够正确划分数据集且几何间隔最大的超平面,如图3所示,
$ \omega \cdot x+b=0 $ 为分离超平面。线性可分数据集拥有无穷多个超平面,但是有且仅有一个几何间隔最大的分离超平面。在线性不可分的数据集中,SVM在低维空间通过核函数将输入映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而将低维空间不易分离的非线性数据分开[11]。
1.2.3 滑动窗口
滑动窗口法通过融合一段时间内的检测结果来输出判断结果,避免单次误检引起的误报。如图4所示,T = 0表示第0时刻的窗口位置;L = 3表示窗口的长度为3,融合前后3次检测结果;S = 2表示步长为2,到下一时刻窗口向前移动2个位置。
N表示检测没有异常,Y表示检测有异常。
(1)T = 0时刻,在长度为3的窗口内,结果均为N,则最终判断该时刻没有异常;(2)T = 1时刻,有一次检测结果为Y,而其余两次结果为N,这一次的Y可能是误检引起,则最终判断该时刻没有异常;(3)T = 2时刻,有2次结果检测为Y,一次检测结果为N,最终判断该时刻有异常。依此类推,可以得到每个时刻的判断结果。
窗口长度会影响最后结果的灵敏度,长度越长,对某次异常的响应越不灵敏;步长长度会影响最后结果的精度,步长越短,精度越高,但耗时会增加。可以根据实际应用场景灵活配置滑动窗口的长度及步长,达到最优检测效果。
2 系统设计
2.1 系统框架
人体姿态检测系统框架,如图5所示,通过接入摄像头视频数据,在服务端完成智能识别,当检测到异常行为时,支持现场报警与远程报警2种方式,现场通过声光报警器进行提醒,也可以将报警信息发送到远程安监部门。系统支持通过客户端配置相关参数,以及远程查看实时检测结果。
2.2 系统功能
人体姿态检测系统主要包括以下功能。
(1)本地提醒:通过本地语音和声光报警器提醒人员及时纠正。
(2)远程报警:当人员未在规定的时间内及时纠正异常行为,则向远程相关管理部门发送报警信息。
(3)配置管理:系统支持客户端配置,设置检测区域、检测行为类别、违规持续时间、检测时间段等参数,以及报警相关接口。
(4)异常记录:报警历史信息包括报警时间、报警地点、报警行为以及对应的图片,做到有据可循。
(5)远程查看:支持客户端远程查看视频,显示人体姿态检测结果。
2.3 检测流程
系统检测流程,如图6所示,主要包含以下步骤。
(1)采集摄像头视频进行图像解码,通过人体姿态检测输出人体骨骼关键点,利用关键点之间的有效连接构造特征向量。
(2)利用SVM算法将姿态分类为“正常”或“异常”[8],异常行为包含脱岗、睡觉、躺靠、翘腿等行为。
(3)将分类结果送入滑动窗口模块,判断在连续时间段内是否有违规行为,当出现违规行为时首先进行本地语音提醒,判断违规行为变化,如果在规定时间内仍未纠正,则向安监部门远程报警。
考虑到摄像头安装角度、距离差异,检测出的人体大小尺度不一,关键点之间的距离也会有大的区别,比如,当人体目标尺寸较大时,左眼与右眼之间距离较大,反之,当人体目标尺寸较小时,左眼与右眼之间的距离也会变小。如果直接进行分类,会导致算法缺少鲁棒性,无法适应不同场景。
为了解决不同人体大小带来的影响,结合人体检测框信息对人体姿态检测输出的18个人体骨骼关键点进行归一化处理,即将关键点的横坐标
$ {x}_{i} $ 除以人体检测框的宽度$ {p}_{w} $ ,纵坐标$ {y}_{i} $ 除以人体检测框的高度$ {p}_{h} $ ,利用归一化后的值$ {x}_{i\_norm} $ 、$ {y}_{i\_norm} $ 计算相邻人体骨骼关键点之间的距离,如式(1)$$ {x}_{i\_norm}=\frac{{x}_{i}}{{p}_{w}} , \;\;\;\;\; {y}_{i\_norm}=\frac{{y}_{i}}{{p}_{h}} $$ (1) 将18个人体骨骼关键点和对应的距离展开成1 ×54维的特征向量,输入SVM模型进行分类,得到最终的姿态类别。
3 系统应用
利用人体姿态检测可以实现铁路系统重点岗位工作人员的管控,例如行车室值班员、机车驾驶员等。通过人体姿态检测系统监管重点岗位人员的工作状态,管控重点岗位人员的行为规范。
3.1 测试环境
本文采用嵌入式设备进行系统部署及测试,设备参数,如表2所示。
表 2 设备参数名称 参数 CPU 8-core ARM v8.2 64 bit CPU GPU 512-core Volta GPU 内存 32 GB 256 bit LPDDR4 存储 32 GB eMMC 5.1 系统 Ubuntu18.04 训练环境 Pytorch1.1.0, Python3.6, Torchvision 0.3.0 其它软件 OpenCV 3.4.0, CUDA 10.2, TensorRT 7.0.0 3.2 行车室值班员姿态管控
行车室是铁路运输生产的重要组成部分,是车站的“中枢神经”和指挥中心,主要职责是车站的调度指挥和接发列车作业,保证日常运输作业的安全和列车的正点率。
采用人体姿态检测系统,可以实现对行车室值班人员7 × 24 h的实时管控。当人员出现违规行为时,如睡觉、脱岗、躺靠等行为,通过值班室的声光报警器提醒值班人员纠正行为。如果值班人员未在规定的时间内恢复,则发送远程报警信息给指定的安监部门,避免潜在的安全隐患,检测效果,如图7所示。
3.3 机车司机姿态管控
机车内通常安装有视频监控摄像头,但受限于传输条件,目前,主要通过视频拷贝到指定地点,采用人工方查看的方式对视频抽查,无法实现对机车司机的实时管控。
人体姿态检测系统可以部署于便携的嵌入式系统中,对机车视频进行实时分析,发现司机的违规行为时(如脱岗、视线脱离前方、睡觉等)通过声光报警器提醒司机及时纠正违规行为。对于严重违规行为,还可通过4G网络向远程发送报警信息,实现风险预警,避免事后追责,从而保障行车安全。机车司机姿态检测效果,如图8所示。
3.4 测试结果
为了验证人体姿态检测系统的应用效果,分别采集行车室值班员和机车司机视频,对每帧视频数据分析,检测是否存在异常行为。
利用准确率与召回率指标来评估算法的有效性,准确率表示检测出违规行为的正确率,召回率表示违规行为的检出率,测试统计结果,如表3所示。
表 3 测试统计结果评价指标 行车室 机车室 准确率 召回率 准确率 召回率 脱岗 99% 100% 99% 100% 睡觉 98% 98% 98% 99% 躺靠 98% 97% – – 视线脱离前方 – – 97% 98% 从表3中可以看出,在行车室中,异常行为的检测准确率≥ 98%,召回率≥ 97%;在机车室中,异常行为的检测准确率≥ 97%,召回率≥ 98%,具有实用价值。目前,该系统已在中国铁路兰州局集团有限公司部署试用,并取得良好效果,下一步将进行推广应用。
4 结束语
本文研究了人体姿态检测系统在铁路岗位管控中的应用,以人体姿态检测算法为基础,结合SVM分类算法与滑动窗口法,对行车室和机车司机的行为进行检测与管控,实现了两级预警。
为了提升系统的实用性,未来可以增加更多的检测类别,应用于手势识别、滑倒检测、打架检测等领域中,扩大系统的应用范围。
-
表 1 多人姿态检测方法流程及特性[9]
方法 检测流程 特性 自上而下 先检测人体位置,再检测骨骼关键点。 依赖人体位置检测结果,易出现重复或遗漏检测;算法检测速度与人员数量成正比,在复杂场景下缓慢,但准确率
更高。自下而上 先检测人体骨骼关键点,再聚类处理不同个体。 算法检测速度与人员数量无关,检测
速度明显快于自上而下法,但易出现人体骨骼关键点间错误连接。表 2 设备参数
名称 参数 CPU 8-core ARM v8.2 64 bit CPU GPU 512-core Volta GPU 内存 32 GB 256 bit LPDDR4 存储 32 GB eMMC 5.1 系统 Ubuntu18.04 训练环境 Pytorch1.1.0, Python3.6, Torchvision 0.3.0 其它软件 OpenCV 3.4.0, CUDA 10.2, TensorRT 7.0.0 表 3 测试统计结果
评价指标 行车室 机车室 准确率 召回率 准确率 召回率 脱岗 99% 100% 99% 100% 睡觉 98% 98% 98% 99% 躺靠 98% 97% – – 视线脱离前方 – – 97% 98% -
[1] 魏非凡. 基于人体姿态估计的行为识别算法[D]. 长沙: 国防科技大学, 2018. [2] 郑雪晨. 基于姿态估计的异常跌倒检测[D]. 杭州: 杭州电子科技大学, 2020. [3] 王家兴. 基于深度数据特征的铁路手信号姿态识别[D]. 北京: 北京交通大学, 2019. [4] 邓伟男. 基于深度学习的管制员状态检测研究[D]. 广汉: 中国民用航空飞行学院, 2020. [5] 赵 勇,巨永锋. 基于改进卷积神经网络的人体姿态检测 [J]. 测控技术,2018,37(6):14-19. [6] H. Li, W. Yang and Q. Liao. Temporal Feature Enhancing Network for Human Pose Estimation in Videos[C]//2019 IEEE International Conference on Image Processing (ICIP). Taipei:IEEE, 2019: 579-583.
[7] K. Sun, B. Xiao, D. Liu and J. Wang. Deep High-Resolution Representation Learning for Human Pose Estimation[C]//2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). Long Beach, CA, USA: IEEE, 2019: 5686-5696.
[8] S. Kreiss, L. Bertoni and A. Alahi. PifPaf: Composite Fields for Human Pose Estimation[C]//2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). Long Beach, CA, USA: IEEE, 2019: 11969-11978.
[9] 陈栋策. 基于视频分析的电动扶梯行人安全监测系统软件研发[D]. 杭州: 浙江大学, 2019. [10] H. Fang, S. Xie, Y. Tai and C. Lu. RMPE: Regional Multi-person Pose Estimation[C]//2017 IEEE International Conference on Computer Vision (ICCV). Venice, Italy: IEEE, 2017: 2353-2362.
[11] 杨 琳,苗振江. 一种人群异常行为检测系统的设计与实现 [J]. 铁路计算机应用,2010(7):37-41. DOI: 10.3969/j.issn.1005-8451.2010.07.012 -
期刊类型引用(4)
1. 阮进林,高鹏,孙源,赵明辉. 基于轻量级OpenPose的井下人员行为检测算法研究. 煤炭工程. 2024(04): 150-156 . 百度学术
2. 郭园,郭晨旭,时新. 基于OpenPose的学习坐姿监测系统研究. 电子设计工程. 2024(18): 37-41 . 百度学术
3. 钟昊,柴金川,宗孝鹏. 基于5G的编组站咽喉区异常检测系统. 铁路计算机应用. 2022(07): 51-57 . 本站查看
4. 何俊沣,周丽. 目标检测算法在衣着特征检测中的应用研究. 互联网周刊. 2021(22): 40-41 . 百度学术
其他类型引用(1)