2018年夏、Googleは機械学習用の2つのEdge TPUデバイスを発表しました。 これらは現在コーラルブランドで入手可能です。 2週間前、私はCoral USB Acceleratorを購入しました。 それは既存のシステムに機械学習推論をもたらすポータブルUSBアクセサリーです、そしてそれはラズベリーパイと他のLinuxシステムと互換性があります。
購入です:https://store.gravitylink.com
Raspberry Pi 3でEdge-TPUのパフォーマンスをテストしたいと思いました。RaspberryPiのDocker上ですべてのアプリケーションを実行しているので、Coral USBアクセラレータを使い始めるために必要なすべてのものを含むDockerイメージを作成しました。 。 さらに、PIカメラを使用して画像をWebサーバーにストリーミングする例を追加しました。分類の結果はカメラ画像の上に印刷されています。また、Jupyterも例として使用しています。
これが、このチュートリアルで達成しようとしていることです。
ラズベリーパイにDockerをインストールする
lemariva / raspbian-edgetpu Docker
イメージをデプロイするsshとを使ってDockerコンテナに接続します。
Jupyterを使用するか、Webサーバー機能を使用して画像分類器を起動します。
CoralとTensorFlow Liteを始めよう
Rasbperry PiにRaspbianをインストールした後。 次に、カメラをCSIインターフェース(人生の画像を分析する場合)に接続し、アクセラレータUSB Egde-TPUをUSBポートに接続してRaspberry Piの電源を入れます。 次に、raspiconfigを使用してカメラのインターフェースを有効にし、ラズベリーを再起動します。 それが終わったら、Dockerエンジンをインストールする必要があります。 私はチュートリアルを書きました:#チュートリアル:Docker on Embedded Systems(Raspberry PiとBeagleboard)
はあなたを助けることができます。 Dockerエンジンをインストールしたら、Portainerコンテナをデプロイすることをお勧めします。 これはそのチュートリアルでも説明されています。
それで、あなたがPortainerを使うならば:
- 1.Portainer.io Docker管理ユーザーインターフェイスを開きます。 (通常は
http:// <<ip-address-rpi>>:9000
) - 2.コンテナ>コンテナの追加で以下のパラメータを入力します。
名前:rasbian-google
(またはあなたが望むものなら何でも)
イメージ:lemariva / raspbian-edgetpu
ポートマッピング
ホスト25(未使用のもの) - >コンテナ22
ホスト8000(未使用のもの) - >コンテナ8000
ホスト8888(未使用のもの) - >コンテナ8888
ポリシーを再起動します。
ランタイム>特権モード:オン
ボリュームバインド>/ dev / bus / usb:/ dev / bus / usb
- 3.「アクション」>「コンテナーの開始/デプロイ」ボタンを押します。
Portainer.ioを使用したくない場合は、次の行を使用してlemariva / raspbian-edgetpu
コンテナを実行します:
docker run -d --privileged -p 25:22 -p 8000:8000 -p 8888:8888 --restart unless-stopped -v /dev/bus/usb:/dev/bus/usb lemariva/raspbian-edgetpu
数分待ってから、すべて問題なければ、コンテナーは稼働しているはずです。 あなたは私の場合のようにsshを使ってそれに接続することができます(ポート25はマップされました):
ssh root@<<ipaddress>> -p 25
デフォルトのパスワードはrootです。 sshを使用して実行中のコンテナにログインしたら、PIカメラを使用して画像分類器を起動できます:
python3 /notebooks/web_streaming_classify.py --model /notebooks/test_data/mobilenet_v2_1.0_224_quant_edgetpu.tflite --label /notebooks/test_data/imagenet_labels.txt
その後、あなたは上のウェブサイトにアクセスすることができます。 http:// <ip address address>:8000
。 このWebサイトへの並列アクセスは機能していません、そしてあなたがWebサイトを更新したい場合は、それを2回実行してください。
Jupyterも利用可能です、あなたはノートブックにアクセスすることができます。 http:// <>:8888 sshセッションを使用して次のように入力して取得できるトークンが必要です。
jupyter notebook list
[I 11:59:16.597 NotebookApp] The Jupyter Notebook is running at:
http://0.0.0.0:8888/?token=c8de56fa4deed24899803e93c227592aef6538f93025fe01
画像分類子の例と、それをテストするための動物画像も含めました。 必要に応じて、コンテナを反復モードでも実行できます。
TensorFlow Lite
事前に訓練されたモデルを使用することも、モデルをウェットトレーニングすることも、最初からモデルを構築することもできます。ここでは、情報を入手します。
トレーニング済みモデル
CoralのWebサイトには、Coralハードウェアでの使用に最適化された、事前にトレーニングされたTensorFlow Liteモデルがあります。 Dockerイメージの中に "MobileNet V2"モデルを含めました。 これは1000種類のオブジェクトを認識します。 始めたばかりの場合は、他のモデルをダウンロードしてデバイスに展開するだけです。
モデルを退避させる
トランスファーラーニングと呼ばれるプロセスを使用して、既存のモデルを再トレーニングしたり、事前にトレーニングされたコーラルの機械学習モデルをカスタマイズして自分のイメージやオブジェクトを認識させることができます。 これを行うには、既存のモデルの再保存の手順に従ってください。
あなた自身のTensorFlowモデルを構築してください
モデルを最初からトレーニングする必要がある場合は、Edge TPU用の新しいモデルの作成の手順に従うことができます。 モデルはモデル要件を満たす必要があります。
TensorFlow、他のフレームワーク(例:PyTorch)、そしてコーラルプロジェクト
現在、Edge-TPUはTensorFlow Liteモデルのみをサポートしています。 つまり、tfliteモデル
をtflite-tpuに変換する必要があります。 あなたがPyTorchユーザであるか、他のフレームワークを好むならば、あなたはONNXを使ってあなたのモデルをTensorFlowに変換しようとすることができます。
結論
この記事では、Docker、Jupyter、Raspberry Pi、Pi Camera、およびCoral USB Acceleratorの5つのことをまとめています。 ポータブルEdge-TPUアクセサリをテストしたい場合は、これが簡単な方法です。 Edge-TPUのパフォーマンスは本当に良いです。 オフラインカメラ画像とPiカメラのライブ画像を分類する時間が大幅に短縮されます。 次の記事では、結果をいくつか掲載します。