NonOS / RTOS など組み込み機器向けの AI 推論エンジン。TFLite 互換の推論 API を提供します。
プラットフォームを選び、最初の TFLite 推論を動かしてみましょう。
ailia TFLite の Python パッケージを PyPI からインストールします。
pip3 install ailia_tflite
Python や git をまだインストールしていない方は、Python 環境のセットアップ(Windows / Mac / Linux) を先にご覧ください。
PyPI で見るailia-models-tflite にはモデルごとの推論スクリプトが同梱されています。一度クローンして共通の依存をインストールしたあと、各モデルのフォルダへ cd して実行するだけです。-v 0 で Web カメラ入力、-i image.png で静止画を扱えます。リポジトリ直下の python3 launcher.py を起動すると、量子化 TFLite モデルを GUI で参照できます。
git clone https://github.com/ailia-ai/ailia-models-tflite.git
cd ailia-models-tflite
pip3 install -r requirements.txt
cd object_detection/yolox
python3 yolox.py -v 0
Windows の場合は python3 の代わりに python を使用してください。
ailia TFLite Runtime はデスクトップ / モバイル / 組み込み向けの C99 製 TensorFlow Lite 互換推論エンジンです。
.tflite)TFLite モデルを読み込み推論を実行する最小サンプル。Python API は tflite_runtime.interpreter と同じ形なので、import を差し替えるだけで既存コードがそのまま動きます。
import ailia_tflite
import numpy as np
interpreter = ailia_tflite.Interpreter(model_path="model.tflite")
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
input_data = np.zeros(input_details[0]["shape"], dtype=np.float32)
interpreter.set_tensor(input_details[0]["index"], input_data)
interpreter.invoke()
output = interpreter.get_tensor(output_details[0]["index"])
print(output.shape)
ailia TFLite Runtime についてのよくある質問。
はい。Python の ailia_tflite.Interpreter クラスは tflite_runtime.interpreter.Interpreter と同じインターフェース (コンストラクタも、allocate_tensors() / set_tensor() / invoke() / get_tensor() も同じ) を提供します。既存の TFLite Python スクリプトは通常 import を差し替えるだけで動作します。
主に 2 点です。Intel MKL による PC 上の高速推論、そして軽量な C99 実装による NonOS / RTOS 組み込み配備。Android では NNAPI 経由でオンデバイス NPU も駆動できます。
ailia-models-tflite のサンプルに --tflite を渡すと、本家挙動と比較できます。
はい。INT8 量子化 TFLite モデルが標準でサポートされています。組み込みや NPU 向けには量子化が推奨です。ailia-models-tflite のモデル群も量子化版を中心に構成されています。
各テンソルの量子化係数は ailiaTFLiteGetTensorQuantizationScale と ailiaTFLiteGetTensorQuantizationZeroPoint で取得できます。
Float → Int8: q = round(f / scale) + zero_point
Int8 → Float: f = (q − zero_point) × scale
TFLite はテンソル単位で 1 つの scale と 1 つの zero_point を持ちます。重み (Conv の weight など) はチャンネル単位で scale を持ち (per-axis quantization)、その zero_point は 0 に固定されています。チャンネル数や量子化軸は ailiaTFLiteGetTensorQuantizationCount と ailiaTFLiteGetTensorQuantizationQuantizedDimension で確認できます。
仕様の詳細は TensorFlow Lite 8 ビット量子化仕様 を参照してください。
C99 コアは NonOS / RTOS や小フットプリント配備向けに設計されています。具体的な MCU 対応は利用可能メモリやツールチェーンに依存します。組み込み移植の詳細は ailia までお問い合わせください。
ailia_tflite.Interpreter 構築時に env_id (および任意で flags / num_threads) を指定します。デフォルトは CPU で MKL が使用されます。Android で NPU を使用するには AILIA_TFLITE_ENV_NNAPI (=1) を指定する必要があります。
評価ライセンスは実行時に自動でダウンロードされ、開発・評価用途に利用できます。組み込みでの再配布を含む商用配布には製品ライセンスを申請してください。詳細は ailia ライセンス規約 を参照してください。
ailia Tech Blog のモデル解説・リリースノート・チュートリアルです。