科学の力によって

スタンド能力が発現した話

 

Github

https://github.com/OkanoShogo0903/character_estimation

関連記事

https://qiita.com/okanosyogo/items/d62e6471ca3bb2877b0c

これを読んでディープじゃない方の

機械学習をやりたくなる

特長抽出器(frozen)

軽量な手法を使った分類器

主なメリット

  • 少量のデータセットで学習可能
     
  • 学習時間が短く、試行錯誤が容易
     
  • 特徴量抽出器の出力を人間が理解できる
    ディープラーニング手法の一般に向けた理由の説明が困難という問題を部分的にクリア

 

OpenPose + ランダムフォレスト 』 の利点

 

  • 少ないデータセットで学習可能
     
  • パラメータ数が少ない
     
  • 学習時間が短いため試行錯誤しやすい
     
  • 特徴量抽出器の出力の理解が容易
     
  • 画像と比較してデータセットが軽量
     
  • OpenPose流用しており服の色や環境の複雑さに強い

つまり、手軽ってこと

実装上の工夫

  • データ拡張
    左右Frip
     
  • 特徴量エンジニアリング
     
  • GridSearch
     
  • ClassWeight
     
  • ROS上で実装
    パッケージ分割による拡張性向上
    データ収集の利便性が高い

OpenPose

Random

Forest

Joint pixel

Joint angle

Relative hand position

Relative head position

to

Feature

Engineering

精度

 

トレーニングデータ 86.6
テストデータ 76.1
バリデーションデータ -

重要度計算によると、

腕の関節角度が重要らしい

エントロピーもしくはジニ係数の寄与度による
手足の関節角度の重要度

実際やってみたら

問題が多い

クラス数をスケールしにくい

 

 

頭の位置以外が似ているポーズを追加したい

 

頭の位置の特徴量を追加

途中から楽しくなって新しいポーズを追加したくなる

クラス数が多かったり増える可能性があるときは

Dense層入れて転移学習しろという話

関節角度だけでは分類できないポーズを追加したい

 

体の中心から相対的な手先のピクセル位置等を特徴量に追加

モデルが悪いわけでは無いが、視野角の問題で体が見切れて

特徴量が欠損することによる誤認識が多い。
関節の末端をドロップアウトさせるデータ拡張で対応できそう。

(そこまでやるなら転移学習したほうがいいのでは?)

感想

お手軽に試せた。(実装3日)

 

次やるときは素直に転移学習します。

Made with Slides.com