デフォルトでは、TensorFlowはコンパイルされたモデルでカスタムオペレーターを実行する方法を知らないため、TensorFlow Lite APIを使用すると、Edge TPU用にコンパイルされたモデルは失敗します。 動作させるには、推論を実行するコードにいくつかの変更を加える必要があります。 このページでは、Pythonを使用してそれを行う方法を示します。
C ++を使用する場合は、代わりに「C ++でTensorFlow Liteで推論を実行する」をお読みください。
注:このページは、TensorFlow Lite APIの使用経験がある開発者を対象としています。 TensorFlowの経験がなく、使用する準備ができていない場合は、代わりにEdge TPU Python APIを使用できます。これにより、画像分類およびオブジェクト検出モデルで推論を実行するために必要なコードが簡素化されます。
Python TensorFlow Lite APIを使用してEdge TPUでモデルを実行するために、TensorFlow Liteデリゲートを実装しました。 デリゲートは、モデルグラフの特定の操作を処理するTensorFlow Liteメカニズムです。 この場合、デリゲートはEdge TPUカスタムオペレーターを処理します。
Edge TPUデリゲートを使用するには、次の手順を実行します。
- 最新のEdge TPUランタイムに更新します。
USBアクセラレータまたはM.2 / PCIeアクセラレータを使用している場合、次のようにEdge TPUランタイムを更新します:
sudo apt-get update
wget https://dl.google.com/coral/edgetpu_api/edgetpu_api_latest.tar.gz -O edgetpu_api.tar.gz --trust-server-names
tar xzf edgetpu_api.tar.gz
sudo edgetpu_api/install.sh
Dev BoardまたはSystem-on-Module(Mendelを使用)を使用している場合は、次のように更新します:
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
sudo apt-get update
sudo apt-get dist-upgrade
2.TensorFlow Lite APIの最新バージョンを使用していることを確認してください。
TensorFlow Lite Interpreter APIで推論を実行するPythonファイルを開きます(label_image.py
の例を参照)。
コードがtensorflowパッケージからInterpreterクラスをインポートする場合、TensorFlow nightly(1.15)または2.0-betaビルドを使用する必要があります(必要なデリゲートAPIはTensorFlow 1.14に含まれていません)。
ただし、代わりに tflite_runtime
パッケージを使用することをお勧めします。 これは、インタープリタークラスと必要なデリゲートAPIを含むはるかに小さなパッケージです。 tflite_runtimeパッケージをインストールするには、TensorFlow Lite Python
クイックスタートに従ってください。
3.Interpreter
を構築するときに、Edge TPUのデリゲートをロードします。
たとえば、TensorFlow Liteコードには次のような行が必要です:
interpreter = Interpreter(model_path)
これを次のように変更します:
interpreter = Interpreter(model_path,
experimental_delegates=[load_delegate('libedgetpu.so.1.0')])
上部に1つの追加インポートが必要です:
# If you're using the tflite_runtime package:
from tflite_runtime.interpreter import load_delegate
# Or if you're using the full TensorFlow package:
from tensorflow.lite.python.interpreter import load_delegate
注:
libedgetpu.so.1.0
ファイルは、ステップ1でインストールされたEdge TPUランタイムに含まれています。
それでおしまい。 コードをすべて設定し、Edge TPU用にコンパイルされたモデルを使用して推論を実行すると、TensorFlow Liteはグラフのコンパイルされた部分をEdge TPUに委任します。