スポンサーリンク

Pythonでのtfliteの使い方。〜 TensorFlowLite形式のモデル読み込みから画像の識別まで 〜

Python
スポンサーリンク

今回の記事はTensorflowのエッジデバイス用のtflite形式の学習モデルをPythonで利用して、任意の画像を識別させる方法について記載いたします。

基本的にswiftやjava/kotlinなどのスマホ端末に組み込まれることになると思われますが、モデルの作成に関しては基本的にPythonでの作成になるのでPythonでその場で精度を確認できれば最も楽だと思われます。

では早速メインの記事に進んでいきます。

スポンサーリンク

Pythonでtfliteモデルを使う流れ

まずは識別のざっくりとした流れですが、全体的な流れはモデルの読み込み、画像のインプット、識別結果の出力といった流れです。

その際に使用するのがinterpreterというものです。

こちらがKerasのh5モデルやTensorflowのpbモデルにはない考え方なので初めはよくわかっておりませんでした。

使い方としてはインプットアウトプットの出力やインプット画像の配列情報を全てinterpreterに入れ、その後にメソッドのinvoke()というものを使って、識別させて出力結果を出しているという流れです。

では実際のコードを見つつ解説をこなっていきます。

Pythonでtfliteモデルを使うコード

import numpy as np
import tensorflow as tf
from PIL import Image
import numpy as np

# Load the TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="[モデルパス].tflite")
interpreter.allocate_tensors()


# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# Test the model on random input data.
input_shape = input_details[0]['shape']

image_size = 50
file = "[識別画像パス].JPG"
image = Image.open(file)
image = image.convert("RGB")
image = image.resize((image_size, image_size))
data = np.asarray(image)
data = data[ np.newaxis,:, :, :]

input_data = np.array(data, dtype=np.float32)

interpreter.set_tensor(input_details[0]['index'], input_data)

interpreter.invoke()

# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details[0]['index'])
print(output_data)

まず初めに、interpreterに入力出力を指定しています。
その後にモデル読み込みを行います。

そしてdumpy、Imageを用いて画像をnumpyの配列として読み込みます。

その際に次元がtfliteの形式と違うので揃える必要があります。
そのために「newaxis」で次元の拡張を行っております。

それらの準備が終わればinvokeで識別させて、出力をoutput_tensorで取得しております。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Python
スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました