ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

AutoML Vison 物体検出 edge版のニューラルネットワークを見てみた

はじめに

natsutan.hatenablog.com

あれから時間も経ちだいぶ傷も癒えたので、また思い切って自腹でAutoML回してみました。会社のお金で回せる環境にあるのですが、実際にエッジAIやってるメンバーが忙しくて興味本位でお願いできず。ただ、そんなに費用かからなかったと報告を聞いています。ちなみに会社のお金でAutoMLで1回学習するために決裁書上げてもらいました。(パワポで資料を作って役員にお願いしたりしましたが、それはまた別のお話)

速度優先でやった所無料枠に収まり、精度優先にすると数時間かけても終わらなかったので途中でキャンセルしました。月が変わってボーナスが見えたら精度優先でもやってみたいです。

前回からの変更点

まず、物体検出もEdge向けにtfliteを出せるようになりました。デプロイ(有料)に関しても、勢いでチェック入れるようなUIではなくなりました。

f:id:natsutan:20190923123358p:plain
automl_train

UIの大きな変更点としては、注意点も含めて日本語になりました。分かりやすくなりましたね。

計算に使うコンピューティング時間に制限をつけられるようになりました。これで安心です。 早めにトレーニングが終わった時はそれ以上追加トレーニングができなかったです。これは前回がどうだったのかは良く覚えていません。

データセット

VOC2012を使いました。会社でAutoML回したメンバーより、データ数を少なくすると早く終わって費用が安くなると聞いていたので少しデータを減らしました。

f:id:natsutan:20190923123652p:plain
dataset

クラスは3つで、bottleが1266枚、personが2503枚、tvmonitorが1129枚の、合計4592枚です。personだけオリジナルのデータから数を減らしました。

学習結果

速度優先で学習すると、5時間程度で学習が終わりました。

f:id:natsutan:20190923123725p:plain
automl

結果はmAPが0.328と非常に残念な結果になりました。0.5を超えていればなんとかやりくりできそうですが、0.3程度だと実用上厳しそうです。早期終了した場合は追加学習ができないようで、これ以上速度優先で精度を上げるためにはデータを変える必要がありそうです。

f:id:natsutan:20190923123807p:plain

クラス別ですとtvmonitorはそこそこいってますが、personもbottleも全然駄目でした。

f:id:natsutan:20190923123825p:plain

ちなみに前回やったエッジ向けじゃ無い方の学習結果(低レイテンシー)では、personももっと良い値でした。

画像が足りないのか、エッジ向けで精度が落ちてしまうのか気になるところです。 次はpersonだけでも全データ使ってやってみたいですね。精度優先もやりたいですが、誰かスポンサーになって欲しいです。

個人的にはVOCのpersonは、personっていうより顔じゃね?とか一枚全部人みたいなデータもあるので、もうちょっと人を見つけに行くデータセットだと上手く行くかも知れません。AutoMLで物体検出するときのデータセットはこういうのが良いよとかノウハウが出てくると使いやすくなりますね。例えば、小さい物から大きい物までまんべんなく、物体の場所は問わない、とかそういうのありそうです。

学習後のモデル

前回と同じやり方で、学習後のモデルを可視化しました。

natsutan.hatenablog.com

予想以上に複雑なニューラルネットワークが出力されました。

https://raw.githubusercontent.com/natsutan/cocytus/master/doc/edge_od.png

入力が192x192という非常に小さいサイズになっていたので、このサイズ前提のデータセットにするともう少し精度上がるのでは無いでしょうか。あと、8bit量子化しないで、32bitの浮動小数点のままのtiny-yoloの方が速そうな感じはします。時間があれば比べてみたいですね。