LoginSignup
0
0

SwiftでViTPoseのランタイムを書いたので精度を確認する

Posted at

先日作成した姿勢推定のコードの動作確認にval2017で精度を評価した。
精度の評価にはcocoapiに姿勢推定の結果を評価するサンプルコードがあるので、評価データをJSONで出力するコードを実装した。

データセットのダウンロード

今回は、val2017で評価したいのでCOCO DATASETから下記の二つのデーターセットをダウンロードした。

  • 2017 Val images [5K/1GB]
  • 2017 Train/Val annotations [241MB]

評価用のJSONを作成するコードの実装

ダウンロードしたval2017の画像をXcodeに手動で追加後、画像から姿勢推定の結果をJSONに保存するコードを実装した。

JSONのフォーマット

struct CocoKeyPoint: Encodable {
  var image_id: Int
  var category_id: Int
  var keypoints: [Double]
  var score: Double
}

cocoapiにはJSONのサンプルが用意してある。

サンプルデータを見れば大体予想がつくが、キーポイントは長いのでわかりにくい。
keypointsにはMS COCOの17のキーポイントの並び順で、x, y, score を17x3=51になる配列を作成すればよい。

JSONが作成できればcocoapiにある評価用のコードを実行すればよい。

一応書いたコードも備忘録として残しておく。

精度評価結果 (MS COCO val2017)

Models AP
yolov7-tiny_fp16 + vitpose-b256x192_fp16.mlmodel 0.589
yolov7-tiny_fp16 + vitpose_s256x192_wholebody_fp16.mlmodel 0.579
yolov7-tiny_fp16 + vitpose_b256x192_wholebody_fp16.mlmodel 0.600

iPhoneの実機でそれなりの精度が出ているので正常に動いてそうだ。
ここに出てくるwholebodyは17キーポイントのみの評価としている。

詳細

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0