搜索
首页科技周边人工智能摔倒检测,基于骨骼点人体动作识别,部分代码用 Chatgpt 完成

哈喽,大家好。

今天给大家分享一个摔倒检测项目,准确地说是基于骨骼点的人体动作识别。

图片

图片

大概分为三个步骤

  • 识别人体
  • 识别人体骨骼点
  • 动作分类

项目源码已经打包好了,获取方式见文末。

0. chatgpt

首先,我们需要获取监控的视频流。这段代码比较固定,我们可以直接让chatgpt完成

图片

chatgpt写的这段代码是没有问题的,可以直接使用。

但后面涉及到业务型任务,比如:用mediapipe​识别人体骨骼点,chatgpt给出的代码是不对的。

我觉得chatgpt​可以作为一个工具箱,能独立于业务逻辑,都可以试着交给chatgpt完成。

所以,我觉得未来对程序员的要求会更加注重业务抽象的能力。扯远了,言归正传。

1. 人体识别

人体识别可以用目标检测模型,比如:YOLOv5​,之前我们也分享过好多训练YOLOv5模型的文章。

但这里我没有用YOLOv5​,而是用mediapipe​。因为mediapipe​运行速度更快,在 CPU 上也能流畅地运行。

2. 骨骼点识别

识别骨骼点的模型有很多,如:alphapose、openpose,每种模型识别出来的骨骼点个数和位置都有所差异。比如下面这两种:

图片

mediapipe 32个骨骼点

图片

coco 17个骨骼点

骨骼点的识别我仍然使用mediapipe​,除了速度快,另一个优势是mediapipe识别的骨骼点多,有 32 个,能满足我们的使用。因为下面要用的人体动作分类,强依赖于骨骼点。

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
results = pose.process(image)

if not results.pose_landmarks:
continue

# 识别人体骨骼点
image.flags.writeable = True
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)

mp_drawing.draw_landmarks(
image,
results.pose_landmarks,
mp_pose.POSE_CONNECTIONS,
landmark_drawing_spec=mp_drawing_styles.get_default_pose_landmarks_style()
)

3. 动作识别

动作识别使用的是基于骨架动作识别的时空图卷积网络,开源方案是STGCN(Skeleton-Based Graph Convolutional Networks)

https://github.com/yysijie/st-gcn

图片

一组动作,如:摔倒,由 N 帧组成,每一帧可以构造出以骨骼点坐标组成的空间图,骨骼点在帧之间连接起来就构成时间图,骨骼点的连接和时间帧的连接便可以构造一张时空图。

图片

时空图

在时空图上进行多层图卷积运算,便可生成更高层次的特征图。然后输入到SoftMax分类器进行动作分类(Action Classification)。

图片

图卷积

本来我打算训练STGCN模型的,但遇到的坑实在是太多了,最后直接用了别人训练好的模型。

坑1. STGCN​ 支持 OpenPose​ 识别的骨骼点,有数据集Kinetics-skeleton​可以直接用。坑的地方在于OpenPose安装太麻烦,需要一堆步骤,挣扎后放弃。

坑2. STGCN​ 还支持 NTU RGB+D数据集,该数据集有 60 个动作分类,如:起立、行走、摔倒等。这份数据集的人体包含 25 个骨骼点,只有坐标数据,原始视频基本搞不到,所以没办法知道这 25 个骨骼点对应哪些位置,以及用什么模型能识别出这 25 个骨骼点,挣扎后放弃。

上面两个大坑,导致没法直接训练STGCN​模型,找了一个开源的方案,它用的是alphapose​识别 14 个骨骼点,同时修改STGCN源码支持自定义骨骼点。

https://github.com/GajuuzZ/Human-Falling-Detect-Tracks

我看了下mediapipe包含了这 14 个骨骼点,所以可以用mediapipe识别的骨骼点输入他的模型,实现动作分类。

图片

mediapipe 32个骨骼点

图片

选出14个关键骨骼点

14个骨骼点提取代码:

KEY_JOINTS = [
mp_pose.PoseLandmark.NOSE,
mp_pose.PoseLandmark.LEFT_SHOULDER,
mp_pose.PoseLandmark.RIGHT_SHOULDER,
mp_pose.PoseLandmark.LEFT_ELBOW,
mp_pose.PoseLandmark.RIGHT_ELBOW,
mp_pose.PoseLandmark.LEFT_WRIST,
mp_pose.PoseLandmark.RIGHT_WRIST,
mp_pose.PoseLandmark.LEFT_HIP,
mp_pose.PoseLandmark.RIGHT_HIP,
mp_pose.PoseLandmark.LEFT_KNEE,
mp_pose.PoseLandmark.RIGHT_KNEE,
mp_pose.PoseLandmark.LEFT_ANKLE,
mp_pose.PoseLandmark.RIGHT_ANKLE
]

landmarks = results.pose_landmarks.landmark
joints = np.array([[landmarks[joint].x * image_w,
landmarks[joint].y * image_h,
landmarks[joint].visibility]
 for joint in KEY_JOINTS])

STGCN​原始方案构造的空间图只支持openpose​18个骨骼点和NTU RGB+D数据集25个骨骼点

图片

修改这部分源码,以支持自定义的14个骨骼点

图片

模型直接使用Human-Falling-Detect-Tracks项目已经训练好的,实际运行发现识别效果很差,因为没有看到模型训练过程,不确定问题出在哪。

有能力的朋友可以自己训练模型试试,另外,百度的Paddle​也基于STGCN​开发了一个跌倒检测模型,只支持摔倒这一种行为的识别。

当然大家也可以试试Transformer的方式,不需要提取骨骼点特征,直接将 N 帧图片送入模型分类。

关于STGCN的原理,大家可以参考文章:https://www.jianshu.com/p/be85114006e3  总结的非常好。

需要源码的朋友留言区回复即可。

如果大家觉得本文对你有用就点个 在看 鼓励一下吧,后续我会持续分享优秀的 Python+AI 项目。

以上是摔倒检测,基于骨骼点人体动作识别,部分代码用 Chatgpt 完成的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:51CTO.COM。如有侵权,请联系admin@php.cn删除
大多数使用的10个功率BI图 - 分析Vidhya大多数使用的10个功率BI图 - 分析VidhyaApr 16, 2025 pm 12:05 PM

用Microsoft Power BI图来利用数据可视化的功能 在当今数据驱动的世界中,有效地将复杂信息传达给非技术观众至关重要。 数据可视化桥接此差距,转换原始数据i

AI的专家系统AI的专家系统Apr 16, 2025 pm 12:00 PM

专家系统:深入研究AI的决策能力 想象一下,从医疗诊断到财务计划,都可以访问任何事情的专家建议。 这就是人工智能专家系统的力量。 这些系统模仿Pro

三个最好的氛围编码器分解了这项代码中的AI革命三个最好的氛围编码器分解了这项代码中的AI革命Apr 16, 2025 am 11:58 AM

首先,很明显,这种情况正在迅速发生。各种公司都在谈论AI目前撰写的代码的比例,并且这些代码的比例正在迅速地增加。已经有很多工作流离失所

跑道AI的Gen-4:AI蒙太奇如何超越荒谬跑道AI的Gen-4:AI蒙太奇如何超越荒谬Apr 16, 2025 am 11:45 AM

从数字营销到社交媒体的所有创意领域,电影业都站在技术十字路口。随着人工智能开始重塑视觉讲故事的各个方面并改变娱乐的景观

如何注册5天ISRO AI免费课程? - 分析Vidhya如何注册5天ISRO AI免费课程? - 分析VidhyaApr 16, 2025 am 11:43 AM

ISRO的免费AI/ML在线课程:通向地理空间技术创新的门户 印度太空研究组织(ISRO)通过其印度遥感研究所(IIR)为学生和专业人士提供了绝佳的机会

AI中的本地搜索算法AI中的本地搜索算法Apr 16, 2025 am 11:40 AM

本地搜索算法:综合指南 规划大规模活动需要有效的工作量分布。 当传统方法失败时,本地搜索算法提供了强大的解决方案。 本文探讨了爬山和模拟

OpenAI以GPT-4.1的重点转移,将编码和成本效率优先考虑OpenAI以GPT-4.1的重点转移,将编码和成本效率优先考虑Apr 16, 2025 am 11:37 AM

该版本包括三种不同的型号,GPT-4.1,GPT-4.1 MINI和GPT-4.1 NANO,标志着向大语言模型景观内的特定任务优化迈进。这些模型并未立即替换诸如

提示:chatgpt生成假护照提示:chatgpt生成假护照Apr 16, 2025 am 11:35 AM

Chip Giant Nvidia周一表示,它将开始制造AI超级计算机(可以处理大量数据并运行复杂算法的机器),完全是在美国首次在美国境内。这一消息是在特朗普总统SI之后发布的

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境