IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 用OAK相机做智能跌倒检测仪器 -> 正文阅读

[人工智能]用OAK相机做智能跌倒检测仪器

为什么要做跌倒检测?

世界卫生组织报告指出,全球每年有30余万人死于跌倒,其中一半是60岁以上老人。在我国,跌倒已成为65岁以上老人伤害死亡的“头号杀手”。

对于老人来说,摔倒无疑是对健康的一大威胁。最近,北京市疾控中心公布的抽样调查结果显示:60至69岁老年人每年跌倒发生率为9.8%,70至79岁为15.7%,80岁以上为22.7%,每增长10岁,跌倒发生率会升高0.5倍左右。

因此,设计一种保护人体隐私的情况下监控人体是否摔倒,并且在人体摔倒后第一时间实现报警就变得非常有意义。

我们通过OAK-D这一人工智能利器,结合Movenet神经网络进行姿态识别,全连接层分类网络实现对摔倒的姿态进行分类,实现摔倒报警。它可以实时采集人体关节姿态数据进行摔倒判断,全部识别在OAK相机中完成,不会将人体影像数据传输出去,保护老人的隐私。

如何做跌倒检测?

传统做法面临的问题

在典型的跌倒检测方法中,从视觉数据中检测出人的行为,并学习特征来区分跌倒和其他活动。现有的方法大多利用从视频数据中提取的基于物理外观的特征来表示跌倒。然而,基于外观的特征在实际环境中的泛化性较差,因为外观特征的变化较大,不同的摄像机视角不同并且背景杂乱。此外,由于大规模公共跌倒数据集的不可用性,大多数现有的跌倒检测器都是使用模拟环境或使用受限数据集(由于隐私问题不能公开共享)进行训练和评估的。因此,这些方法并没有表现出在未见过的真实世界环境中进行跌倒检测的泛化能力。

OAK如何打破传统做法的局限

OAK-D智能相机可以为跌倒检测提供低成本的解决方案。它们不会对人体健康造成感官上的副作用,也不会像使用可穿戴设备的系统那样影响老年人的日常活动。

提出一种基于人体姿态的跌倒表示法,该表示法与场景中人物的外观特征、背景、光照条件和空间位置无关。实验表明,在基于2D姿态和3D姿态的跌倒表示上训练的神经网络模型能够成功地推广到了未知的现实环境中进行跌倒识别。
提出了3D姿态估计和跌倒识别的神经网络模型,该模型对部分遮挡具有鲁棒性。实验表明,本文的模型成功地从被遮挡的身体部位恢复了关节信息,并从不完整的输入数据中准确识别了跌倒姿态。
在公开的跌倒数据集上评估了本文的算法模型,其中证明了仅使用合成数据进行训练时,本文的框架显示了对未知的真实世界数据的跌倒识别的出色泛化能力。

OAK在此类应用上的优势

与现有的方法相比,OAK工作的不同之处在于:首先,OAK的框架学习是基于姿态的跌倒特征,这使得框架能够成功地从纯合成数据中学习到的跌倒识别知识迁移到具有未知背景和不同人类角色的真实世界数据中。OAK的框架结合了2D和3D姿态知识,使得框架能够成功地处理2D姿态的模糊性(在单个OAK相机的情况下),而不需要多个摄像机。最后,3D姿态估计和跌倒识别的神经网络模型对姿态数据中的缺失信息具有弹性。这使得框架能够准确地从人的姿势中分辨出跌倒和不跌倒的情况。

请添加图片描述

OAK-D相机的总体工作流程

请添加图片描述

一、模型训练部分:

1.1 准备好姿势检测模型 MoveNet

使用 Katsuya Hyodo 提供的转换好的模型 请添加图片描述

1.2 使用 MoveNet 对人体的 RGB 图片数据集进行识别得到人体姿态骨骼数据集

使用 MoveNet 模型输出的 17 个人体关节点画出骨骼图(类似于火柴人)
请添加图片描述

1.3 将骨骼数据集分为训练集与测试集

请添加图片描述

1.4 使用我们准备好的骨骼数据集,在pytorch下训练全连接层神经网络

使用 pytorch 构建全连接层:(可参考:https://pytorch.org/tutorials/beginner/basics/quickstart_tutorial.html,或者可以使用我们提供的Jupyter notebook

self.sequential = nn.Sequential(
    nn.Linear(16384,100),# 输入为 128x128 的 灰度图
    nn.ReLU(),
    nn.Linear(100,2),
    nn.Softmax(dim=1)
)

因为我们最终要将全连接层神经网络放在OAK-D相机里的 Myriad X 芯片里运行,所以我们要将pytorch训练好的神经网络模型转换成blob文件。我们的转换步骤是先将 pytorch 模型导出到 onnx模型,再将onnx模型转换成openvino支持的格式,在OpenVino下再生成OAK-D需要的blob模型文件 :

示例:

以下是将pytorch模型转化为onnx模型的命令:

model = SomeModel()
# Input to the model
x = torch.randn(1, 3, 128, 128)
?
# Export the model
torch.onnx.export(torch_model,x, "model.onnx", input_names = ['input'],output_names = ['output']

以下是将ONNX模型转换成OpenVino模型的命令:

onnx -> OpenVino

python3 mo.py --input_model model.onnx --data_type FP16

最后我们再用OpenVino工具,将OpenVino模型编译成OAK-D相机支持的blob文件。

OpenVino -> OAK:

./compile_tool -m [INSERT PATH TO MODEL XML FILE] -ip U8 -d MYRIAD -VPU_NUMBER_OF_SHAVES 4 -VPU_NUMBER_OF_CMX_SLICES 4

模型训练好后,我们要开始部署我们的模型到OAK相机上。

二、部署工作

2.1 依据 MoveNet 结果生成骨骼图

点这里进入代码

2.2 把骨骼图片传入全连接层

点这里进入代码

2.3 全连接层对骨骼进行判断

点这里进入代码

2.4 输出骨骼状态(fall or normal),并使用宽高比进行辅助判断

点这里进入代码

检验我们的结果

在OAK-D相机中运行代码,效果如下:

50种跌倒姿势检测[【OAK实际应用】

想了解更多OAK?

首款开源软硬一体OpenCV AI Kit - DepthAI介绍

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 01:27:50  更:2021-08-17 01:28:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 21:07:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码