人體骨骼關鍵點檢測
人體骨骼關鍵點檢測
挑戰複雜生活場景中的人體檢測,並預測多種複雜動作下的人體骨骼關鍵點位置
https://challenger.ai/competition/keypoint/subject
簡介
人體骨骼關鍵點對於描述人體姿態,預測人體行為至關重要。因此人體骨骼關鍵點檢測是諸多計算機視覺任務的基礎,例如動作分類,異常行為檢測,以及自動駕駛等等。本次比賽邀請參賽者設計演算法與模型,對自然影象中可見的人體骨骼關鍵點進行檢測。組委會將通過計算參賽者提交的檢測結果與真實標註之間的相似性來評估參賽者的演算法模型。
資料說明
資料集分為訓練(70%)、驗證(10%)、測試A(10%)與測試B(10%)四部分。資料集圖片中的每一個重要人物(佔影象面積較大的清晰人物),我們均對其進行了人體骨骼關鍵點標註。其中每個人物的全部人體骨骼關鍵點共有14個,編號順序如表所示,依次為:
1/右肩 | 2/右肘 | 3/右腕 | 4/左肩 | 5/左肘 |
6/左腕 | 7/右髖 | 8/右膝 | 9/右踝 | 10/左髖 |
11/左膝 | 12/左踝 | 13/頭頂 | 14/脖子 |
每個人體骨骼關鍵點有三種狀態:可見、不可見、以及不在圖內或不可推測。
一個標註的視覺化例子如下圖所示。其中紅色為可見點,灰色為不可見點,關鍵點旁的數字為關鍵點對應編號:
圖1: 人體骨骼關鍵點標註示例
人體骨骼關鍵點的標註資訊以JSON格式儲存。每個JSON檔案分別對應一個分割資料集,一個JSON檔案中的每個item儲存該資料集中一張圖片的人體框位置與人體骨骼關鍵點位置。其中JSON檔案格式如下所示:
-
[
-
{
-
"image_id": "a0f6bdc065a602b7b84a67fb8d14ce403d902e0d",
-
"human_annotations":
-
{
-
"human1": [178,250,290,522],
-
"human2": [293,274,352,473],
-
"human3": [315,236,389,495],
-
...},
-
"keypoint_annotations":
-
{
-
"human1": [261, 294, 1, 281, 328, 1, 259, 314, 2,
-
213, 295, 1, 208, 346, 1, 192, 335, 1,
-
245, 375, 1, 255, 432, 1, 244, 494, 1,
-
221, 379, 1, 219, 442, 1, 226, 491, 1,
-
226, 256, 1, 231, 284, 1],
-
"human2": [313, 301, 1, 305, 337, 1, 321, 345, 1,
-
331, 316, 2, 331, 335, 2, 344, 343, 2,
-
313, 359, 1, 320, 409, 1, 311, 454, 1,
-
327, 356, 2, 330, 409, 1, 324, 446, 1,
-
337, 284, 1, 327, 302, 1],
-
"human3": [373, 304, 1, 346, 286, 1, 332, 263, 1,
-
363, 308, 2, 342, 327, 2, 345, 313, 1,
-
370, 385, 2, 368, 423, 2, 370, 466, 2,
-
363, 386, 1, 361, 424, 1, 361, 475, 1,
-
365, 273, 1, 369, 297, 1],
-
...}
-
},
-
...
-
]
其中,各欄位儲存資訊如下:
“image_id”:字串,儲存影象的檔名。
“human_annotations”:若干長度為4的整數型數列,儲存人體框的位置。其中前兩個引數為人體框左上角點的座標值,後兩個引數為人體框右下角點的座標值。
“keypoint_annotations”:若干長度為42的整數型數列,儲存人體骨骼關節點位置。數列形式為:[x1,y1,v1,x2,y2,v2,⋅⋅⋅,x14,y14,v14][x1,y1,v1,x2,y2,v2,⋅⋅⋅,x14,y14,v14],其中(xi,yi)(xi,yi)為編號ii的人體骨骼關節點的座標位置,vivi為其狀態(vi=1vi=1可見,vi=2vi=2不可見,vi=3vi=3不在圖內或不可推測)。 人體骨骼關鍵點的編號順序如表格所示,依次為:1/右肩,2/右肘,3/右腕,4/左肩,5/左肘,6/左腕,7/右髖,8/右膝,9/右踝,10/左髖,11/左膝,12/左踝,13/頭頂,14/脖子。
結果提交說明
選手返回的結果應存為JSON檔案,格式如下:
-
[
-
{
-
"image_id": "a0f6bdc065a602b7b84a67fb8d14ce403d902e0d",
-
"keypoint_annotations": {
-
"human1": [261, 294, 1, 281, 328, 1, 0, 0, 0, 213, 295, 1, 208, 346, 1, 192, 335, 1, 245, 375, 1, 255, 432, 1, 244, 494, 1, 221, 379, 1, 219, 442, 1, 226, 491, 1, 226, 256, 1, 231, 284, 1],
-
"human2": [313, 301, 1, 305, 337, 1, 321, 345, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 359, 1, 320, 409, 1, 311, 454, 1, 0, 0, 0, 330, 409, 1, 324, 446, 1, 337, 284, 1, 327, 302, 1],
-
"human3": [373, 304, 1, 346, 286, 1, 332, 263, 1, 0, 0, 0, 0, 0, 0, 345, 313, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 386, 1, 361, 424, 1, 361, 475, 1, 365, 273, 1, 369, 297, 1],
-
...
-
}
-
}
-
...
-
]
其中“keypoint_annotations”欄位為若干長度為42的整數型數列,人體骨骼關鍵點的編號順序依次為:1/右肩,2/右肘,3/右腕,4/左肩,5/左肘,6/左腕,7/右髖,8/右膝,9/右踝,10/左髖,11/左膝,12/左踝,13/頭頂,14/脖子。本次比賽只要求返回檢測結果為可見(v = 1)的人體骨骼關鍵點,未檢測出的人體骨骼關鍵點可用(0,0,0)代替。
評價標準
人體骨骼關鍵點比賽的評價指標類比通用的物體檢測評價方式,將最終的mAP(mean Average Precision)值作為參賽選手排名的依據。物體檢測任務中使用IoU(Intersection over Union)來評價預測與真實標註之間的差異,在人體骨骼關鍵點檢測任務中,我們使用OKS(Object Keypoint Similarity)代替IoU,對選手預測的人體骨骼關鍵點位置與真實標註之間的相似性進行打分。[1]
最終指標mAP的計算方式如下所示:
mAP=mean{[email protected](0.50:0.05:0.95)}mAP=mean{[email protected](0.50:0.05:0.95)}
其中s為OKS閾值,最終評價指標mAP為在不同閾值下得到的平均準確率(AP)的均值。
平均準確率(AP)用一般物體檢測相同的方式得到,但度量性指標由IoU更改為OKS。給定OKS閾值s,選手預測的結果在整個測試集上的平均準確率([email protected])可由測試集中所有圖片的OKS指標計算得到:
[email protected]=∑pδ(OKSp>s)∑[email protected]=∑pδ(OKSp>s)∑p1
OKS分數類比一般物體檢測的IoU值,為選手預測的人體骨骼關鍵點位置與真實標註之間的相似性打分。OKS的主體思想為關鍵點位置的加權歐氏距離,對人物p,OKS分數定義如下:
OKSp=∑iexp{−d2pi/2s2pσ2i}δ(vpi=1)∑iδ(vpi=1)OKSp=∑iexp{−dpi2/2sp2σi2}δ(vpi=1)∑iδ(vpi=1)
其中,pp為人體編號;ii為人體骨骼關鍵點編號;dpidpi為選手預測關鍵點位置與標註位置的歐式距離;spsp為人體p的尺度因子,定義為人體框面積的平方根;σiσi是人體骨骼關鍵點歸一化因子,由人工標註位置偏移的標準差計算得到;vpivpi為第p人的第i個關鍵點的狀態,δ(⋅)δ(⋅)為克羅內克函式,即只有被標為可見的人體骨骼關鍵點(v=1v=1)計入評價指標。
我們將提供驗證指令碼,幫助選手線上下測試模型效果。測試指令碼、以及詳細使用方法,將與驗證資料集同時釋出。
[1] Lin, Tsung-Yi and Maire, Michael and Belongie, Serge and Hays, James and Perona, Pietro and Ramanan, Deva and Dollar, Piotr and Zitnick, C Lawrence, "Microsoft coco: Common objects in context", European conference on computer vision, pp.740--755, Springer, 2015.↩