Edge TPU Compilerとランタイムの更新

Compiler はバージョン2.0にアップデートされ、トレーニング後の量子化を使用して構築されたモデルのサポートが追加されました。以前は、完全整数型量子化を使用していました。

次のようにして新しいEdge TPU Compilerを入手できます:

```
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

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 upgrade edgetpu
```
そして、更新されたコンパイラは、更新されたEdge TPUランタイムがあることを意味します。現在はバージョン12です。コンパイラのバージョンと一致するように常にランタイムバージョンを更新する必要があります。

開発ボードを使用している場合は、次のように他の`Mendel`システムソフトウェアと一緒にランタイムを更新できます:

```
sudo apt-get update

sudo apt-get dist-upgrade
```
USB Acceleratorを使用している場合は、次のセクションを参照してランタイムを更新してください。

#### Edge TPU Pythonライブラリを更新しました

Edge TPU Pythonライブラリをバージョン2.11.1に更新しました。これには、次に説明する新しい更新されたAPIが含まれています。

Dev Boardを使用している場合は、上記のようにシステムソフトウェアをアップグレードすると新しいPythonライブラリを入手できます。

USBアクセラレータを使用している場合は、最初にライブラリをインストールしたのと同じ方法でライブラリ（およびEdge TPUランタイム）をアップグレードできます:

```
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

cd edgetpu_api

bash ./install.sh
```
ちなみに、あなたはこのコマンドであなたの現在のライブラリバージョンをチェックすることができます：

```
python3 -c "import edgetpu; print(edgetpu.__version__)"
```
#### 新しいオンデバイスバックプロパゲーションAPI

Pythonライブラリのバージョン2.11.1では、画像分類モデルの最後の層で転送学習を実行できるようにする`SoftmaxRegression API`を追加しました。 `SoftmaxRegression`のインスタンスは、モデルの最終的な分類を実行するsoftmaxアクティベーション関数を使用して、完全に接続されたレイヤとして機能します。 グラフのこの部分をデバイスのCPUに実装することで、確率勾配降下法（SGD）を使用して最終レイヤの重みをトレーニングし、Edge TPUでプロセスの大部分を高速化してデバイス上でのトレーニングを迅速化できます。

#### ウェイトインプリンティングAPIを更新

新しいバックプロパゲーションAPIの前に、`ImprintingEngine API`を使用したウェイトインプリンティングと呼ばれる別のバージョンのオンデバイス転送学習を提供しました。 バージョン2.11.1では、このAPIを完全に再構築して精度を高め、ユーザーが以前に学習したクラスを保持できるようにしました。 この更新には入力モデル用の新しいモデルアーキテクチャが必要です。したがって、以前のバージョンの`ImprintingEngine`を使用していた場合は、ベースモデルを更新してコードを少し変更する必要があります。 ほとんどのユーザーにとってこれは簡単なアップグレードであるはずです、そして私たちはその見返りはそれに見合う価値があると信じています。 新しい`ImprintingEngine`を使用すると、他のクラスをそのままにして既存のクラスをすばやく再トレーニングしたり、新しいクラスを追加したりできます。 これで、クラスを事前に訓練された基本モデルから守ることさえできます。

#### Edge TPU用の新しいTensorFlow Liteデリゲート

これまで、Edge TPUを使用してモデルを高速化するには、Edge TPU Python APIまたはC ++ APIを使用してコードを作成する必要がありました。ただし、TensorFlow LiteインタープリタAPIを使用すると、Edge TPUでモデルを高速化できます。これは、Edge TPU用のTensorFlow Liteデリゲートをリリースしたためです。

1.TensorFlow LiteデリゲートAPIはTensorFlow Liteの実験的な機能で、TensorFlow Liteインタプリタがグラフ実行の一部または全部を別のエグゼキュータに委任することを可能にします。この場合、他のエグゼキュータはEdge TPUです。

2.Edge TPUデリゲートを使用するには、次の手順に従います。

上記のように最新のEdge TPU Pythonライブラリに更新します。 （Edge TPUライブラリーは必要ありませんが、このパッケージは`libedgetpu.so`ファイル内にパッケージされているため、現在Edge TPUデリゲートをインストールする唯一の方法です。）
`label_image.py`などのTensorFlow Lite推論プログラムを開き、インタプリタを構築するときにデリゲートを指定する追加のパラメータを追加します。たとえば、現在この行は次のようになっています：

```
interpreter = Interpreter(model_path=args.model_file)
```
それでこれをこれに変えてください：

```
interpreter = Interpreter(model_path=args.model_file,
  experimental_delegates=[load_delegate('libedgetpu.so.1.0')])
```
一番上に追加のインポートが必要です:

```
from tensorflow.lite.python.interpreter import load_delegate
```
これはlibedgetpu.soファイルが既知のパスにあると想定しています。 そうでない場合は、スクリプトを実行すると、次のようなエラーが表示されます。

```
OSError: libedgetpu.so.1.0: cannot open shared object file: No such file or directory
```
修正するには、PATH変数に場所を追加するか、またはフルパスを使用して単に.soファイルを指定します。

3.今すぐスクリプトを実行します。 Edge TPU用にコンパイルされたモデルを実際に指定していることを確認してください。

#### 新しい画像分類モデル

最新のEdge TPUランタイムと同時に、Edge TPUおよびAutoMLチームによって設計された新しいモデルアーキテクチャが生まれました。 このモデルは、Edge TPUでの低遅延に最適化されたコンパクトなサイズでサーバーサイドモデルの精度を達成するための`EfficientNet`アーキテクチャに基づいています。

新しいモデルは`Efficientnet-EdgeTpu`で、モデルのグラフサイズに対応するS（小）、M（中）、L（大）の3つのサイズがあり、サポートされている入力サイズに対応します。 サイズが大きくなると、精度が上がりますが、待ち時間も短くなります。 そのため、小型モデルは最速ですが最も正確性は低くなります。

![unnamed-_2_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448511/eedb64c2-2f84-63e5-5780-b9fedf68b253.jpeg)

- Google Coral Edge TPU 全球代理店販売：https://store.gravitylink.com/global