【OKS】非人体Keypoint検出評価指標OKSの難しいところ
OKS(Object Keypoint Similarity)の難しいところ
はじめに
今回は真面目な話をしていきたいと思います.非人体のKeypoint検出に取り組んでいる方の参考になれば幸いです.
OKS(Object Keypoint Similarity)とは
Keypoint検出において正解と推論の類似度を表す尺度です.BBOX検出におけるIoU
と同じ役割を果たします.個人的な印象ですが非人体のKeypoint検出時に評価指標として用いられることが多いように感じます.正解Keypointの座標と推論Keypointの座標から距離dを算出し,これがKeypoint Simioarityとして定義されます.
OKSはざっくり言うとKeypointの距離を平均した指標です.ただ単にピクセル距離を比較すると値が大きくなりすぎるため正規化を目的としてs:BBOXの面積
で割ったり,ガウス分布exp
をかけたりしています.
今回問題としているのはKi
です.
OKSのKiが問題なんです
Kiは以下のように定義されています.
Ki:Keypoint毎に設定される定数で,Keypoint検出の難易度を表す値.
具体的には一つのデータセットに対して複数人でアノテーションを行い,その座標情報の標準偏差である.
このKiはデータセットによって変わるため,データセット間で評価値を比較することすらできません.もちろん同一データセットにおいて相対的な変化量を評価するための値として利用することは出来ます.
Kiの変化によるOKSへの影響
具体的に以下の様なKeypoint検出の場合でKiの変化によるOKSへの影響を考えましょう.グラフ1, 2には特に関連性がなくただ二つの例として示しています.正解が青色のtestで推論が赤色のpredです.全てのKeypointが見える状態visible
であるとします.
OKS | グラフ1 | グラフ2 |
---|---|---|
Ki=0.1 | 0.8480 | 0.6628 |
Ki=0.2 | 0.9592 | 0.8155 |
グラフ2の値に注目してもらうとKiの変化によって大きくOKSの値が変化していることが分かります.OKSについてよく知らない人や他分野の人の立場になってこの結果を聞いた場合,0.6では「まだまだ」であるという印象ですが,0.8であれば「それなりにやるやん」という印象になりそうですよね.
同じ結果なのに印象が違うyo!!
ピクセル距離やとどないですか
最後に各点における純粋なピクセル距離とOKSの値について比較します.
ピクセル距離は予想を大きく外した場合の値の変化が大きいです.これを抑えるために正規化がありますが,値のばらつきが大きくなる場合には効果が薄いです.仮に何か正規化をするとすれば,このKeypoint群を囲うBBOXの対角線を用いることになるでしょう.またガウス分布によってずれを解消できるそうです(<-ガウス分布よくわかってない)
Discussion