Help us understand the problem. What is going on with this article?

Raspberry Pi4とCoral USB Acceleratorで行う機械学習

はじめに

本記事はエッジデバイスで機械学習を行う方法として、Raspberry Pi4とCoral USB Acceleratorの導入手順についてまとめています。

Raspberry Pi4は現行機種の最新世代になります。CPUやメモリ性能が大幅に向上し、USB3.0にも対応しています。

写真 2020-02-17 0 31 29.jpg

Coral USB AcceleratorはGoogleがエッジデバイスで機械学習を行うために開発したGoogleの専用ASICです。

写真 2019-12-30 0 02 35.jpg

この専用ASICはEdge TPUと言われ、エッジで推論を行うことに特化したTensorFlow Liteのフレークワークが利用できます。なお、TensorFlow Liteのフレークワーク以外はサポートしていません。また、Coral USB Acceleratorの性能を最大限に発揮するためには、USB3.0の接続が必要です。要約するとCoral USB Acceleratorの性能を引き出すのにRaspberry Pi4は最適です。

Raspberry Pi4

公式サポートではないですがGoogleからEdge TPUを使用するために、EdgeTPU Platformsというコンパイル済みのRaspbery Piのイメージが用意されています。

学習済みの画像分類モデルなどが組み込まれているため、Raspberry Piで機械学習を行うのに役にたつでしょう。

EdgeTPU Platformsから、Raspberry Pi 4のイメージを利用する手順について解説します。

なお、Raspberry Pi 4の留意事項として、電源がUSB Type-C、HDMIはMicro HDMIとインターフェースが変更されているのでご注意ください。

EdgeTPU Platforms

  1. google-coral/edgetpu-platformsから、Raspberry Pi 4, Buster, Edgetpu 2.11.1のイメージをダウンロードします。
  2. ダウンロードしたイメージをSDカードに書き込みます。SDカードへの書き込み方法については以前書いたRaspberry Pi の基本を参照。
  3. SDカードへの書き込み終了後、Raspberry Piを起動し、初期セットアップを行います。

ダウンロードしたイメージで起動した場合は、ファイルシステムをSDカードのサイズに合わせて拡張を行う必要があります。

ファイルシステム拡張

ファイルシステム拡張前のシステム領域(/)は以下の状態となっています。

pi@raspberrypi:~ $ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root        3.3G  3.0G  100M   97% /
devtmpfs         1.8G     0  1.8G    0% /dev
tmpfs            1.9G     0  1.9G    0% /dev/shm
tmpfs            1.9G  8.6M  1.9G    1% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mmcblk0p1   253M   41M  213M   16% /boot
tmpfs            386M     0  386M    0% /run/user/1000

以下のコマンドを実行し、raspi-configを起動し対話的に操作を行います。

$ sudo raspi-config

スクリーンショット 2019-12-30 17.38.27.png

はじめに「7 Advanced Options」を選択します。

スクリーンショット 2019-12-30 17.38.38.png

つぎに「A1 Expand Filesystem」を選択します。

スクリーンショット 2019-12-30 17.38.54.png

了解を押下します。

スクリーンショット 2019-12-30 17.39.42.png

以下のコマンドを実行し、再起動を行います。

$ sudo systemctl reboot

再起動後、システム領域(/)が拡張されていることが確認できます。

pi@raspberrypi:~ $ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         29G  3.1G   24G   12% /
devtmpfs         1.8G     0  1.8G    0% /dev
tmpfs            1.9G     0  1.9G    0% /dev/shm
tmpfs            1.9G  8.6M  1.9G    1% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mmcblk0p1   253M   41M  213M   16% /boot
tmpfs            386M     0  386M    0% /run/user/1000

Coral USB Accelerator

Coral USB Acceleratorを使うためには、以下の作業が必要になります。

  • Edge TPUランタイムのインストール
  • TensorFlow Liteライブラリのインストール

Edge TPUと通信するには、Edge TPUランタイムをインストールします。
また、TensorFlow LiteをPythonで使用するためにライブラリ等が必要になります。本記事では、PythonでTensorFlow Liteモデルを使用するのに簡単なtflite_runtimeライブラリをインストールします。

準備作業

Coral USB Acceleratorの入っている箱を開封します。

写真 2019-12-30 17 08 16.jpg

Raspberry Pi4にCoral USB Acceleratorを接続します。
USB3.0は青色のインターフェースになります。

写真 2020-02-16 23 52 49.jpg

Edge TPU runtimeのインストール

  • リポジトリの追加
    $ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
    $ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    $ sudo apt-get update

  • インストール
    $ sudo apt-get install libedgetpu1-std

TensorFlow Liteライブラリのインストール

  • ライブラリのダウンロード
    $ wget https://dl.google.com/coral/python/tflite_runtime-1.14.0-cp37-cp37m-linux_armv7l.whl

  • ライブラリのインストール
    $ pip3 install tflite_runtime-1.14.0-cp37-cp37m-linux_armv7l.whl

TensorFlow Lite APIの実行

Get started with the USB Acceleratorを参考に、画像分類機を実行してみましょう。

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/parrot.jpg

INFO: Initialized TensorFlow Lite runtime.
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
18.6ms
4.6ms
4.6ms
4.6ms
4.6ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.76562

TensorFlow Liteを使用して、Edge TPUで推論を実行しました。
ちなみにUSB2.0で実行した場合の出力結果は以下になります。USB3.0に比べて遅いのが分かります。

INFO: Initialized TensorFlow Lite runtime.
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
120.5ms
11.5ms
11.5ms
11.7ms
11.6ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.76562

おわりに

これでエッジデバイスで機械学習ができます。

次はTensorFlowでモデルを作成し、モデルをTensorFlow Liteに変換します。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした