跌倒检测

Fall detection has become an important stepping stone in the research of action recognition — which is to train an AI to classify general actions such as walking and sitting down. What humans interpret as an obvious action of a person falling face flat is but a sequence of jumbled up pixels for an AI. To enable the AI to make sense of the input it receives, we need to teach it to detect certain patterns and shapes, and formulate its own rules.

女不限检测已经成为动作识别的研究提供了重要的垫脚石-这是AI的训练进行分类的一般行为,如步行和坐下。 人类将其解释为人脸平躺时的明显动作,不过是AI的一系列混乱像素。 为了使AI能够理解接收到的输入,我们需要教它检测特定的图案和形状,并制定自己的规则。

To build an AI to detect falls, I decided not to go through the torture of amassing a large dataset and training a model specifically for this purpose. Instead, I used pose estimation as the building block.

为了构建能够检测跌倒的AI,我决定不经历收集大型数据集和为此目的专门训练模型的折磨。 相反,我使用姿势估计作为构建基块。

姿势估计 (Pose Estimation)

Pose estimation is the localisation of human joints — commonly known as keypoints — in images and video frames. Typically, each person will be made up of a number of keypoints. Lines will be drawn between keypoint pairs, effectively mapping a rough shape of the person. There is a variety of pose estimation methods based on input and detection approach. For a more in-depth guide to pose estimation, do check out this article by Sudharshan Chandra Babu.

姿势估计是人体关节(通常称为关键点)在图像和视频帧中的定位。 通常,每个人都将由多个关键点组成。 将在关键点对之间绘制线条,从而有效地绘制人的大致形状。 基于输入和检测方法的姿势估计方法有很多种。 有关姿势估计的更深入指南,请查看Sudharshan Chandra Babu的本文。

To make this model easily accessible to everyone, I chose the input as RGB images and processed by OpenCV. This means it is compatible with typical webcams, video files, and even HTTP/RTSP streams.

为了使该模型易于所有人使用,我选择了输入作为RGB图像并由OpenCV处理。 这意味着它与典型的网络摄像头,视频文件甚至HTTP / RTSP流兼容。

预训练模型 (Pretrained Model)

The pose estimation model that I utilised was OpenPifPaf by VITA lab at EPFL. The detection approach is bottom-up, which means that the AI first analyses the entire image and figures out all the keypoints it sees. Then, it groups keypoints together to determine the people in the image. This differs from a top-down approach, where the AI uses a basic person detector to identify regions of interest, before zooming in to identify individual keypoints. To learn more about how OpenPifPaf was developed, do check out their CVPR 2019 paper, or read their source code.

我使用的姿势估计模型是EPFL的VITA实验室的OpenPifPaf 。 该检测方法是自下而上的,这意味着AI首先分析整个图像并找出它看到的所有关键点。 然后,它将关键点分组在一起以确定图像中的人物。 这与自顶向下方法不同,在自顶向下方法中,AI使用基本人员检测器来识别感兴趣的区域,然后再放大以识别各个关键点。 要了解有关OpenPifPaf如何开发的更多信息,请查看其CVPR 2019论文或阅读其源代码。

多流输入 (Multi-Stream Input)

Most open-source models can only process a single input at any one time. To make this more versatile and scalable in the future, I made use of the multiprocessing library in Python to process multiple streams concurrently using subprocesses. This allows us to fully leverage multiple processors on machines with this capability.

大多数开源模型只能在任何时间处理单个输入。 为了将来使它更具通用性和可扩展性,我使用了Python中的多处理库来使用子进程同时处理多个流。 这使我们能够在具有此功能的计算机上充分利用多个处理器。

The pose estimation model is able to run concurrently on the two streams (Top, Bottom: Video from CHINA I Beijing I Street Scenes by gracetheglobe)
姿势估计模型能够在两个流上同时运行(上,下:来自CHINA I Beijing I Street Scenes的视频by gracetheglobe )

人员追踪 (Person Tracking)

In video frames with multiple people, it can be difficult to figure out a person who falls. This is because the algorithm needs to correlate the same person between consecutive frames. But how does it know whether it is looking at the same person if he/she is moving constantly?

在有多个人的视频帧中,很难找出一个摔倒的人。 这是因为算法需要在连续的帧之间关联同一个人。 但是,如果他/她不断移动,它如何知道是否在看同一个人呢?

The solution is to implement a multiple person tracker. It doesn’t have to be fancy; just a simple general object tracker will suffice. How tracking is done is pretty straightforward and can be outlined in the following steps:

解决方案是实施多人跟踪器。 不必花哨; 只需一个简单的通用对象跟踪器就足够了。 如何完成跟踪非常简单,可以在以下步骤中进行概述:

  1. Compute centroids (taken as the neck points)计算质心(以颈部为准)
  2. Assign unique ID to each centroid为每个质心分配唯一的ID
  3. Compute new centroids in the next frame在下一帧中计算新质心
  4. Calculate the Euclidean distance between centroids of the current and previous frame, and correlate them based on the minimum distance计算当前帧与上一帧的质心之间的欧几里得距离,并根据最小距离对其进行关联
  5. If the correlation is found, update the new centroid with the ID of the old centroid如果找到相关性,请使用旧质心的ID更新新质心
  6. If the correlation is not found, give the new centroid a unique ID (new person enters the frame)如果找不到相关性,则给新质心一个唯一的ID(新人进入框架)
  7. If the person goes out of the frame for a set amount of frames, remove the centroid and the ID如果该人离开框架达一定数量的框架,请移除质心和ID
CHINA I Beijing I Street Scenes by gracetheglobe)gracetheglobe的CHINA I Beijing I Street Scenes )

If you want a step-by-step tutorial on object tracking with actual code, check out this post by Adrian Rosebrock.

如果您想了解有关使用实际代码进行对象跟踪的分步教程,请参阅Adrian Rosebrock的这篇文章。

跌倒检测算法 (Fall Detection Algorithm)

The initial fall detection algorithm that was conceptualised was relatively simplistic. I first chose the neck as the stable reference point (compare that with swinging arms and legs). Next, I calculated the perceived height of the person based on bounding boxes that defined the entire person. Then, I computed the vertical distance between neck points at intervals of frames. If the vertical distance exceeded half the perceived height of the person, the algorithm would signal a fall.

概念化的初始跌倒检测算法相对简单。 我首先选择脖子作为稳定的参考点(与摆动的胳膊和腿比较)。 接下来,我根据定义整个人的边界框计算了人的感知高度。 然后,我以帧间隔计算脖子点之间的垂直距离。 如果垂直距离超过人的感知身高的一半,该算法将发出跌倒信号。

However, after coming across multiple YouTube videos of people falling, I realised there were different ways and orientations of falling. Some falls were not detected when the field of view was at an angle, as the victims did not appear to have a drastic change in motion. My model was also not robust enough and kept throwing false positives when people bent down to tie their shoelaces, or ran straight down the video frame.

但是,在观看多部关于摔倒的YouTube视频后,我意识到摔倒的方式和方向不同。 当视场倾斜时,未检测到一些跌倒,因为受害者似乎并没有剧烈运动变化。 我的模型也不够坚固,当人们弯腰绑鞋带或直接沿着视频帧奔跑时,我的模型总是会产生误报。

I decided to implement more features to refine my algorithm:

我决定实施更多功能来完善我的算法:

  • Instead of analysing one-dimensional motion (y-axis), I analysed two-dimensional motion (both x and y-axis) to encompass different camera angles.我没有分析一维运动(y轴),而是分析了二维运动(x和y轴)以包含不同的相机角度。
  • Added a bounding box check to see if the width of the person was larger than his height. This assumes that the person is on the ground and not upright. I was able to eliminate false positives by fast-moving people or cyclists using this method.添加了边框检查,以查看人的宽度是否大于其身高。 这假定该人在地面上而不是直立的。 通过使用这种方法,快速移动的人或骑自行车的人能够消除误报。
  • Added a two-point check to only watch out for falls if both the person’s neck and ankle points can be detected. This prevents inaccurate computation of the person’s height if the person cannot be fully identified due to occlusions.添加了两点检查功能,仅当可以同时检测到该人的脖子和脚踝点时才注意跌倒。 如果由于遮挡而无法完全识别人的身高,这可以防止对人的身高进行不正确的计算。
Results of the improved fall detection algorithm (Top, Center, Bottom: Video from 50 Ways to Fall by Kevin Parry)
改进的跌倒检测算法的结果(上,中,下: Kevin Parry的“从50种跌落方式拍摄的视频”)

检测结果 (Test Results)

As of this writing, extensive fall detection datasets are scarce. I chose the UR Fall Detection Dataset to test my model as it contained different fall scenarios. Out of a total of 30 videos, the model correctly identified 25 falls and missed the other 5 as the subject fell out of the frame. This gave me a precision of 83.33% and an F1 score of 90.91%.

在撰写本文时,缺乏大量的跌倒检测数据集。 我选择UR跌倒检测数据集来测试我的模型,因为它包含不同的跌倒场景。 在总共30个视频中,该模型正确地识别了25个跌倒,并在主体掉出画面时错过了另外5个跌倒。 这给了我83.33%的精确度和90.91%的F1分数。

These results can be considered a good start but are far from conclusive due to the small sample size. The lack of other fall-like actions such as tying shoelaces also meant that I could not stress test my model for false positives.

这些结果可以被认为是一个良好的开端,但由于样本量较小,因此尚无定论。 由于没有其他类似跌倒的动作,例如系鞋带,这也意味着我无法对模型进行压力测试。

The test was executed on two NVIDIA Quadro GV100s and achieved an average of 6 FPS, which is barely sufficient for real-time processing. The computation as a result of the numerous layers is extremely intensive. Models that claim to run at speeds above 15 FPS are typically inaccurate, or are backed by monstrous GPUs.

该测试是在两台NVIDIA Quadro GV100上执行的,平均速度为6 FPS,仅够进行实时处理。 由于众多层的计算非常密集。 声称以高于15 FPS的速度运行的模型通常是不准确的,或者由可怕的GPU支持。

Modified OpenPose model with MobileNetV2 as the backbone network (Video from 大阪 道頓堀 ライブカメラ osaka Dotonbori LiveCamera by ラジカルビデオジョッキー RVJJP). This processed at an average of 11 FPS on an Intel Xeon CPU, but is highly inaccurate.
以MobileNetV2为骨干网络的经过修改的OpenPose模型(由ジカルビデオジョッ大阪ーRVJJP从大阪道顿堀ライブカLiveラ大阪道顿b LiveCamera拍摄的视频)。 在Intel Xeon CPU上,此过程平均以11 FPS进行处理,但是非常不准确。
Performance comparison across three processors. Chart by author.
跨三个处理器的性能比较。 按作者的图表。

应用领域 (Applications)

Fall detection can be applied in many scenarios to provide assistance. A non-exhaustive list includes:

跌倒检测可用于许多情况下以提供帮助。 非详尽清单包括:

  • Drunk people喝醉的人
  • The elderly老人
  • Kids in the playground孩子们在操场上
  • People who suffer from medical conditions like heart attacks or strokes患有心脏病或中风等疾病的人
  • Careless people who trip and fall粗心的人跌倒

For the more serious cases, swift response to a fall can mean the difference between life and death.

对于更严重的情况,对跌倒的SwiftReact可能意味着生与死之间的差异。

未来发展 (Future Development)

The accuracy of fall detection is heavily dependent on the pose estimation accuracy. Typical pose estimation models are trained on clean images with a full-frontal view of the subject. However, falls cause the subject to be contorted in weird poses, and most pose estimation models are not able to accurately define the skeleton in such scenarios. Furthermore, the models are not robust enough to overcome occlusions or image noise.

跌倒检测的准确性在很大程度上取决于姿势估计的准确性。 典型的姿势估计模型是在具有对象正面视图的清晰图像上训练的。 但是,跌倒会导致对象扭曲为怪异的姿势,并且大多数姿势估计模型都无法在这种情况下准确定义骨骼。 此外,这些模型的鲁棒性不足以克服遮挡或图像噪声。

To attain a human-level detection accuracy, current pose estimation models will need to be retrained on a larger variety of poses, and include lower-resolution images with occlusions.

为了达到人类水平的检测精度,当前的姿势估计模型将需要在更多种姿势上进行训练,并包括具有遮挡的低分辨率图像。

Current hardware limitations also impede the ability of pose estimation models to run smoothly on videos with high frame rates. It will be some time before these models will be able to run easily on any laptop with a basic GPU, or even only with a CPU.

当前的硬件限制也阻碍了姿势估计模型在高帧率视频上平稳运行的能力。 这些模型将需要一段时间才能在具有基本GPU甚至仅具有CPU的任何笔记本电脑上轻松运行。

Apart from pose estimation, a deep learning model trained specifically on falls would likely perform as well or even better. The model must be trained carefully to distinguish falls from other fall-like actions. This, of course, must be coupled with extensive, publicly available fall datasets to train the model on. Of course, such a model is limited in scope as it only can identify one particular action, and not a variety of actions.

除了姿势估计之外,专门针对跌倒进行训练的深度学习模型可能会表现得甚至更好。 必须仔细训练模型以区分跌倒和其他类似跌倒的动作。 当然,这必须与广泛的,公开可用的秋季数据集相结合,以训练模型。 当然,这种模型的范围是有限的,因为它只能标识一个特定的动作,而不能标识各种动作。

Another possible approach would also be knowledge-based systems, which is developing a model such that it is able to learn the way humans do. This can be achieved via a rule-based system where it makes decisions based on certain rules, or a case-based system where it applies similarities in past cases it has seen to make an informed judgement about a new case.

另一种可能的方法也将是基于知识的系统,该系统正在开发一种模型,从而能够学习人类的行为。 这可以通过基于规则的系统在其中基于某些规则进行决策来实现,也可以通过基于案例的系统在过去的案例中应用相似性来实现,而过去的案例中它已经看到了对新案例的明智判断。

结论 (Conclusion)

To solve the more difficult problem of general action recognition — which comprises a plethora of actions — we must first understand and master the intricacies of detecting a single action. If we are able to develop a model that can easily identify a fall just like you or I would, we will be able to extract certain patterns that can allow the model to just as easily detect other types of actions.

为了解决包括多个动作在内的一般动作识别这一较困难的问题,我们必须首先了解并掌握检测单个动作的复杂性。 如果我们能够开发出一个可以像您或我一样轻松识别跌倒的模型,我们将能够提取某些模式,从而使该模型能够轻松地检测其他类型的动作。

The path to action recognition is still undoubtedly a challenging one; but just like other cutting-edge models such as OpenAI’s GPT-3, we will be able to discover new techniques previously unheard of.

行动识别的路径无疑仍然是一个挑战。 但是,就像OpenAI的GPT-3等其他尖端模型一样,我们将能够发现以前闻所未闻的新技术。

If you would like to share any ideas or opinions, do leave a comment below, or drop me a connect on LinkedIn.

如果您想分享任何想法或意见,请在下面发表评论,或在LinkedIn上让我保持联系。

If you would like to see how I developed the full model, do check out my GitHub repository for the source codes.

如果您想了解我如何开发完整模型,请查看GitHub存储库中的源代码。

翻译自: https://medium.com/@cwlroda/fall-detection-using-pose-estimation-a8f7fd77081d

跌倒检测


http://www.taodudu.cc/news/show-4278310.html

相关文章:

  • 论文笔记--Self-Supervised Learning of 3D Human Pose using Multi-view Geometry(利用多视角几何学对三维人类姿势进行自我监督学习)
  • XingGAN for Person Image Generation(人体姿势生成笔记)
  • 文件上传绕过姿势整理
  • Unity AzureKinect 初识(二) 姿势识别
  • 中国姿势矫正设备市场深度研究分析报告
  • 几种基本放大电路详解
  • css 网格布局_CSS网格布局三年
  • 圣诞节快要来了,可我就是_我的圣诞节愿望清单
  • ai替换混合轴例子_可解释的vs可解释的AI:一个直观的例子
  • 航拍无人机 无人车_无人机将有自己的时刻
  • 域名过期 脚本_域名宝已过期! …还是垃圾?
  • 关于生活
  • apple tv 开发_Apple TV首批#madewithunity游戏发售
  • php约束性别默认为男,在表单中包含性别选项,且默认状态为“男”被选中,下列正确的是( )...
  • 唯我倾城网上购物商城设计与实现
  • 计算机专业论文在线教育,在线教育系统 计算机毕业论文.doc
  • 电子计算机司法鉴定客体特征,电子证据司法鉴定的含义和特点是什么?
  • 浅谈道路交通事故车辆安全技术鉴定
  • 计算机学识水平自我评价,计算机毕业自我鉴定范文
  • 计算机技术辅助笔迹鉴定,GB∕T 37239-2018 笔迹鉴定技术规范(高清版).pdf
  • 计算机系导师推荐意见,就业推荐表上导师评语
  • 研发思维08----嵌入式智能产品数据服务后端分析
  • 让你永远忘不了的傅里叶变换解析
  • F5 ELK可视化方案如何做到DNS运维更安全更高效
  • VOT中的EAO评判指标
  • ELK学习笔记之F5 DNS可视化让DNS运维更安全更高效-F5 ELK可视化方案系列(3)
  • 温故知新|传感器基础结构与通信原理
  • 文末福利 | 性能领域:你知道的越多,不知道的也就越多
  • CDN边缘智能助力5G
  • 今天睡眠质量77分

跌倒检测_使用姿势估计的跌倒检测相关推荐

  1. 使用姿势估计进行跌倒检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 所有目标检测已成为动作识别研究的重要垫脚石,即训练AI对行走和坐下 ...

  2. 加速度和陀螺仪 日常活动识别 跌倒检测_七台河房屋综合检测方法

    ,偶联剂的选择应考虑粘度,流动性,附着力,工件表面无腐蚀,易清洁,经济,结合上述因素选择糊剂作偶联剂..由于基底金属的厚度薄,因此检测方向在一侧和两侧进行.环境监测(空气质量检测): .构件及节点腐蚀 ...

  3. 基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)

    人体姿势骨架以图形格式表示人的方向.本质上,它是一组坐标,可以连接起来描述人的姿势.骨架中的每个坐标都被称为一个部分(或一个关节,或一个关键点).两个部分之间的有效连接称为一对(或分支).下面是一个人 ...

  4. python 实现显著性检测_强!汽车车道视频检测:python+OpenCV为主实现

    1 说明: ===== 1.1 完整版:汽车车道动态视频检测讲解和注释版代码,小白秒懂. 1.2 python+OpenCV+moviepy+numpy为主的技术要点. 1.3 代码来源: https ...

  5. dlib疲劳检测_基于OpenCV的实时睡意检测系统

    该系统可以检测一个人在开车时是否困倦,如果有的话,可以通过使用语音消息实时提醒他.该系统使用网络摄像头和电话摄像头进行实时数据传输. 研究目的 根据国家公路交通安全管理局的数据,每年均涉及疲劳驾驶事故 ...

  6. python产品缺陷检测_基于图像处理的工业产品缺陷检测,基本操作,实现

    随着机器学习的发展,对于工业产品的缺陷检测,深度网络模型检测缺陷的准确率远远高于传统图像处理算法.现在一般的做法是将传统图像技术作为预处理,或者将传统提取特征与网络深度特征相结合进一步提高准确率. 今 ...

  7. tensorflow2 目标检测_基于光流的视频目标检测系列文章解读

    作者:平凡的外卖小哥 全文5747字,预计阅读时间15分钟 1 简介 目前针对于图片的目标检测的方法大致分为两类: faster R-CNN/R-FCN一类: 此类方法在进行bbox回归和分类之前,必 ...

  8. 电感检测_几种常用的电流检测方式

    RT1720 是一款最高输入电压可达 80V.输出电压可达 60V 的热插拔控制器,它的作用是防止系统受到过高电压和负电压的攻击,同时还能防范过电流可能导致的问题,它的一种应用电路大致如下图所示: 为 ...

  9. tensorflow2 目标检测_一文了解YOLO-v4目标检测

    一.YOLO-v4主要做了什么? 通俗的讲,就是说这个YOLO-v4算法是在原有YOLO目标检测架构的基础上,采用了近些年CNN领域中最优秀的优化策略,从数据处理.主干网络.网络训练.激活函数.损失函 ...

最新文章

  1. java继承详解加练习题
  2. 使用 vscode 调试前端代码
  3. 鼠标滚轮控制panel滚动条
  4. k8s的pod资源管理与配置使用凭证的harbor仓库
  5. git 每次都要输入用户名密码_Git向GitHub提供代码
  6. Android开发记录(转)
  7. 获取元素在文档上的正确坐标
  8. bzoj 3450: Tyvj1952 Easy(概率DP)
  9. C# 串口助手中英文显示问题
  10. 远程工具teamviewer使用教程
  11. Datawhale组队学习NLP之transformer Task03 BERT
  12. POL8901 LVDS转MIPI DSI 支持旋转图像处理芯片
  13. 51单片机RS485远程双机多机温度采集主从机多节点蜂鸣器报警
  14. 18位身份证和组织机构代码校验ORACLE函数
  15. C++第3次实验:【项目三】定期存款利息计算器
  16. 老司机教你一步步删掉艳照
  17. C#使用Modbus协议读写汇川PLC的M区寄存器(基本接口封装)
  18. IPV6地址中的%号什么意思
  19. vue报错:ues string/number value instead
  20. vulhub中漏洞复现1

热门文章

  1. 小窍门解决大问题(绝对值得收藏)
  2. android cursor关闭,android在异步任务中关闭Cursor的代码方法
  3. 健身环1536级小结:相当适合码农的锻炼方式
  4. Windows 11系统IDEA启动时报错:Cannot find keymap “Windows copy” 解决办法
  5. 信息搜集:网络空间搜索引擎(Shodan)语法及API应用案例
  6. 潜伏在前端巅峰 中同出来的前端秘笈
  7. 联想微型计算机b320,“蜗居”必备! 联想B320一体电脑评测
  8. Ambiguous method overloading for method ****** 异常的解决办法
  9. IT类实习/工作习惯心得
  10. 谷歌浏览器旧版本下载地址