4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NCCAdvent Calendar 2019

Day 9

Colab上でTensorFlow Object Detection APIを用いて作成したモデルをtfliteに変換する

Last updated at Posted at 2019-12-08

はじめに

この記事は NCC Advent Calendar 2019の9日目の記事です

Google Colaboratory上でTensorFlow Object Detection APIを用いて学習したモデルをtfliteに変換するまでの手順を見つけ出せたので共有します。
###前提条件
アノテーションや学習をすでに済ませており、手元に.pdファイルがあることを前提としています。モデルを作成するまでの手順は下記の記事を参考にしてください。

Tensorflow Object Detection API : Google Colaboratory環境で学習を実行する(環境構築)
TensorFlowの「Object Detection API」で物体検出の自前データを学習する方法

###実行環境
学習まではColabで行っています
以下、ローカルPCでの実行環境です
OS: macOS Catalina 10.15.1
CPU: Intel Core i5 2.3GHz
GPU: Intel Iris Plus Graphics 655 1536 MB
メモリ: 16 GB 2133 MHz LPDDR3
Bazel: v0.29.1

#学習の際に用いたConfigファイルを確認する
TensorFlow Liteのモデルは、量子化されている必要があります。デフォルトではその設定がされていないはずので、まず最初に自分が学習の際に用いたConfigファイルに以下のような内容が含まれているかどうか確認してください。含まれていない場合、変換できても意味不明な認識結果になるだけなので含めてから学習をやり直してください。頑張ってね。

xxx.config
graph_rewriter {
  quantization {
    delay: 1800
    activation_bits: 8
    weight_bits: 8
  }
}

#tfliteに変換
ここからはColab上ではなくPC上で作業を行います。ColabでGoogleドライブをマウントさせる際のディレクトリ名 /content/drive/My Drive/にスペースが含まれており、その下で変換の際に用いるBazelというビルドツールを実行することができない問題があるためPC上での作業が必要となります。.pdファイルをドライブからPC上の任意のディレクトリに置いておいてください。 
###TensorFlowをインストール
下記二つのコマンドを実行
pip install tensorflow
git clone https://github.com/tensorflow/tensorflow.git

###Bazelをインストール
以下のページを参考にしてBazelをインストールしてください。
https://docs.bazel.build/versions/master/install-os-x.html#install-with-installer-mac-os-x
###ついに変換!
tensorflowディレクトリに移動し、下記のコマンドで必要な箇所を変更して実行してください。

bazel run -c opt tensorflow/lite/toco:toco -- --input_file=[入力ディレクトリ]/graph.pb --output_file=[出力ディレクトリ]/detect.tflite --input_shapes=1,300,300,3 --input_arrays=normalized_input_image_tensor --output_arrays='TFLite_Detection_PostProcess','TFLite_Detection_PostProcess:1','TFLite_Detection_PostProcess:2','TFLite_Detection_PostProcess:3'  --inference_type=QUANTIZED_UINT8 --mean_values=128 --std_values=128 --change_concat_input_ranges=false --default_ranges_min=0 --default_ranges_max=6 --allow_custom_ops

detect.tfliteというファイルが出てきたら大成功です!

#終わりに
かなりかっ飛ばした感ありますけどできました?書いてみると意外とあっさりとできる感じがしますが、この方法探し当てるまでに二ヶ月かかってるんですよねー... まあそんなもんですよね (^^)b

#参考ページ
Tensorflow Object Detection API : Google Colaboratory環境で学習を実行する(環境構築)
TensorFlowの「Object Detection API」で物体検出の自前データを学習する方法
Training and serving a realtime mobile object detector in 30 minutes with Cloud TPUs

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?