


Détection de chute, basée sur la reconnaissance de l'action humaine au point squelettique, une partie du code est complétée avec Chatgpt
Bonjour à tous.
Aujourd'hui j'aimerais partager avec vous un projet de détection de chute, pour être précis, il s'agit de reconnaissance de mouvements humains basée sur des points squelettiques.
est grossièrement divisé en trois étapes
- Reconnaître le corps humain
- Reconnaître les points du squelette humain
- Classification des actions
Le code source du projet a été empaqueté, voir la fin de l'article pour savoir comment obtenez-le.
0. chatgpt
Tout d'abord, nous devons obtenir le flux vidéo surveillé. Ce code est relativement fixe, on peut directement laisser chatgpt le compléter
Ce code écrit par chatgpt n'a aucun problème et peut être utilisé directement.
Mais lorsqu'il s'agit de tâches commerciales, telles que l'utilisation de Mediapipe pour identifier les points du squelette humain, le code donné par chatgpt est incorrect.
Je pense que chatgpt peut être utilisé comme une boîte à outils, qui peut être indépendante de la logique métier. Vous pouvez essayer de laisser chatgpt le terminer.
Donc, je pense que les exigences des programmeurs à l'avenir se concentreront davantage sur les capacités d'abstraction métier. Sans plus attendre, revenons au sujet.
1. Reconnaissance du corps humain
La reconnaissance du corps humain peut utiliser des modèles de détection de cibles, tels que : YOLOv5. Nous avons également partagé de nombreux articles sur la formation des modèles YOLOv5.
Mais ici je n'utilise pas YOLOv5, mais mediapipe. Parce que Mediapipe fonctionne plus rapidement et fonctionne correctement sur le processeur.
2. Reconnaissance des points osseux
Il existe de nombreux modèles pour identifier les points osseux, tels que l'alphapose et l'openpose. Le nombre et la position des points osseux reconnus par chaque modèle sont différents. Par exemple, les deux types suivants :
mediapipe 32 points d'os
coco 17 points d'os
J'utilise toujours mediapipe pour la reconnaissance des points d'os En plus de la rapidité, un autre avantage est les os reconnus par. mediapipe. Il y a 32 points qui peuvent répondre à nos besoins. Parce que la classification des mouvements du corps humain qui sera utilisée ci-dessous repose en grande partie sur des points squelettiques.
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. Reconnaissance d'action
La reconnaissance d'action utilise un réseau convolutionnel de graphes spatio-temporels basé sur la reconnaissance d'actions squelettes. La solution open source est STGCN (Skeleton-Based Graph Convolutional Networks)
https://github.com. /yysijie /st-gcn
Un ensemble d'actions, telles que la chute, se compose de N images. Chaque image peut construire un graphique spatial composé de coordonnées de points squelettiques. Les points squelettiques sont connectés entre les images pour former un graphique temporel. , la connexion des points osseux et la connexion des délais peuvent construire un graphique espace-temps.
Graphique espace-temps
Effectuez des opérations de convolution de graphique multicouche sur le graphique espace-temps pour générer des cartes de caractéristiques de niveau supérieur. Ensuite, il est entré dans le classificateur SoftMax pour la classification des actions (Classification des actions).
Convolution graphique
À l'origine, j'avais prévu d'entraîner le modèle STGCN, mais j'ai rencontré trop d'embûches, j'ai donc fini par utiliser un modèle entraîné par d'autres.
Pit 1. STGCN prend en charge les points squelettes reconnus par OpenPose, et il existe un ensemble de données Kinetics-skeleton qui peut être utilisé directement. Le piège est que l’installation d’OpenPose est trop lourde et nécessite beaucoup d’étapes. Après avoir galéré, on abandonne.
Pit 2. STGCN prend également en charge l'ensemble de données NTU RGB+D, qui comporte 60 catégories d'actions, telles que : se lever, marcher, tomber, etc. Le corps humain dans cet ensemble de données contient 25 points squelettiques, uniquement des données de coordonnées, et la vidéo originale est pratiquement indisponible, il n'y a donc aucun moyen de savoir à quelles positions correspondent ces 25 points squelettiques, et quel modèle peut être utilisé pour identifier ces 25 points squelettiques. Lutte Puis abandonnez.
Les deux gros pièges ci-dessus ont rendu impossible l'entraînement direct du modèle STGCN. J'ai trouvé une solution open source, qui utilisait alphapose pour identifier 14 points d'os, et modifié le code source STGCN pour prendre en charge les points d'os personnalisés.
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 帧Détection de chute, basée sur la reconnaissance de laction humaine au point squelettique, une partie du code est complétée avec Chatgpt送入模型分类。
关于STGCN的原理,大家可以参考文章:https://www.jianshu.com/p/be85114006e3 总结的非常好。
需要源码的朋友留言区回复即可。
如果大家觉得本文对你有用就点个 在看 鼓励一下吧,后续我会持续分享优秀的 Python+AI 项目。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le DALL-E 3 a été officiellement introduit en septembre 2023 en tant que modèle considérablement amélioré par rapport à son prédécesseur. Il est considéré comme l’un des meilleurs générateurs d’images IA à ce jour, capable de créer des images avec des détails complexes. Cependant, au lancement, c'était exclu

Les performances du i77700 sont tout à fait suffisantes pour exécuter Win11, mais les utilisateurs constatent que leur i77700 ne peut pas être mis à niveau vers Win11. Cela est principalement dû aux restrictions imposées par Microsoft, ils peuvent donc l'installer tant qu'ils ignorent cette restriction. Le i77700 ne peut pas être mis à niveau vers win11 : 1. Parce que Microsoft limite la version du processeur. 2. Seules les versions Intel de huitième génération et supérieures peuvent directement passer à Win11. 3. En tant que 7ème génération, i77700 ne peut pas répondre aux besoins de mise à niveau de Win11. 4. Cependant, le i77700 est tout à fait capable d'utiliser Win11 en douceur en termes de performances. 5. Vous pouvez donc utiliser le système d'installation directe win11 de ce site. 6. Une fois le téléchargement terminé, cliquez avec le bouton droit sur le fichier et « chargez-le ». 7. Double-cliquez pour exécuter l'opération "Un clic

La combinaison parfaite de ChatGPT et Python : Création d'un chatbot de service client intelligent Introduction : À l'ère de l'information d'aujourd'hui, les systèmes de service client intelligents sont devenus un outil de communication important entre les entreprises et les clients. Afin d'offrir une meilleure expérience de service client, de nombreuses entreprises ont commencé à se tourner vers les chatbots pour effectuer des tâches telles que la consultation des clients et la réponse aux questions. Dans cet article, nous présenterons comment utiliser le puissant modèle ChatGPT et le langage Python d'OpenAI pour créer un chatbot de service client intelligent afin d'améliorer

Étapes d'installation : 1. Téléchargez le logiciel ChatGTP depuis le site officiel ou la boutique mobile de ChatGTP ; 2. Après l'avoir ouvert, dans l'interface des paramètres, sélectionnez la langue chinoise 3. Dans l'interface de jeu, sélectionnez le jeu homme-machine et définissez la langue. Spectre chinois ; 4. Après avoir démarré, entrez les commandes dans la fenêtre de discussion pour interagir avec le logiciel.

Aujourd'hui, j'aimerais vous présenter un article publié par le MIT la semaine dernière, utilisant GPT-3.5-turbo pour résoudre le problème de la détection des anomalies des séries chronologiques et vérifiant dans un premier temps l'efficacité du LLM dans la détection des anomalies des séries chronologiques. Il n'y a pas de réglage fin dans l'ensemble du processus et GPT-3.5-turbo est utilisé directement pour la détection des anomalies. Le cœur de cet article est de savoir comment convertir des séries temporelles en entrées pouvant être reconnues par GPT-3.5-turbo et comment concevoir. des invites ou des pipelines pour laisser LLM résoudre la tâche de détection des anomalies. Permettez-moi de vous présenter une introduction détaillée à ce travail. Titre de l'article image : Largelangagemodelscanbezero-shotanomalydete

Dans cet article, nous présenterons comment développer des chatbots intelligents à l'aide de ChatGPT et Java, et fournirons quelques exemples de code spécifiques. ChatGPT est la dernière version du Generative Pre-training Transformer développé par OpenAI, une technologie d'intelligence artificielle basée sur un réseau neuronal qui peut comprendre le langage naturel et générer du texte de type humain. En utilisant ChatGPT, nous pouvons facilement créer des discussions adaptatives

01Aperçu des perspectives Actuellement, il est difficile d'atteindre un équilibre approprié entre efficacité de détection et résultats de détection. Nous avons développé un algorithme YOLOv5 amélioré pour la détection de cibles dans des images de télédétection optique haute résolution, en utilisant des pyramides de caractéristiques multicouches, des stratégies de têtes de détection multiples et des modules d'attention hybrides pour améliorer l'effet du réseau de détection de cibles dans les images de télédétection optique. Selon l'ensemble de données SIMD, le mAP du nouvel algorithme est 2,2 % meilleur que YOLOv5 et 8,48 % meilleur que YOLOX, permettant ainsi d'obtenir un meilleur équilibre entre les résultats de détection et la vitesse. 02 Contexte et motivation Avec le développement rapide de la technologie de télédétection, les images de télédétection optique à haute résolution ont été utilisées pour décrire de nombreux objets à la surface de la Terre, notamment des avions, des voitures, des bâtiments, etc. Détection d'objets dans l'interprétation d'images de télédétection

chatgpt peut être utilisé en Chine, mais ne peut pas être enregistré, ni à Hong Kong et Macao. Si les utilisateurs souhaitent s'inscrire, ils peuvent utiliser un numéro de téléphone mobile étranger pour s'inscrire. Notez que lors du processus d'enregistrement, l'environnement réseau doit être basculé vers. une adresse IP étrangère.
