人體姿態估計


人體姿態估計

人體姿態估計(Human Pose Detection)是計算機視覺中的一個重要分支,應用范圍寬廣,比如在自動駕駛行業進行街景中行人的姿態檢測、動作預測;在安防領域的行人再識別問題,特殊場景的特定動作監控;影視產業的電影特效等。

Openpose是卡內基梅隆大學提出的一種人體姿態檢測模型,在github上有比較完整的實現Openpose on github。它是第一個基於深度學習的實時多人2D姿態估計方法,模型效果很好,魯棒性較高,但網絡較深,算法復雜度很高。Openpose提供了開源的caffe模型,在i7機器上,用caffe進行cpu前向推理測試,單幀圖像耗時約3s+。而使用MLU,同樣的網絡推理速度可以得到很大提升,在mlu100上單幀圖像推理耗時約60+ms。通過CNStream視頻處理框架,可以較方便地利用寒武紀MLU和軟件棧資源,進行一個完整的姿態檢測App開發。本文主要介紹如何在CNStream中進行Openpose的Demo開發。

1. Demo的整體需求

Demo的目標是利用openpose模型進行人體骨骼關節點檢測,針對輸入視頻,檢測視頻中每一幀中的人體骨骼關鍵點,匹配連接並繪制到原圖后重新輸出視頻。

Demo開發使用18點表示的人體骨架圖:

 

對應的人體關鍵點Map表示:

POSE_18_BODY_PARTS {

  {0,  "Nose"},

  {1,  "Neck"},

  {2,  "RShoulder"},

  {3,  "RElbow"},

  {4,  "RWrist"},

  {5,  "LShoulder"},

  {6,  "LElbow"},

  {7,  "LWrist"},

  {8,  "RHip"},

  {9,  "RKnee"},

  {10, "RAnkle"},

  {11, "LHip"},

  {12, "LKnee"},

  {13, "LAnkle"},

  {14, "REye"},

  {15, "LEye"},

  {16, "REar"},

  {17, "LEar"}};

2. 開發步驟

准備工作:

利用cambricon caffe提供的一系列工具,轉換openpose提供的caffe原生模型為cambricon離線模型。

整個Demo運行過程拆解開,大致包括:

(1) 圖片/視頻解碼

(2) 圖像顏色空間轉換,並針對推理進行圖像數據前處理(整個操作簡稱前處理)

(3) 進行網絡推理過程

(4) 解析網絡輸出,篩選檢測到的關節點,匹配連接有效關節點對,在原圖像繪制(整個操作簡稱后處理)

(5) 重新編碼圖像為視頻

基於CNStream進行開發,可以看作組合三個功能插件搭建整條pipeline的過程:

(1) 利用DataSource插件實現圖片的解碼,或視頻的解析解碼過程,該功能插件輸入為圖片/視頻路徑,輸出為NV12格式的圖像數據;

(2) 推理插件,推理插件接收DataSource插件的輸入后,首先進行前處理,包括圖像顏色空間轉換(NV12->BGR)和減均值歸一化等,推理后的數據經過后處理過程后輸出;

(3) 編碼插件,將繪制了骨骼關鍵點的RGB圖像序列重新編碼輸出為視頻

CNStream中提供了滿足基本需求的DataSource插件、Inference插件和Encode插件,Demo開發主要需要編寫網絡的前處理、后處理方法,並將所有插件通過cnstream的配置方式,連接為完整的pipeline(實際開發中可能根據自己的需求定制化開發部分插件)。

3. 最終的Demo輸出效果:

針對單人姿態檢測,收集了一系列交警手勢信號圖進行展示:

  

針對多人姿態檢測,對多人舞蹈視頻處理展示:

 

 

 可以看出,單人常規姿態檢測可以說非常准確;在多人姿態檢測繪制結果上,某些幀出現關節點對匹配錯誤出現的誤連,但整體效果還不錯。    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM