TensorflowのObject Detection APIを用いた物体検出
Raspberry Pi + Google Coral USB Acceleratorでの使用を目的とした軽量な物体検出モデルを作成します.
以下の環境で動作を確認しています.
- OS: Ubuntu 18.04.5 LTS x86_64
- CUDA: 11.0
- cudnn: 8.0.5
- Docker: 20.10.6
以下の方法で学習を開始できます.
- アノテーション
画像に対してアノテーションを行います.
このリポジトリを用いて学習を行う際にはtfrecord形式のファイルが必要になります.
microsoft/VoTTを使うと比較的かんたんにアノテーションを行いtfrecord形式のファイルを生成できます.
- 教師データのダウンロード元の変更
先で作成したtfrecordファイルをまとめてGoogle Drive等にアップロードし、共有リンクを取得してください.(リンクを知っている全員が見れる設定で)
以下のID部分(1k6Nc2xiwB9d2ZRD4LLCS8ndCmPHWqBko
)を共有リンク内のファイルIDに変更してください.TFLite_ObjectDetector/Dockerfile
Line 39 in 3d4e18a
- dokcer image の作成
以下のコマンドでdocker image を作成してください.
$ docker build -t tf_detection:trainer .
$ docker build -t tf_detection:converter -f Dockerfile.convert .
- 学習モデルの作成
以下のコマンドでモデルの学習からCoral Edge TPUで使うことのできるモデルへの変換までを行います.
$ ./launch_train.sh
- 作成したモデルをEdge TPU Compilerによって変換することでRaspberry Pi4 model B + Google Coral USB Acceleratorによって25fps程度で検出できることを確認しています.
- このディレクトリ内にできるtrain_logs内に訓練でできたモデル等が保存されています.
学習を再度行う際にはtrain_logsを削除(あるいは中身だけ削除)してください.