自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

摔倒檢測,基于骨骼點(diǎn)人體動(dòng)作識(shí)別,部分代碼用 Chatgpt 完成

人工智能
有能力的朋友可以自己訓(xùn)練模型試試,另外,百度的Paddle也基于STGCN開發(fā)了一個(gè)跌倒檢測模型,只支持摔倒這一種行為的識(shí)別。

哈嘍,大家好。

今天給大家分享一個(gè)摔倒檢測項(xiàng)目,準(zhǔn)確地說是基于骨骼點(diǎn)的人體動(dòng)作識(shí)別。

圖片

圖片

大概分為三個(gè)步驟

  • 識(shí)別人體
  • 識(shí)別人體骨骼點(diǎn)
  • 動(dòng)作分類

項(xiàng)目源碼已經(jīng)打包好了,獲取方式見文末。

0. chatgpt

首先,我們需要獲取監(jiān)控的視頻流。這段代碼比較固定,我們可以直接讓chatgpt完成

圖片

chatgpt寫的這段代碼是沒有問題的,可以直接使用。

但后面涉及到業(yè)務(wù)型任務(wù),比如:用mediapipe?識(shí)別人體骨骼點(diǎn),chatgpt給出的代碼是不對(duì)的。

我覺得chatgpt?可以作為一個(gè)工具箱,能獨(dú)立于業(yè)務(wù)邏輯,都可以試著交給chatgpt完成。

所以,我覺得未來對(duì)程序員的要求會(huì)更加注重業(yè)務(wù)抽象的能力。扯遠(yuǎn)了,言歸正傳。

1. 人體識(shí)別

人體識(shí)別可以用目標(biāo)檢測模型,比如:YOLOv5?,之前我們也分享過好多訓(xùn)練YOLOv5模型的文章。

但這里我沒有用YOLOv5?,而是用mediapipe?。因?yàn)閙ediapipe?運(yùn)行速度更快,在 CPU 上也能流暢地運(yùn)行。

2. 骨骼點(diǎn)識(shí)別

識(shí)別骨骼點(diǎn)的模型有很多,如:alphapose、openpose,每種模型識(shí)別出來的骨骼點(diǎn)個(gè)數(shù)和位置都有所差異。比如下面這兩種:

圖片

mediapipe 32個(gè)骨骼點(diǎn)

圖片

coco 17個(gè)骨骼點(diǎn)

骨骼點(diǎn)的識(shí)別我仍然使用mediapipe?,除了速度快,另一個(gè)優(yōu)勢是mediapipe識(shí)別的骨骼點(diǎn)多,有 32 個(gè),能滿足我們的使用。因?yàn)橄旅嬉玫娜梭w動(dòng)作分類,強(qiáng)依賴于骨骼點(diǎn)。

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

if not results.pose_landmarks:
continue

# 識(shí)別人體骨骼點(diǎn)
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. 動(dòng)作識(shí)別

動(dòng)作識(shí)別使用的是基于骨架動(dòng)作識(shí)別的時(shí)空?qǐng)D卷積網(wǎng)絡(luò),開源方案是STGCN(Skeleton-Based Graph Convolutional Networks)

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

圖片

一組動(dòng)作,如:摔倒,由 N 幀組成,每一幀可以構(gòu)造出以骨骼點(diǎn)坐標(biāo)組成的空間圖,骨骼點(diǎn)在幀之間連接起來就構(gòu)成時(shí)間圖,骨骼點(diǎn)的連接和時(shí)間幀的連接便可以構(gòu)造一張時(shí)空?qǐng)D。

圖片

時(shí)空?qǐng)D

在時(shí)空?qǐng)D上進(jìn)行多層圖卷積運(yùn)算,便可生成更高層次的特征圖。然后輸入到SoftMax分類器進(jìn)行動(dòng)作分類(Action Classification)。

圖片

圖卷積

本來我打算訓(xùn)練STGCN模型的,但遇到的坑實(shí)在是太多了,最后直接用了別人訓(xùn)練好的模型。

坑1. STGCN? 支持 OpenPose? 識(shí)別的骨骼點(diǎn),有數(shù)據(jù)集Kinetics-skeleton?可以直接用??拥牡胤皆谟贠penPose安裝太麻煩,需要一堆步驟,掙扎后放棄。

坑2. STGCN? 還支持 NTU RGB+D數(shù)據(jù)集,該數(shù)據(jù)集有 60 個(gè)動(dòng)作分類,如:起立、行走、摔倒等。這份數(shù)據(jù)集的人體包含 25 個(gè)骨骼點(diǎn),只有坐標(biāo)數(shù)據(jù),原始視頻基本搞不到,所以沒辦法知道這 25 個(gè)骨骼點(diǎn)對(duì)應(yīng)哪些位置,以及用什么模型能識(shí)別出這 25 個(gè)骨骼點(diǎn),掙扎后放棄。

上面兩個(gè)大坑,導(dǎo)致沒法直接訓(xùn)練STGCN?模型,找了一個(gè)開源的方案,它用的是alphapose?識(shí)別 14 個(gè)骨骼點(diǎn),同時(shí)修改STGCN源碼支持自定義骨骼點(diǎn)。

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

我看了下mediapipe包含了這 14 個(gè)骨骼點(diǎn),所以可以用mediapipe識(shí)別的骨骼點(diǎn)輸入他的模型,實(shí)現(xiàn)動(dòng)作分類。

圖片

mediapipe 32個(gè)骨骼點(diǎn)

圖片

選出14個(gè)關(guān)鍵骨骼點(diǎn)

14個(gè)骨骼點(diǎn)提取代碼:

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?原始方案構(gòu)造的空間圖只支持openpose?18個(gè)骨骼點(diǎn)和NTU RGB+D數(shù)據(jù)集25個(gè)骨骼點(diǎn)

圖片

修改這部分源碼,以支持自定義的14個(gè)骨骼點(diǎn)

圖片

模型直接使用Human-Falling-Detect-Tracks項(xiàng)目已經(jīng)訓(xùn)練好的,實(shí)際運(yùn)行發(fā)現(xiàn)識(shí)別效果很差,因?yàn)闆]有看到模型訓(xùn)練過程,不確定問題出在哪。

有能力的朋友可以自己訓(xùn)練模型試試,另外,百度的Paddle?也基于STGCN?開發(fā)了一個(gè)跌倒檢測模型,只支持摔倒這一種行為的識(shí)別。

當(dāng)然大家也可以試試Transformer的方式,不需要提取骨骼點(diǎn)特征,直接將 N 幀圖片送入模型分類。

關(guān)于STGCN的原理,大家可以參考文章:https://www.jianshu.com/p/be85114006e3  總結(jié)的非常好。

需要源碼的朋友留言區(qū)回復(fù)即可。

如果大家覺得本文對(duì)你有用就點(diǎn)個(gè) 在看 鼓勵(lì)一下吧,后續(xù)我會(huì)持續(xù)分享優(yōu)秀的 Python+AI 項(xiàng)目。

責(zé)任編輯:武曉燕 來源: 渡碼
相關(guān)推薦

2023-04-06 19:06:28

ChatGPT開發(fā)摔倒識(shí)別

2023-09-28 11:01:24

AI摔倒檢測

2024-02-26 12:48:28

ChatGPT人工智能論文

2020-08-21 13:40:17

Python代碼人體膚色

2025-04-21 08:13:58

ChatGPTAINLP

2017-10-17 13:30:32

Python人臉識(shí)別

2020-02-28 15:33:12

代碼人工智能檢測

2011-03-31 11:14:14

2023-09-04 08:23:29

ChatGPT?代碼開發(fā)

2024-06-12 12:57:12

2021-03-14 22:14:55

代碼語法Java

2011-07-20 17:29:12

iPhone 網(wǎng)絡(luò)

2010-07-13 15:23:10

vsftpd

2019-07-24 15:25:29

框架AI開發(fā)

2024-05-09 08:14:52

2022-12-25 10:35:09

ChatGPTPython

2024-03-19 13:15:23

EAI 框架人體動(dòng)作預(yù)測

2013-07-27 21:04:58

2023-06-02 13:19:15

模型AI

2022-09-23 14:44:31

前端huskyeslint
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)