top of page

工作詳述

1061611   張唯潁
1061746  陳宛君
人體運動姿勢辨識及矯正比對分析系統之研究

(一)    摘要       

        近年來,人體動作辨識已經是一個廣泛應用的研究領域,本計畫擬設計出一套運用視覺化來偵測人體運動姿勢的系統,將需要的運動姿勢輸入到電腦並整理數據後,電腦會顯示使用者要做的姿勢,並架設攝影機拍攝使用者的連續動作,在經過擷取各個定點動作的畫面處理後再與系統中的姿勢數據進行比對,系統會依照拍攝畫面與資料的符合程度,在畫面上顯示正確率,並告訴使用者應該如何調整成正確的姿勢。利用攝影機拍攝動態人體姿勢後,將影像輸入此偵測人體姿勢之系統將會有多元化之用途,可以提供給課後練習的學生使用,減少回家練習後沒有老師指導的問題,學生在自我練習動作時可以馬上跟教師的示範影像做比對,能夠自行修正其動作的正確性;也可提供給不方便於固定時間在教室上課,傾向於在家自主學習的人們使用。        本計畫透過 ST-GCN(Spatial Temporal Graph Convolutional Networks)的模型結構建立骨架圖,並採用圖卷積網絡(Graph Convolutional Networks, GCN)機器學習的方式來對骨架圖進行分類、辨識,此技術會建立出具有時序性的資料,能夠與資料庫中的一系列之動作比對正確度,若使用者的姿勢正確度低於標準百分比,系統會發出重新練習的訊息,若正確度高於標準百分比,但非完全正確的情況下,系統會告知使用者需要修正的部位,例如腰背打直、手臂抬高等訊息。

圖片8.png

(二)    使用技術
  首先系統會透過電腦或是手機螢幕顯示一系列的示範姿勢,例如圖四的瑜珈動作,使用者需要跟著螢幕,在攝影機前依序做出這一系列的姿勢,包含起始動作如圖四的(1),使用者作出的每個定點動作都會被系統分析為不同影像,當使用者做完螢幕上指示的一系列動作時,系統會判別到最後一個終止動作如圖四的(9),這時即停止拍攝,開始進行建構模型及比對。
   拍攝時需要簡單不雜亂的背景,使用者穿著的衣物也不能是背景的接近色,當攝影機錄下使用者的動作影片後,即輸入系統進行分段擷取每個姿勢的影像,人體的不同部位作為特徵參數,如關節、手與腳的彎曲角度、頭部擺的方向等等,藉由影像的分析可擷取出人體各個部位的特徵參數資訊,並使用ST-GCN(Spatial Temporal Graph Convolutional Networks)的模型結構建立骨架圖,接著開始判斷此一系列動作的正確度,在比對人體動作的步驟中,會先對此一整套運動中的所有相異姿勢建構出如圖五之3D模型,將每組模型編號,並建立一個放入所有模型的資料庫,在姿勢辨識時即以此資料庫作為比對之用。經過系統比對後,系統會依照相符程度通知使用者修正錯誤部位或是重新做一次。當一個動作從頭到尾所有姿勢之形狀與順序都無誤,此動作才算正確,系統就會指示使用者進行下一階段之動作。

圖片6.png
擷取.PNG

圖六、人體3D結構模型 [5]

以下四點為主要步驟,本計畫之完整步驟如圖七所示:
1.    透過影像處理程式做演算來擷取各姿勢影像
2.    使用ST-GCN模型建構使用者的姿勢模型
3.    利用圖卷積網絡(GCN)對模型進行分類
4.    將圖卷積網絡分析出的時空圖模型送入資料庫中比對姿勢

螢幕快照 2020-11-23 上午11.27.39.png

​圖七、系統架構圖

 (1) ST-GCN及OpenPose

      我們採用ST-GCN作為骨架模型,該模型會自動從數據中學習空間和時間模式。它可以避免在將3D訊息轉換為2D訊息期間丟失時間和空間訊息。從輸入的關鍵點序列中建立一個時空圖(Spatial-Temporal Graph)。這個時空圖結構的建構規則如下:

  1. 在每一幀內部,按照人體的自然骨架連接關係建立空間圖,如圖九的藍色邊。

  2. 在相鄰兩幀的相同關鍵點連接起來,構成時序邊,如圖九的綠色邊。

  3. 所有輸入幀中關鍵點構成節點集(node set),步驟Ⅰ和Ⅱ中的所有的邊構成邊集(edge set),如圖八中間的時空圖。

螢幕快照 2020-11-23 上午11.29.48.png

圖八、ST-GCN的模型結構

利用OpenPose來提取人體骨架關鍵點(Keypoint),其中生成的各點Keypoint數據內容為x, y, c,x及 y指各個點在畫面上的座標,c指的是confidence score,其數值c介於0到1之間,OpenPose可使用三種資料集來生成骨架數據,分別為:

  • MPII Dataset:「0-頭」、「1-脖子」、「2-右肩」、「3-右肘」、「4-右腕」、「5-左肩」、「6-左肘」、「7-左腕」、「8-右臀」、「9-右膝」、「10-右踝」、「11-左臀」、「12-左膝」、「13-左踝」、「14-胸」,共有15個關鍵點。

  • COCO Dataset:「0-鼻子」、「1-脖子」、「2-右肩」、「3-右肘」、「4-右腕」、「5-左肩」、「6-左肘」、「7-左腕」、「8-右臀」、「9-右膝」、「10-右踝」、「11-左臀」、「12-左膝」、「13-左踝」、「14-左眼」、「15-右眼」、「16-左耳」、「17-右耳」,共有18個關鍵點。

  • BODY25 Dataset:「0-鼻子」、「1-脖子」、「2-右肩」、「3-右肘」、「4-右腕」、「5-左肩」、「6-左肘」、「7-左腕」、「8-中臀」、「9-右臀」、「10-右膝」、「11-右踝」、「12-左臀」、「13-左膝」、「14-左踝」、「15-右眼」、「16-左眼」、「17-右耳」、「18-左耳」、「19-左大拇趾」、「20-左小趾」、「21-左腳跟」、「22-右大拇趾」、「23-右小趾」、「24-右腳跟」,共有25個關鍵點。

coco.PNG
body25.PNG

​(a)                                                        (b)

圖九、(a)為COCO資料集的骨架圖

   (b)為BODY25的骨架圖

擷取.PNG

​(a) MPII                                           (b) COCO                                             (c) BODY25

圖十、不同資料集所生成的骨架示意圖

        接著使用圖卷積網絡 (Graph Convolutional Networks, GCN)機器學習,在時空圖上對人體動作訊息進行分析,在圖像上,卷積操作使用一些固定大小的卷積核(Kernel)來掃描輸入的圖像。
        圖卷積在於空間維度上的公式如下:

圖片12.png

        其中,f是特徵圖,v是圖形的頂點。B是取樣區域,定義為鄉林中心頂點1單位的像素集合,也就是鄰域集(Neighbor Set),按照空間順序劃分為一系列集合[5],每個集合包含一個像素,這些集合就構成了鄰域集的一個劃分(Partition),如圖九中的有色點,且每種顏色都與各個可學習的權重向量相對應。卷積核的參數和這個Partition中的子集個數以及特徵向量長度有關,只要定義劃分規則(Partitioning Strategy),就可以參照圖像卷積來定義卷積核的參數。w是加權函數,它提供對應於給定輸入的加權向量。加權向量的數量是固定的,而B中的頂點是變化的。映射函數l_i設計為用唯一的權重向量映射每個頂點。

圖片15.png

圖十一、時空圖中的空間配置分區

在時空圖上進行骨架動作辨識,有三種空間的劃分規則:


(1)Uni-Labeling (唯一劃分)


每個相鄰節點上的特徵向量將具有相同權重向量的內積,如圖十一的(b)圖。缺點是在單幀情況下,使用此規則等於權重向量和所有相鄰節點平均特徵向量之間的內積。對於骨架序列分類不是最佳方案,此規則可能會缺乏局部差異屬性。


(2)Distance Partitioning (基於距離的劃分)


根據節點到root節點v_ti的距離d( ∙ ,v_ti)劃分鄰域集,即節點本身子集與鄰節點子集,root節點為d = 0,其相鄰點d = 1,如圖十的(c)圖,此規則可以分析骨架關鍵點之間的微分性質。


(3)Spatial Configuration partitioning (空間構型劃分)


此規則根據節點到骨架重心的距離(打叉處)與root節點的距離來標記節點,如圖十一的(d)圖,將鄰域集劃分為三個子集:
1.    root節點本身(綠色)。
2.    向心子集(藍色),即比本節點更靠近整個骨架重心的鄰節點集合。
3.    離心子集(黃色),即更遠離重心的鄰節點集合。


這種劃分方式具有更深的向心及離心定義。

圖片17.png

圖十二、三種空間的劃分規則示意圖,(a)為輸入的範例骨架

       將這些卷積操作定義完成後,就能開始設計卷積網絡,將各個時序上的卷積操作轉為時空圖的卷積操作,每一個卷積層的輸出即為一個時空圖,圖上的各節點都有各自的特徵向量。最終合併所有節點上的特徵並使用線性分類層進行動作分類。

(2)Model訓練方法:採用LSTM

        LSTM的概念:將遞迴神經網路想像成相似的單元,不斷地將過往資訊往下傳遞,也就是說過去的預測的Output會成為將來較近單元的Input,並以此類推,如圖十三,LSTM目的是設計用來改善 RNN 在長期記憶的不足。

圖十三、LSTM中資訊運作模式

       遞歸神經網路強大的地方在於它允許輸入與輸出的資料不只是單一組向量,而是多組向量組成的序列。當只能一組固定大小的向量輸入,且只允許一組向量輸出時時,可以處理分類問題。但一組輸入多組輸出時,就可以處理將圖片自動標上文字的問題。多組輸入一組輸出則可以處理文本的情感理解,比如說從一段文章中知道是正面或反面的結果。而當可以處理多組輸入,多組輸出時,就可以處理自動翻譯,或是影片分類的問題。

2.PNG

圖十四、輸入及輸出不同序列長度的資料

1.PNG
bottom of page