開源精選 | 基於影象的人體動作、手語識別系統

《開源精選》是我們分享Github、Gitee等開源社群中優質專案的欄目,包括技術、學習、實用與各種有趣的內容。本期推薦的是一個基於Python的基於影象的手語識別系統——hand-keras-yolo3-recognize。

hand-keras-yolo3-recognize一個基於人體姿態研究的手語影象識別系統。根據OpenPose人體姿態開源模型和YOLOv3自訓練手部模型檢測影片和影象,再把數字特徵進行分類器模型預測,將預測結果以文字形式展現出來。

開源精選 | 基於影象的人體動作、手語識別系統

軟硬體環境:

基於人體姿態的手語影象識別系統採用了軟硬體相結合的方法。硬體部分主要是用於採集手語影象的單目攝像頭。軟體部分主要是透過ffmpeg對影片影象進行處理,然後在Anaconda下配置Python3。6的開發環境,再結合Cmake編譯OpenPose模型,最後在VScode編譯器中結合OpenCV中的影象演算法,實現了對手語影象識別系統所有程式的編譯,透過wxFromBuilder框架整合設計了系統主介面。

硬體環境

手語影片影象採集主要採用的硬體裝置有膝上型電腦攝像頭和手機攝像頭。 程式執行硬體環境詳細引數如下:

(1)作業系統:Windows10家庭版,64bit

(2)GPU:Intel(R) Core(TM) i5-8300H,主頻:2。30GHz

(3)記憶體:8G

軟體環境

(1) 影片處理工具:ffmpeg-20181115

(2) 整合開發環境:Microsoft Visual Studio Code、Anaconda3

(3) 介面設計工具:wxFromBuilder

(4) 程式語言環境:python3。6

系統功能設計:

開源精選 | 基於影象的人體動作、手語識別系統

1。 影片幀處理

影片中儲存每幀圖片主要使用了OpenCV中的

cv2。imwrite()

函式;處理一段影片使用本地最大平均幀間差為區域性最大值的幀來提取關鍵幀。

更多:Python+Opencv2(三)儲存影片關鍵幀_cungudafa的部落格-CSDN部落格

開源精選 | 基於影象的人體動作、手語識別系統

2。 OpenPose人體姿態識別

Openpose人體骨骼、手勢——靜態影象標記及分類(附原始碼)_cungudafa的部落格-CSDN部落格_openpose骨骼點檔案

Openpose人體骨骼、手勢——靜態影象標記及分類2(附原始碼)_cungudafa的部落格-CSDN部落格_openpose 動作分類

開源精選 | 基於影象的人體動作、手語識別系統

由於僅靠人體姿態4和7關鍵點不足以識別手部位置,容易誤判,因此在最終設計中引入了yolo手部識別。

開源精選 | 基於影象的人體動作、手語識別系統

3。 yolov3手部模型訓練

專案結構主要分為兩大部分:YOLOv3深度模型訓練部分和YOLOv3和OpenPose手語姿態識別部分。

訓練模型思路:

開源精選 | 基於影象的人體動作、手語識別系統

環境:【GPU】win10 (1050Ti)+anaconda3+python3。6+CUDA10。0+tensorflow-gpu2。1。0_cungudafa的部落格-CSDN部落格

訓練模型:【Keras+TensorFlow+Yolo3】一文掌握影象標註、訓練、識別(tf2填坑)_cungudafa的部落格-CSDN部落格

識別:【Keras+TensorFlow+Yolo3】教你如何識別影視劇模型_cungudafa的部落格-CSDN部落格

開源精選 | 基於影象的人體動作、手語識別系統

模型訓練參考程式碼:https://gitee。com/cungudafa/keras-yolo3

yolo3識別這裡參考於:https://github。com/AaronJny/tf2-keras-yolo3

4。 人體姿態數字特徵提取

識別完整過程思路:

開源精選 | 基於影象的人體動作、手語識別系統

在OpenPose設計中闡述過求解距離和角度的公式及方法,最終因為個體差異每個人的骨骼可能不同,目前最佳化為距離比(即小臂3-4關鍵點的距離與脖子長度0-1關鍵點距離之比)。

開源精選 | 基於影象的人體動作、手語識別系統

基於 keras的yolo3訓練部分專案結構如下表所示:

keras-yolo3訓練專案結構:

開源精選 | 基於影象的人體動作、手語識別系統

其中logs資料夾用於存放訓練好的模型,VOCdevkit用於存放圖片和標註資訊。

model_data資料夾內容:

開源精選 | 基於影象的人體動作、手語識別系統

nets資料夾內容:

開源精選 | 基於影象的人體動作、手語識別系統

openpose和yolov3相結合參考:

《手語影象識別系統設計——人體動作識別》設計與實現_cungudafa的部落格-CSDN部落格_手語識別系統

5。beyes分類識別

【Sklearn】入門花卉資料集實驗——理解樸素貝葉斯分類器_cungudafa的部落格-CSDN部落格

開源精選 | 基於影象的人體動作、手語識別系統

識別部分程式碼結構:

開源精選 | 基於影象的人體動作、手語識別系統

影片檔案處理filesUtils資料夾:

開源精選 | 基於影象的人體動作、手語識別系統

模型model資料夾:

開源精選 | 基於影象的人體動作、手語識別系統

基本演算法pose和yolov3資料夾:

開源精選 | 基於影象的人體動作、手語識別系統

使用:

1。配置好相應環境(docs/requirements。txt)

docs/requirements。txt · cungudafa/hand-keras-yolo3-recognize - Gitee。com

2。修改相應路徑,執行UI_main。py

開源精選 | 基於影象的人體動作、手語識別系統

更多內容大家可自行前往閱讀。

開源地址: gitee。com/cungudafa/hand-keras-yolo3-recognize