最速のディープラーニングモデルを求めて「PINTO_model_zoo」を探検してみる


ツアー案内

 より深いPINTO_model_zooのツアーを以下記事で実施しています。興味ある方はおこしください。

最速モデルを求めて

 @PINTO さんのおかげで、Raspberry Piで爆速エッジコンピューティングに入門することができました。以下記事参照ください(PINTOさんの成果物をそのまま使わさせていただいただけです)。

Raspberry PiでPINTOさん謹製「TensorFlowLite-bin」を使ってお手軽に爆速エッジコンピューティング

 少しだけ、ラズパイカメラモジュール対応で貢献(PR)したところ、Mergeいただき更に次のようなありがたい啓示をいただきました。

 最速モデルはどこに? その謎をあきらかにすべく我々は「PINTO_model_zoo」奥地へ向かった。

「PINTO_model_zoo」を探検

 これ以降は、下記記事の通りRaspberry PiとTensorFlow Liteのセットアップが完了していることを前提にしています。

Raspberry PiでPINTOさん謹製「TensorFlowLite-bin」を使ってお手軽に爆速エッジコンピューティング

 コマンドは、Raspberry Piのターミナルを前提としています。

 まずは「PINTO_model_zoo」をcloneして

$ git clone https://github.com/PINTO0309/PINTO_model_zoo

 中身を軽くtreeコマンドで確認してみましょう。

$ tree -d PINTO_model_zoo
PINTO_model_zoo/
├── 01_deeplabv3
│   ├── 01_mobilenetv3_small
│   │   ├── 01_pascalvoc
│   │   │   ├── 01_float32
│   │   │   ├── 02_quantization-aware
│   │   │   ├── 03_export_model
│   │   │   └── 04_tflite
│   │   └── 02_cityscapes
│   │       ├── 01_float32
│   │       ├── 02_quantization-aware
│   │       ├── 03_export_model
│   │       └── 04_tflite
│   │           ├── 01_uint8-float32-float32
│   │           ├── 02_uint8-dequant_float32-float32
│   │           ├── 03_uint8-uint8-uint8
│   │           └── 04_weight-quant-float32-float32-float32
│   ├── 02_mobilenetv3_large
│   │   ├── 01_pascalvoc
│   │   │   ├── 01_float32
│   │   │   ├── 02_quantization-aware
│   │   │   ├── 03_export_model
│   │   │   └── 04_tflite
│   │   └── 02_cityscapes
│   │       ├── 01_float32
│   │       ├── 02_quantization-aware
│   │       ├── 03_export_model
│   │       └── 04_tflite
│   │           ├── 01_uint8-float32-float32
│   │           ├── 02_uint8-dequant_float32-float32
│   │           ├── 03_uint8-uint8-uint8
│   │           └── 04_weight-quant-float32-float32-float32
│   ├── 03_mobilenetv2_dm05
│   │   ├── 01_coco_voc_trainaug
│   │   └── 02_coco_voc_trainval
│   ├── 04_mobilenetv2_dm10
│   │   ├── 01_coco_voc_trainaug
│   │   └── 02_coco_voc_trainval
│   └── 05_mobilenetv3_gpu

(恐ろしくなって 01〜21 まで略)

├── 22_Learning_to_See_Moving_Objects_in_the_Dark
│   ├── 01_float32
│   ├── 02_weight_quantization
│   └── 03_float16_quantization
└── 99_media

197 directories

 やだ、頭おかしい(褒め言葉)。すみません、途中で恐ろしくなって省略してしまいました。ディレクトリだけで197、ファイルは780あります(2020/04/16現在)。

 「PINTO_model_zoo」にはPINTOさんが丹精込めて作り上げたTensorFlow Liteの爆速モデルが大量に眠っているようです。

 最速モデルがどれか全く分からなかったので、PINTOさんに聞いたら爆速で教えてくださいました。

 最高です!

最速モデルをテスト

 Raspberry PiにUSBカメラを接続して、以下実行するだけです。

$ cd PINTO_model_zoo/06_mobilenetv2-ssdlite/02_voc
$ python3 mobilenetv2ssdlite_usbcam_sync.py

 2021/10/03追記、最新のPINTO_model_zooだとディレクトリ構成が代わり、モデルをダウンロードする必要があるため、以下コマンドを実行する必要があります。

$ cd PINTO_model_zoo/006_mobilenetv2-ssdlite/02_voc
$ 03_integer_quantization/download.sh 
$ python3 mobilenetv2ssdlite_usbcam_sync.py

 実行結果です。

 もはや動体視力超えているので私の目には差がわかりませんでしたが、数字上はそれほどは速くなっていない?

 ちなみに軽量化(量子化)したモデルは、モデルに合わせた推論プログラムが必要になることに注意して下さい(知らなかったです)。ラズパイカメラ対応したい人は、以下を参考に修正してみて下さい(今回はちょっと見送り)。

mobilenetv2ssd-sync-usbcam.py

まとめ

 最速モデルを求めて「PINTO_model_zoo」を探検してみました。思ったほど速くならなかったなーと思っていたら、PINTO神から新たな啓示が!

 最速への道は、まだ遠い…!

 オレはようやくのぼりはじめたばかりだからな このはてしなく遠い「PINTO_model_zoo」を!からあげ先生の次回作にご期待ください!(未完)

変更履歴

  • 2021/11/26 PINTO model zoo Tourへのリンクを追記