摔倒检测,基于骨骼点人体动作识别,部分代码用 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原始方案构造的空间图只支持openpose18个骨骼点和NTU RGB+D数据集25个骨骼点
修改这部分源码,以支持自定义的14个骨骼点
模型直接使用Human-Falling-Detect-Tracks项目已经训练好的,实际运行发现识别效果很差,因为没有看到模型训练过程,不确定问题出在哪。
有能力的朋友可以自己训练模型试试,另外,百度的Paddle也基于STGCN开发了一个跌倒检测模型,只支持摔倒这一种行为的识别。
当然大家也可以试试Transformer的方式,不需要提取骨骼点特征,直接将 N 帧图片送入模型分类。
关于STGCN的原理,大家可以参考文章:https://www.jianshu.com/p/be85114006e3 总结的非常好。
需要源码的朋友留言区回复即可。
如果大家觉得本文对你有用就点个 在看 鼓励一下吧,后续我会持续分享优秀的 Python+AI 项目。
以上是摔倒检测,基于骨骼点人体动作识别,部分代码用 Chatgpt 完成的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

DALL-E 3 于 2023 年 9 月正式推出,是比其前身大幅改进的型号。它被认为是迄今为止最好的人工智能图像生成器之一,能够创建具有复杂细节的图像。然而,在推出时,它不包括

i77700的性能运行win11完全足够,但是用户却发现自己的i77700不能升级win11,这主要是受到了微软硬性条件的限制,所以只要跳过该限制就能安装了。i77700不能升级win11:1、因为微软限制了cpu的版本。2、intel只有第八代及以上版本可以直升win11。3、而i77700作为7代,无法满足win11的升级需求。4、但是i77700在性能上是完全能流畅使用win11的。5、所以大家可以使用本站的win11直装系统。6、下载完成后,右键“装载”该文件。7、再双击运行其中的“一键

ChatGPT和Python的完美结合:打造智能客服聊天机器人引言:在当今信息时代,智能客服系统已经成为企业与客户之间重要的沟通工具。而为了提供更好的客户服务体验,许多企业开始转向采用聊天机器人的方式来完成客户咨询、问题解答等任务。在这篇文章中,我们将介绍如何使用OpenAI的强大模型ChatGPT和Python语言结合,来打造一个智能客服聊天机器人,以提高

安装步骤:1、在ChatGTP官网或手机商店上下载ChatGTP软件;2、打开后在设置界面中,选择语言为中文;3、在对局界面中,选择人机对局并设置中文相谱;4、开始后在聊天窗口中输入指令,即可与软件进行交互。

今天给大家介绍一篇MIT上周发表的文章,使用GPT-3.5-turbo解决时间序列异常检测问题,初步验证了LLM在时间序列异常检测中的有效性。整个过程没有进行finetune,直接使用GPT-3.5-turbo进行异常检测,文中的核心是如何将时间序列转换成GPT-3.5-turbo可识别的输入,以及如何设计prompt或者pipeline让LLM解决异常检测任务。下面给大家详细介绍一下这篇工作。图片论文标题:Largelanguagemodelscanbezero-shotanomalydete

在这篇文章中,我们将介绍如何使用ChatGPT和Java开发智能聊天机器人,并提供一些具体的代码示例。ChatGPT是由OpenAI开发的困境预测转换(GenerativePre-trainingTransformer)的最新版本,它是一种基于神经网络的人工智能技术,可以理解自然语言并生成人类类似的文本。使用ChatGPT,我们可以轻松地创建自适应的聊天

01前景概要目前,难以在检测效率和检测结果之间取得适当的平衡。我们就研究出了一种用于高分辨率光学遥感图像中目标检测的增强YOLOv5算法,利用多层特征金字塔、多检测头策略和混合注意力模块来提高光学遥感图像的目标检测网络的效果。根据SIMD数据集,新算法的mAP比YOLOv5好2.2%,比YOLOX好8.48%,在检测结果和速度之间实现了更好的平衡。02背景&动机随着远感技术的快速发展,高分辨率光学远感图像已被用于描述地球表面的许多物体,包括飞机、汽车、建筑物等。目标检测在远感图像的解释中

chatgpt在国内可以使用,但不能注册,港澳也不行,用户想要注册的话,可以使用国外的手机号进行注册,注意注册过程中要将网络环境切换成国外ip。
