Google Coral Edge TPU Hardware & AIY Kits

store: https://store.gravitylink.com/global

Coral Edge TPUデモへのRaspberry Piサプリメント

最近、Coral USB Acceleratorを試しました。 ソフトウェアとドキュメントは一般的に優れています。 Pythonライブラリには、Piカメラを使用して連続的にキャプチャし、リアルタイムの分類のためにデータをEdge TPUに渡す方法を示すデモも含まれています。

ただし、Raspberry Piとの統合という点では、まだ埋めるべきギャップがあります。 まず、オブジェクトの位置を示すためにプレビューに長方形が描かれるオブジェクト検出の例を示します。 第二に、Pi Cameraのフレーム幅は32の倍数に制限され、高さは16の倍数に制限されているため、一部のモデルの必要な入力サイズと一致しません。 たとえば、Inception V3で必要な299x299にキャプチャのサイズを変更するようにPi Cameraに指示すると、実際には320x304に切り上げられます。 キャプチャした画像は、Edge TPUに渡す前にトリミングする必要があります。

ここでは、いくつかの追加デモを提供することにより、これらのギャップを埋めました:

1.classify_capture.py:これは元の公式デモであり、参照用に保持されています。 モデル入力サイズをPi Cameraの対応フレームサイズと比較しません。 入力224x224のモデルは正常に機能します(224は32と16の倍数であるため)が、他の入力サイズでは機能しない場合があります。

2.classify_capture_crop.py:これは、Pi Cameraの対応フレームサイズに対してモデル入力サイズを先制的にチェックします。 一致しない場合、フレームサイズは拡大されます。 キャプチャされた画像は、必要に応じてトリミングされてから、Edge TPUに渡されます。 すべてのモデル入力サイズで機能するはずです。

3.detect_capture_crop.py:これはオブジェクト検出を行います。 オーバーレイを使用して、プレビューに長方形を配置します。 また、フレームサイズを拡大し、必要に応じてキャプチャをトリミングします。 しつこいことが1つあります。オーバーレイが更新されるたびに、Pi Cameraはこのエラーを吐き出します:

picamera.exc.PiCameraMMALError: no buffers available: Resource temporarily unavailable; try again later

解決策が見つかりませんでした...

... AIY Vision Kitのソースコードに出会うまで、その一部を以下に組み込みました。

4.detect_capture_crop_with_annotator.py:上記のようにオブジェクト検出を行いますが、オーバーレイロジックはAnnotatorクラスに分離されているため、コードが少し簡潔になります。 Annotatorクラスは、AIY Vision Kitプロジェクトから取得されます。 picameraパッケージにパッチを適用して、上記のエラーがこぼれないようにします。 Annotatorクラスを使用するようにPYTHONPATHを設定することを忘れないでください。

(github作者:@nickoala (https://github.com/nickoala/edgetpu-on-pi))


微信图片_20190718135810.jpg

Coral の開発ボードは、Edge TPU を搭載したリムーバブル System-On-Module(SOM)を含むシングルボード Linux コンピュータです。そのため、アプリケーションのプロトタイピングを行ってから、独自の端末に SOM を含めて生産用にスケールアップすることができます。

Coral USB アクセラレータは、Edge TPU を対応する Linux コンピュータに接続する USB アクセサリです。Raspberry Pi Zero にちょうど合うように設計されています。

こういった新しいアプリケーションは、すべて高パフォーマンス推論を利用します。これを実現できる唯一の方法が Edge TPU によるハードウェア アクセラレーションです。しかし、実際どのくらい速くなるのでしょうか。

いくつかのバージョンの MobileNet を使った内部ベンチマークによると、Edge TPU による推論は、CPU による推論よりも 70 倍から 100 倍高速です。MobileNet は、エッジ デバイスでイメージ分類を行う際によく使われる堅実なモデル アーキテクチャです。

顔検出用の MobileNet では、最大で毎秒 70 フレームから 100 フレームで推論を行えます。食べものの検知では、毎秒 200 フレームを実現できました。これなら、動画のリアルタイム推論にも十分対応できます。複数のモデルを同時に実行しても問題ありません。

微信图片_20190724172906.jpg