LoginSignup
1
2

TensorflowモデルをTensorflowLiteモデルに変換する方法

Last updated at Posted at 2023-05-17

結論

Tensorflow Lite Converter を使用する。
Tensorflow Lite Converterとは、訓練済みのモデルをTensorflow Lite モデルに変換するツールのこと。

変換の流れをざっくり説明

モデルを変換する手順を以下の図に示す。
TensorFlow Lite 形式に変換するときは、ML モデル(変換前のモデル)の内容に応じて大きく3つのフローに分かれることを抑えておくと良い。

1直接変換
2モデルをリファクタリングしてから変換
3高度な変換手法を使用して変換
Pasted image 20230517170038.png
図 1. TensorFlow Lite 変換ワークフロー。
引用:Tensorflow公式: モデル変換の概要
基本的には1直接変換できるのだが、稀に2,3のように追加の手順が必要なことがある。変換したいモデルに追加手順が必要かどうかは、オペレーター互換性 をみるとわかる。

変換可能なモデルの形式

  • SavedModel (推奨): ディスク上にファイルのセットとして保存された TensorFlow モデル。
    特記:SavedModel は TensorFlow のトレーニング済みモデルまたはモデルピース用の標準的なシリアル化形式のこと。学習済みの重みや計算を実行するためのTensorFlow 演算が含んでいる。言語に依存することなく推論を行うことが可能。

  • Keras モデル: 高レベルの Keras API を使用して作成されたモデル。

  • Keras H5 形式: Keras API でサポートされる SavedModel 形式の軽量代替形式。

  • 具体的な関数から構築されたモデル: 低レベルの TensorFlow API を使用して作成されたモデル。

モデルを変換してみる !

Tensorflow Lite Converterは、TensorFlow モデルを受け取り、TensorFlow Lite モデルを生成できる。SavedModel をロードすることも、コードで作成したモデルを直接変換することもできる。

1. やり方を確認

→推奨されている SavedModel の変換を行う

import tensorflow as tf

# モデルをコンバートする
# saved_model_dirは変換したいモデルのディレクトリ
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir) 
tflite_model = converter.convert()

# 変換したモデルを保存する
with open('model.tflite', 'wb') as f:  f.write(tflite_model)

Tensorflow公式: TensorFlowモデルを変換する

2. 実際にやってみる

今回は、色々な学習済みモデルがダウンロードできるTensorFlow Hubから
物体・骨格検知モデルのCenterNetをダウンロードして、そちらをTensorflow lite モデルに変換する。

(1)TensorFlow Hub からローカルにダウンロードする。
Pasted image 20230518001440.png

ローカルにダウンロードして解凍すると、以下のような構成になっている。
.pd ファイルがモデルファイル。
Pasted image 20230518002025.png

(2)変換する

  • 実装
convert.py
import tensorflow as tf

input_dir = ".\\centernet"

converter = tf.lite.TFLiteConverter.from_saved_model(input_dir)
tflite_model = converter.convert()

open(".\\output_dir\\converted_model.tflite", "wb").write(tflite_model)
  • 実行結果
    Pasted image 20230518002453.png
    output_dirに Tensorflow lite モデルに変換されたモデルファイル(.tfliteファイル)が出力されているのがわかる。無事に変換できた。
1
2
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
1
2