第二回目は、YoloをAndroidアプリで使うためにしなければいけないファイルの変換を説明したいと思います。Yoloで作成、もしくはダウンロードした物体認識用のファイルからAndroidアプリで活用できるTensorflowLiteの形式である、tflite形式に変換する為の手順を記載したいと思います。OSはwindows11です。
Yoloの環境づくり
今回の記事では第2回目としてYoloからtfliteへの変換を解説しますが、過去の記事でYoloの環境セットアップや、追加学習など解説している記事がありますので、まずはこの手順に沿って、Yoloが動く環境の立ち上げと、必要に応じて仮想環境の作成をお願いします。この記事はそれができている前提で、次の手順からの説明となります。
このまま実行すれば出来る。YOLO v11を使った物体認識の方法教えます。
TensorflowLiteとは
TensorflowLiteとは、Googleが開発したオープンソースのディープラーニングライブラリ、Tensorflowの計量版です。
必要なライブラリのインストール
VisualStudioがインストールされていない方は、VisualStudio Build Toolをインストールする必要がありますので、下記からインストールします。
https://visualstudio.microsoft.com/visual-cpp-build-tools

ダウンロードして、.exeを実行

下記にチェックをいれ、インストール。

インストールが終わったら、再起動。

再起動したら、ご自身の環境へ下記をまとめてインストール。
下記をインストールするための仮想環境や、YOLO自体の環境のセットアップはこの記事参照。
このまま実行すれば出来る。YOLO v11を使った物体認識の方法教えます。
※環境の違いにより、下記インストールしてもエラーが発生する事があるかと思いますので、足りないライブラリは適宜インストールしてください。上に書いた環境セットアップからすべて本記事の通りに実施すれば、問題ないと思います。
pip install onnx==1.17.0
pip install nvidia-pyindex
pip install onnx-graphsurgeon U
pip install onnxruntime==1.18.1
pip install onnx-simplifier==0.4.33
pip install onnxsim==0.4.33
pip install simple_onnx_processing_tools
pip install onnxslim==0.1.31
pip install onnx2tf==1.26.3
pip install h5py==3.11.0
pip install psutil==5.9.5
pip install ml_dtypes==0.5.1
pip install tf_keras==2.19.0
pip install ml_dtypes==0.5.1
pip install flatbuffers==23.5.26
pip install tflite_support
pip install tensorflow_probability
pip install tensorflow==2.19.0
Yoloからtfliteへの変換
yoloからtfliteへの変換をします。
Yoloからtfliteへの変換は公式には次のページに書かれていますので活用します。
https://docs.ultralytics.com/ja/integrations/tflite/#usage
ここを参考にして、ソースを引用。
下記ソースコードの★1はご自身がお持ちのYoloのファイルへ必要に応じて変更してください。
ここではファイル名を「yolo-to-tflite.py」としました。
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt") #★1
# Export the model to TFLite format
model.export(format="tflite") # creates 'yolo11n_float32.tflite'
これを実行すると、こんな感じに終了し。tfliteファイルができ、保存先が書かれます。

そのディレクトリを除くと、こんな感じに「yolo11n_float16.tflite」「yolo11n_float32.tflite」が出来れいる事がわかります。

tfliteファイルの動作確認
最後に、出来上がったtfliteファイルで物体認識を実行してみましょう。コードは下記をコピー。
from ultralytics import YOLO
# Load the exported TFLite model
tflite_model = YOLO("./yolo11n_saved_model/yolo11n_float32.tflite")#★先ほどのtfliteファイルのパス
# Run inference
results = tflite_model("bus.jpg", save=True)#★ご自身の認識に使うファイル
こんな感じに完了し、結果の保存されているパスが表示されます。

そのフォルダを見に行くと、結果がありました。この手順で、yoloの形式からtflite形式への変換は完了です。

ちなみに、下記は「yolo11n.pt」で認識させた結果ですので、tfliteファイルに変換しても、ほとんど同じ認識率で動いている事がわかると思います。

本記事は連絡作になっておりますので、必要に応じを参照お願いします。
そのままできる!Yoloを使った物体認識。Androidアプリで実行 その1:Android Studioインストール
そのままできる!Yoloを使った物体認識。Androidアプリで実行 その2:Yoloからtfliteへの変換
コメント