ailia TFLite Runtime

NonOS / RTOS など組み込み機器向けの AI 推論エンジン。TFLite 互換の推論 API を提供します。

はじめに

プラットフォームを選び、最初の TFLite 推論を動かしてみましょう。

1

インストール

ailia TFLite の Python パッケージを PyPI からインストールします。

pip3 install ailia_tflite
PyPI で見る
2

サンプルを実行

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
サンプルリポジトリ

動作環境

ailia TFLite Runtime はデスクトップ / モバイル / 組み込み向けの C99 製 TensorFlow Lite 互換推論エンジンです。

対応 OS

  • Windows 10 / 11
  • macOS 11 以降
  • Linux (Ubuntu 20.04 以降)
  • Android 7+ (NNAPI 経由で NPU)
  • NonOS / RTOS (組み込み)

言語

  • Python 3.6 以降
  • C99 (組み込み向け)
  • C# / Unity 2021.3.10f1 以降
  • Kotlin / Java (JNI)

アクセラレーション

  • Intel MKL (PC)
  • Android NNAPI / NPU
  • 最適化された C99 フォールバック

モデル形式

  • TFLite (.tflite)
  • INT8 量子化モデル
  • tflite_runtime のドロップイン置き換え

プロジェクトで API を使う

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)

プラットフォーム別 API リファレンス

C99

よくある質問

ailia TFLite Runtime についてのよくある質問。

本当に TensorFlow Lite のドロップイン置き換えになりますか?

はい。Python の ailia_tflite.Interpreter クラスは tflite_runtime.interpreter.Interpreter と同じインターフェース (コンストラクタも、allocate_tensors() / set_tensor() / invoke() / get_tensor() も同じ) を提供します。既存の TFLite Python スクリプトは通常 import を差し替えるだけで動作します。

本家 TFLite と比べてどこが優れていますか?

主に 2 点です。Intel MKL による PC 上の高速推論、そして軽量な C99 実装による NonOS / RTOS 組み込み配備。Android では NNAPI 経由でオンデバイス NPU も駆動できます。

ailia-models-tflite のサンプルに --tflite を渡すと、本家挙動と比較できます。

量子化モデルに対応していますか?

はい。INT8 量子化 TFLite モデルが標準でサポートされています。組み込みや NPU 向けには量子化が推奨です。ailia-models-tflite のモデル群も量子化版を中心に構成されています。

マイコン上でも使えますか?

C99 コアは NonOS / RTOS や小フットプリント配備向けに設計されています。具体的な MCU 対応は利用可能メモリやツールチェーンに依存します。組み込み移植の詳細は ailia までお問い合わせください。

バックエンド (CPU / NPU / MKL) を切り替えるには?

ailia_tflite.Interpreter 構築時に env_id (および任意で flags / num_threads) を指定します。デフォルトはプラットフォーム上で最速のバックエンドを自動選択します。

ライセンスはどう扱われますか?

評価ライセンスは実行時に自動でダウンロードされ、開発・評価用途に利用できます。組み込みでの再配布を含む商用配布には製品ライセンスを申請してください。詳細は ailia ライセンス規約 を参照してください。

資料