APP下载

目标检测、人体姿态估计算法叠加的监控视频分析方法

2020-02-05李宾皑李颖孙宇飞顾书玉

电子技术与软件工程 2020年7期
关键词:关节点姿态危险

李宾皑 李颖 孙宇飞 顾书玉

(1.国网上海市电力公司建设部 上海市 200120 2.南京七宝机器人技术有限公司 江苏省南京市 211100)

随着近年来电力系统基础建设的快速发展,基建安全管理的压力也日益增大。安全管理主要方式是视频监控,而传统视频监控主要靠人工盯屏的方式,属于被动监控[1],监控人员在长时间实行监控任务的过程中会出现过于疲劳的状态,容易导致误报、错报、漏报。因此,为了实现安全管控的自动化,对监控视频进行智能实时分析进行研究有重要意义。

在监控系统中,监控的目标对象大部分是人员,可以利用人体姿态估计算法来得到被监控视频中的人员行为信息,但是仅仅关注人员姿态又有一定的局限性,无法发现其他的危险源,如:火源、坑洞等。因此可以先利用目标检测算法识别出所有和安全相关的目标物体,然后和人体姿态信息进行结合分析,提升危险行为识别分析的准确性。

目标检测可以理解为物体识别加上物体定位,识别出物体类型,以及物体在图片中的位置。目前目标检测模型主要分为两大类。一类是two-stage,它将目标检测分为两个阶段,先产生候选区域(region proposals),然后对候选区域分类,这一类的典型代表是R-CNN[2]系列算法,包括:R-CNN, fast R-CNN[3], faster-RCNN[4]等。它们识别错误率、漏识别率均比较低,但是速度慢,不能满足实时检测要求。为了解决这个问题,出现了另一类one-stage 的目标检测方法,典型算法有YOLO[5]和SDD[6],它们不需要region proposals 阶段,可以直接产生物体的分类和位置。YOLO 的V3[7]版本是one-stage算法中的佼佼者,不仅运行速度非常快,识别准确率也不输给绝大部分two-stage 算法,在工业界已经得到大量应用。基于以上原因,本文使用YOLO V3 作为目标检测算法。

人体姿态估计的核心是人体的关键点分析。最早的人体姿态估计方法只适合单人,即先识别出人的各个部分,然后将各部分连接从而获取姿态。近年随着深度学习技术的成熟,多人姿态估计也得到快速发展。多人姿态估计主要分为两种,第一种是自顶向下(Top-down)的方法,首先检测出多个人,再对每个人进行姿态估计,这类方法识别准确率较高但是速度慢,典型算法包括:Mask R-CNN[8]、CPN[9]、RMPE[10]、G-RMI[11]等。第二类是自底向上(Bottom-Up)方法,先检测出图片中的所有关节点,然后判断每一个关节属于哪一个人,将不同人体的关节聚成一类拼接在一起。这一类方法速度更快、模型更小,可以做到实时处理,典型方法有OpenPose[12]。

本文基于YOLO 目标检测、OpenPose 多人姿态估计算法,提出一种实时分析危险行为和场景的方法,可以分析监控视频中的人员危险行为和场景,并及时上报告警。在实验环境下分析、检测速度达到每秒20 帧,满足实时检测的要求,可以大大提高基建视频安全管控的效率。

1 整体检测流程

如图1 所示,将监控视频分析危险行为和场景的过程分为多个子任务:

(1)首先从视频流中取得视频帧;

(2)对视频帧运用YOLO 目标检测算法进行分析,获得所有目标的类别和位置;

图1:监控视频分析框架整体流程

(3)若目标中含有人类,则继续对视频帧运用OpenPose 人体姿态估计算法,对人体姿态关键点进行识别和定位,然后结合目标检测的结果、人体关键点信息,进行人员的危险行为和场景分析;

(4)如果目标中不含有人类,则直接进行危险场景分析;

(5)如果发现有告警,则上报告警。至此一张视频帧的分析过程结束,该视频分析框架会持续从视频流中取得视频帧,按照上述流程持续分析和告警。

2 基于YOLO的目标检测

2.1 YOLO算法概述

该视频分析框架一个核心模块是基于YOLO 算法的目标检测模块,YOLO 的出现是为了解决two-stage 目标检测算法普遍速度慢的缺点,创造性的提出了one-stage,它将物体分类和物体检测网络合二为一。YOLO 是一个可以一次性预测多个bounding box 位置和类别的神经网络,其最大的优势就是速度快,在Titan X GPU 上可以达到每秒45 帧,完全满足分析监控视频的实时性要求。其神经网络架构图如图2 所示。

YOLO 算法的主要流程包括:

(1)对图像进行缩放,比如缩放到448×448 分辨率,作为神经网络的输入;

(2)运行神经网络,得到一些bounding box 坐标、box 中包含物体的置信度和各的类别概率;

(3)进行非极大值抑制,筛选box 作为输出。

虽然YOLO 有速度快的优点,但也有检测精度低、小物体检测效果不好等缺点。针对这些缺陷,YOLO 作者后来又陆续推出了v2[13]、v3 版本,对算法进行了大量优化,比如调整主干网络架构、引入残差网络、增加多尺度预测等,具体在这里不再赘述。目前YOLO 的V3 版本不仅速度更快,可以达到每秒55 帧,而且精度也不输于绝大多数two-stage 算法,在工业界得到广泛采用。

表1:目标检测模型识别测试情况

图2:YOLO 检测网络架构图

图3:OpenPose 算法流程

2.2 模型训练及测试

针对基建视频监控场景,需要训练出对应的YOLO 目标检测模型,才能实际应用。首先初步筛选出基建场景中一些常见的涉及安全的检测类别,如:人、香烟、火、井盖开、井盖关、灭火器、梯子、交通锥、卡车等。大量收集这些类别的图片,并进行图片标注,最终形成20000 张图片的数据集,使用YOLO v3 的darknet53 模型作为预训练模型,使用GPU 进行训练,得到适用于电力基建视频内容分析的模型。

图4:OpenPose 分析结果图

图5:火源

图6:发现井盖打开同时没有围挡,且人员靠近

图7:发现人员未戴安全帽

该模型在测试集的表现如表1 所示,大部分类在测试集表现良好,已经具备实际应用能力,后续可以继续收集和标注基建现场样本,扩充识别类别,持续提升识别准确率,不断迭代优化模型。

3 基于OpenPose的人体姿态估计

该视频分析框架的另一个核心模块是基于OpenPose 的人体姿态估计,对所有包含人的图片进行人体姿态估计分析。OpenPose是美国卡耐基大学研究人员开发的开源库,可以进行单人和多人的人体、手指、面部等多个部位的姿态估计。OpenPose 采用了自底向上(Bottom-Up)的方法,即先回归出所有的关节点,然后再通过部分亲和场(Part Affine Field)将关节点分给每个人。

OpenPose 的主要流程:先通过VGG19 网络提取输入图片的特征图(Feature Map),然后分成两个卷积神经网络(CNN)分支,一个分支预测人体姿态关节点的热度图(heatmap),另一个得到所有肢体的部分亲和场(Part Affine Field),然后分三步进行关节点的聚类。第一步, 首先对关节点进行类别聚类, 并按照人体各肢体部件的构成进一步将每两类关节点聚类成二分图 (Bipartite Graph) , 使用部位亲和场的信息,提取两类关节点之间所有连线上的像素方向, 并在每条连线上对所有所属像素的方向向量进行积分, 积分结果代表了这条关节点连线的方向权重, 权重值越大说明连线两端的关节点属于同一个肢体部位的概率越大。第二步, 通过匈牙利算法 (Hungarian Algorithm) 对关节点二部图进行权重最大化连接, 过滤掉冗余的边, 得到所有的肢体部位。第三步, 由于两个相邻的肢体部位必定有共享关节点, 通过关节点检索可以把所有的躯干结合起来, 合成一个人的整体框架[14]。图3 展示了算法的整体流程。

4 危险分析

危险分析包括危险场景分析和危险行为分析,两者区别在于分析时是否包含人体姿态信息。如图1 所示,如果目标检测中没有发现人员,则直接进行危险场景分析,否则对图片继续执行人体姿态估计,之后同时进行危险行为和危险场景分析。需要注意的是,危险场景分析可以利用人员的目标检测信息,但是不包括人体姿态信息,而危险行为分析可以利用所有信息进行分析。

4.1 危险场景分析

危险分析包括危险场景分析和危险行为分析,两者区别在于分析时是否包含人体姿态信息。如图1 所示,如果目标检测中没有发现人员,则直接进行危险场景分析,否则对图片继续执行人体姿态估计,之后同时进行危险行为和危险场景分析。需要注意的是,危险场景分析可以利用人员的目标检测信息,但是不包括人体姿态信息,而危险行为分析可以利用所有信息进行分析。

4.1.1 火灾

判断火灾的策略很简单,只需要在目标检测结果中判断是否有火这个类别。虽然策略简单,但是识别精度有赖于目标检测模型的准确率,而火的形态、轮廓、颜色不固定,对目标检测模型的要求很高,需要采集大量样本进行训练,才能得到效果较好的模型。火源如图5 所示。

4.1.2 坑洞

如图6 所示,目前识别的坑洞类别主要是井盖,判断策略为:如果发现有打开的井盖,且周围没有交通锥围挡,则上报井盖打开无围挡告警;如果发现有打开的井盖,且周围有人,则上报人员靠近坑洞告警。值得注意的是,井盖的样式也是多种多样,需要大量样本训练,否则很容易误识别或漏识别。

鲁迅笔下的看客,再无“看袜”的浪漫。面对“人头落地”的血腥,看客的麻木与无动于衷,令鲁迅颤栗。在《朝花夕拾》中,记有1906年3月,鲁迅在日本留学期间看电影,画面上一名即将被俄国人砍头的中国人,被一群身强体壮、一脸麻木且无动于衷的中国人围观。日本人说“看这些中国人麻木的样子,就知道中国一定会灭亡”!

4.1.3 未戴安全帽

针对人员头部是否带安全帽进行标注和训练,YOLO 模型可以直接判断人员有没有戴安全帽,故判断策略为发现没带安全帽,就直接上报告警。由于训练样本足够丰富,训练出的模型泛化能力较好,即使人员戴了帽子,但如果不是安全帽,模型也能识别出没戴安全帽,如图7 所示。

4.2 危险行为分析

综合利用目标检测和人体姿态估计的结果信息,可以进行危险行为分析。目前能够识别的危险人员行为包括:人员倒地、吸烟、翻越。基于此框架,随着研究深入,可识别的危险行为类别可以进一步拓展。

4.2.1 预处理

危险行为分析前需要进行预处理,以保证识别的准确性。预处理步骤包括:

(1)根据每组人体的关键点计算出其最小外接矩形;

(2)将该矩形框和所有目标检测中类别为人的矩形框,逐一计算出交并比IOU[15](Intersection Over Union);

(3)如果找不到IOU>0.5,说明目标检测和人体姿态估计存在不一致,则丢弃该组人体关键点和目标检测结果信息,否则就保留。

IOU 表示两个矩形交集的面积/并集面积,计算公式:

其中,D 和G 分别代表两个矩形框。预处理的意义在于减少YOLO 和OpenPose 模型各自误识别的情况,将两者都识别为人的目标才判定为人,其他的判定为误识别并丢弃,能较大提升人员识别的准确率。后续进行的危险行为分析都是基于保留下来的人体关键点和人员目标检测信息进行分析。

4.2.2 倒地

如图8 所示,人员倒地的识别主要利用人员的脊柱线进行判断,即图4 中点1 和8 的连接线。正常人体脊柱线一般是垂直于地面的,故判断策略为:脊柱线与水平方向的夹角小于一定角度A,则判定有人员倒地,上报告警。经过实验,发现A 设置为30 度,效果较好。注意使用该策略一个隐含条件是图片不能是倾斜的,一般监控摄像头都是水平拍摄的,如果图片是倾斜拍摄的,需要先利用摄像头信息将图片旋转为水平方向,再进行分析。

4.2.3 吸烟

如图9 所示,目标检测可以识别出香烟和人,但是不容易判断出人正在吸烟的状态,这时可以进一步利用人体关键点信息进行判断。判断策略为:先判断是否有香烟,如果有,则进一步找到人体关键点中的嘴部、手部,即图4 中的点0、4、7,然后以这几个关键点为中心生成边长为R 的正方形框,最后计算这几个正方形框和香烟的矩形框的交并比IOU,如果IOU>0,则说明香烟和这几个关键区域有重合,上报吸烟告警。其中R 的大小根据人的外接矩形大小设置,实验发现,R 设为外接矩形中短边的1/5 效果较好。该策略生效的一个前提条件为目标检测模型要能识别出香烟,由于香烟一般在图片中较小,目标检测可能存在漏识别的情况。一个解决思路是利用OpenPose 的手部和脸部模型,结合人体躯干模型通过分析人员姿态直接判断人员吸烟,但是涉及模型较多,实时性会降低,具体策略有待进一步研究。

4.2.4 翻越

如图10,工地上可能会有翻越围墙或栏杆的情况,目标检测只能识别出人而无法判断其动作,但是利用人体关键点进行姿态估计可以识别出来。判断策略为:取得人体中两侧脚和膝盖关节点,即图4 中的点10、11、13、14,如果一侧的脚的关键点高于另一侧的膝盖关键点,则判定发现人员翻越行为,上报告警。同人员倒地识别一样,该策略要求图片不能倾斜。

图8:人员倒地

图9:吸烟

图10:翻越

5 结语

文章提出了一种基于YOLO 和OpenPose 算法的监控视频分析方法,可以实时分析视频中的危险场景和人员危险行为,并自动上报告警,极大的提升了基建视频安全管控效率。该分析框架的新颖之处在于将目标检测和人体姿态估计算法结合起来,在避免各自不足的同时,又发挥了各自的优势,大大拓展了可识别的危险行为和危险场景,具有很高的研究价值和广阔的应用前景。

目前都是基于单张图片进行静态分析,未来将重点研究基于多张连续图片的时序分析,继续拓展可识别的危险行为、场景的类别,并优化软件架构,提升并发处理能力,进步提高系统的实用性。

猜你喜欢

关节点姿态危险
基于深度学习和视觉检测的地铁违规行为预警系统研究与应用
关节点连接历史图与卷积神经网络结合的双人交互动作识别
攀爬的姿态
全新一代宋的新姿态
跑与走的姿态
喝水也会有危险
搞好新形势下军营美术活动需把握的关节点
RGBD人体行为识别中的自适应特征选择方法
话“危险”
阅读是最美的姿态