Google社のAutoMLで自動学習されたNASNetが、人間が構築してきたモデルよりも精度が高いということで、早速試してみました。
実行環境
- AWS EC2 p3.2xlarge
- Ubuntu16.04
- cuda-9.0, cuDNN-7.0
- tensorflow r1.4 (ソースビルド)
- python 3.5.2
精度と実行速度は下記を参照してます(テスト画像とは無関係のベンチマーク結果)。
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
faster_rcnn_nas(1833ms, mAP=43%)
faster_rcnn_nas_lowproposals_coco(540ms, mAP=NaN)
こちらはregion proposal数を落として、総局所分類数を減らして高速化したモデルになってるようです。
テスト画像ではほぼ差は見られませんでした。
参考までに他のモデルの結果も
faster_rcnn_inception_resnet_v2_atrous_coco(620ms, mAP=37%)
faster_rcnn_resnet101_coco(106ms, mAP=32%)
rfcn_resnet101_coco(92ms, mAP=30%)
ssd_inception_v2_coco(42ms, mAP=24%)
ssd_mobilenet_v1_coco(30ms, mAP=21%)
NASNetは精度は高い(特にresion proposalにおけるfalse positiveの低減が顕著)のですが、ネットワークの規模が大きく推論速度が遅いので、2017年11月現在ではJetson(TegraX2,X1)のようなデバイス(SoC)への搭載や、リアルタイム物体認識用途にはまだまだ厳しいと思われますね。
NASNetのエッジ側での応用には、さらなるプロセッサの高性能化、ネットワークの縮小、処理の最適化(目的に応じたregion proposal数の調整等)などが望まれると思います。
一方で、リアルタイム性の要件がそこまで厳しくないものについて、画像認識WebAPIの推論エンジンとしての応用は適性が高いかと思いました。
参考:
https://arxiv.org/pdf/1707.07012.pdf
https://github.com/tensorflow/models/tree/master/research/object_detection
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md