最近、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))
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 フレームを実現できました。これなら、動画のリアルタイム推論にも十分対応できます。複数のモデルを同時に実行しても問題ありません。
- Google Coral Edge TPU 官方海外代理店: https://store.gravitylink.com/global