摔倒偵測,基於骨骼點人體動作識別,部分代碼用 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 帧摔倒偵測,基於骨骼點人體動作識別,部分代碼用 Chatgpt 完成送入模型分类。
关于STGCN的原理,大家可以参考文章:https://www.jianshu.com/p/be85114006e3 总结的非常好。
需要源码的朋友留言区回复即可。
如果大家觉得本文对你有用就点个 在看 鼓励一下吧,后续我会持续分享优秀的 Python+AI 项目。
以上是摔倒偵測,基於骨骼點人體動作識別,部分代碼用 Chatgpt 完成的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++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.再雙擊運行其中的「一鍵

安裝步驟:1、在ChatGTP官網或手機商店下載ChatGTP軟體;2、開啟後在設定介面中,選擇語言為中文;3、在對局介面中,選擇人機對局並設定中文相譜;4 、開始後在聊天視窗中輸入指令,即可與軟體互動。

ChatGPT與Python的完美結合:打造智慧客服聊天機器人引言:在當今資訊時代,智慧客服系統已成為企業與客戶之間重要的溝通工具。而為了提供更好的客戶服務體驗,許多企業開始轉向採用聊天機器人的方式來完成客戶諮詢、問題解答等任務。在這篇文章中,我們將介紹如何使用OpenAI的強大模型ChatGPT和Python語言結合,來打造一個智慧客服聊天機器人,以提高

今天要為大家介紹一篇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背景&動機隨著遠感技術的快速發展,高解析度光學遠感影像已被用於描述地球表面的許多物體,包括飛機、汽車、建築物等。目標檢測在遠感影像的解釋中

如何使用ChatGPTPHP建構智慧客服機器人引言:隨著人工智慧技術的發展,機器人在客服領域的應用越來越廣泛。使用ChatGPTPHP建構智慧客服機器人,可以幫助企業提供更有效率、更個人化的客戶服務。本文將介紹如何使用ChatGPTPHP建構智慧客服機器人,並提供具體的程式碼範例。一、安裝ChatGPTPHP要使用ChatGPTPHP建構智慧客服機器人
