Google Edge TPUができること・使い方を確認してみた

本サイトはアフィリエイト広告を利用しています。
機械学習

Google Edge TPUの初心者である筆者が「ラズベリーパイ(raspberry pi)」+「USB Accelerator」の組み合わせで「できること」・「使い方」を確認・実践してみました。

 

スポンサーリンク

Google Edge TPUは機械学習・ディープラーニングが得意

Google Edge TPUは機械学習・ディープラーニングの処理を効率化・高速化する目的で作られたICです。

 

機械学習の細かい定義・仕組みは既に多くの記事がありますので省略しますが、Google Edge TPUは「物を分類する」「値を予測する」といったことが得意となります。

 

今回はGoogle Edge TPUで実際に身近にある物を「検出(detection)」や「分類(classify)」をさせていきます。

 

Google Edge TPUとTensorFlow Lite

Google Edge TPUが対応しているフレームワークは「TensorFlow Lite」となります。

 

Google Edge TPUで実際に機械学習のモデルを構築したり、深層学習(ディープラーニング)の演算を行うには「TensorFlow Lite」というソフト(ライブラリ)を使う意味で大体合っているかと

 

本来は「TensorFlow Lite」にあった形でモデル等を用意する必要があるのですが、今回は特に難しく考える必要はありません。

 

既に公開されているGoogle(正式にはCoralというブランド)が公開しているデモ用のモデル・プログラムで使い方・できることを確認していきます。

 

Google Edge TPUの購入方法

Google Edge TPUの購入から簡単な画像認識(鳥の判別)までまとめた記事が下記となります。実際に初めてみたい方はこちらから参照ください

Google Edge TPUを購入してラズベリーパイと機械学習してみた
ついにGoogleからエッジ向けのプロセッサ「Google Edge TPU」が発売されました。今回はUSB Acceleratorとラズベリーパイを使って機械学習のデモを試してみます。 Google Edge TPUとは 2019年3月に...

 

今回は前回と同様にラズベリーパイ(raspberry pi)Coral USB Acceleratorを使っていきます。

ラズベリーパイ(raspberry pi)にカメラを付ける

今回はカメラを使ってデモプログラムを動かします。「写真を撮って物を検出する」「動画を撮ってリアルタイムで分類する」の2パターンを実行します。

 

ラズベリーパイのカメラを取り付けるのは簡単です。あと最近は1000円足らずで売られているので非常におすすめです。

 

実際に購入しますとカメラとケーブルが入っていますので接続するだけです。難しいことは必要ありません。

 

カメラ側にケーブルを挿してコネクタをはめて…

 

ラズベリーパイ側もケーブルを挿しこめば完成です

 

Google Edge TPUを使う前の準備

ラズベリーパイのカメラを使って写真・動画を撮り、その写真の物体検出・分類をしてみます。

今回説明する一連の流れはCoralの公式HPに記載されているものを応用したものです。(英語ですがリンク先はこちらです)

 

ラズパイのカメラが正常動作するか確認する

まずは先ほどラズベリーパイ(raspberry pi)に付けたカメラの動作確認も含めて写真を撮ってみます。

 

ラズベリーパイを起動してコンソール上で下記コマンドを実行します。

sudo raspistill -o test.jpg

 

無事写真が取れました。デフォルトで動かしたならば「pi」のフォルダ「test.jpg」の名前で保存されているはずです。筆者のはマウスを持った写真です

 

ラズパイにUSB Acceleratorを接続する

「ラズベリーパイ(raspberry pi)」+「USB Accelerator」を接続しておきます。

 

前回記事で対応しましたが、Edge TPUのライブラリのダウンロード・インストールをしていない場合は実行しときます。既に実施済の方は読み飛ばしてください

 

最新のEdgeTPUのインストール手順は変更されています

<<20191229追記>>

最新のEdgeTPUのインストール手順が変更されています。

下記記事で紹介するインストール手順は最新のラズパイ4(ラズパイ3B+にも)対応しています。

お手数ですがインストール方法は下記記事をご参考ください。(リンク先はこちらから)

ラズパイのUSB3.0でエッジAIデバイスを接続!USB2.0との比較
ラズパイ4でエッジAIデバイスのUSB Acceleratorを動かし方を紹介します。 ラズベリーパイのUSB3.0とUSB2.0でエッジデバイスとしての性能・速度を比較しています。 ラズパイのUSB3.0でエッジAIデバイスを接続!USB...

 

本記事の下記記述の内容でも「ラズパイ3B+」では動作しますが最新のラズパイ4では動きませんので注意ください。

 

edgetpu_apiをダウンロードしてインストールする

Coralのスタートガイドに従ってラズベリーパイでデモ用のソフト・プログラムをダウンロードしていきます。

 

ラズベリーパイを起動してコンソールを開き、下記コマンドで「Edge TPUのruntime」と「Pythonのライブラリ」ダウンロードします。

wget http://storage.googleapis.com/cloud-iot-edge-pretrained-models/edgetpu_api.tar.gz

 

そしてダウンロードしたものを解凍してインストールしていきます。

tar xzf edgetpu_api.tar.gz
cd python-tflite-source
bash ./install.sh

 

最後のコマンドを押してすぐに「Google Edge TPUを最大周波数で使うか?Y/N」と聞かれますので、個人の好みで「Y」か「N」を入力してEnterして下さい

 

最大スペックで使いたい方は「Y」を選べばいいと思いますし、発熱するのを避けるならば「N」を選べばいいと思います(筆者は「Y」を選択しました)

 

暫く待つと無事インストールが完了します。

 

機械学習に必要なモデルとラベルをダウンロードしておく

今回の機械学習に使う必要なモデルとラベルはデフォルトのライブラリに入っていないので入手しておきます。(筆者は「~/python-tflite-source/edgetpu」の中に保存)

 

Coralの公式HP(リンク先はこちら)からブラウザ上でダウンロードして、直接のフォルダに入れてもらっても構いませんし、wgetのコマンドなどで入手してもOKです。

 

検出(Object detection)で使ったモデル

検出では「MobileNet SSD v2 (COCO)」のモデルを使いました。

 

wgetでモデルを入手するならば下記コマンドです

wget http://storage.googleapis.com/cloud-iot-edge-pretrained-models/canned_models/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite

 

分類(Image classification)で使ったモデルとラベル

分類(Image classification)で使ったモデルとラベルは「MobileNet V2 (ImageNet) 」です。

 

wgetでモデルとラベルを入手するならば下記コマンドです

wget https://storage.googleapis.com/cloud-iot-edge-pretrained-models/canned_models/mobilenet_v2_1.0_224_quant_edgetpu.tflite
wget http://storage.googleapis.com/cloud-iot-edge-pretrained-models/canned_models/imagenet_labels.txt

 

オリジナルの機械学習のモデルの作り方

<<20190615追記>>

今回はサンプルのモデル・ラベルを使っていますが、GoogleのAutoML Vision Edgeのサービスを使うことでオリジナルのモデル・ラベルを簡単に作成できます。

初心者でも簡単に作成でき、筆者が「工具」のモデルを作った時の記事を1からまとめてみました。よろしければご覧ください(リンク先はこちらから)

機械学習の始め方!GoogleのAutoML Vision Edgeで簡単に入門
GoogleのAutoML Vision Edgeのサービスを使うことで機械学習で必要なモデルを簡単に作成でき、Edge TPUで画像認識を簡単に使えました。 機械学習の画像認識を「始めたい」「業務に使いたい」方におすすめの記事です。 Au...

 

検出(object_detection.py)を試してみる

ラズベリーパイで撮った写真の「検出(Object detection)」してみます。

 

物体検出のプログラムを動作させてみます。(筆者の場合は先ほど撮った写真(test.jpg)を「~/python-tflite-source/edgetpu/test_data」に入れています)

 

まずはディレクトリを移動して

cd python-tflite-source/
cd edgetpu

 

下記コマンドを実行して検出プログラムである「object_detection.py」を実行しました

python3 demo/object_detection.py --model test_data/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite --input test_data/test.jpg --output detection_results.jpg

 

出力として写真でも返ってきました。手とマウス含めて10個ぐらい検出(object_detection)しているようです。

 

結果の一部を貼り付けておきます。

W0329 19:36:31.818717 3344 package_registry.cc:65] Minimum runtime version required by package (5) is lower than expected (10).
-----------------------------------------
score = 0.964844
box = [679.1473217010498, 0.0, 1990.8190097808838, 996.5801925659181]
-----------------------------------------
score = 0.121094
box = [33.535200119018555, 3.4182071685791016, 1106.4242992401123, 870.4930744171143]

 

分類(classify_capture.py)を試してみる

「Google Edge TPU」の力を存分に発揮できる使い方を試していきます

分類(classify_capture.py)に関してはカメラで動画を撮りながらリアルタイムで物を判別(分類)できました。

 

コマンドとしては下記です

python3 demo/classify_capture.py --model test_data/mobilenet_v2_1.0_224_quant_edgetpu.tflite --label test_data/imagenet_labels.txt

 

ドライバー以外にもマウス・キーボード・定規(スケール)を試してみましたが全て分類できました。

 

マウスは難しかったのか、若干スコアが低め(0.39)でした。

 

定規(スケール)は簡単らしくスコアも高かった(0.95)です。

 

<<20190805追記>>

リアルタイムで人の動作・姿勢も検出してみました。こちらもサンプルプログラムで簡単に動きます。(リンク先はこちらから)

人の動作を検出!Edge TPUとPosenetで姿勢を推論してみる
写真・動画の「人の動き」をリアルタイムで検出・解析することがGoogleのエッジ向けのプロセッサ「Edge TPU」で可能です。 誰でも簡単に「人間の姿勢」を推定して検出・解析できる方法を紹介していきます。 人の動作を検出!Edge TPU...

 

ラズパイ4での分類(classify_capture.py)の実施方法

<<20191230追記>>

最新のEdgeTPUのインストール手順が変更されたため、プログラムのフォルダ構成が変わっています

(大きな流れは変わりませんが、サンプルプログラムのインストール先などが変わっています)

 

下記記事で紹介する実施手順は最新のラズパイ4(ラズパイ3B+にも)対応していますので参考ください

ラズパイでカメラの使い方!Pythonとコマンドの基本・応用例を紹介
ラズベリーパイとカメラの使い方をまとめてみました。初心者の方でも簡単に撮影できます Pythonとコマンドのどちらでも写真・動画撮影が対応できる旨を紹介して、最後には画像認識まで実施してみます。 ラズパイでカメラの使い方!Pythonとコマ...

 

まとめ・感想

如何でしたでしょうか、初心者の筆者でしたが簡単にGoogle Edge TPUが使うことができました。

 

デモプログラムでもリアルタイムで十分に分類することができ、色々なケースで応用が期待できるデバイスだと感じました。ぜひ皆様も試してみてください。

 

<<20190406追記>>

今回のリアルタイムの分類に加えてGPIO制御(LED点灯)も行ってみました。よろしければこちらの記事もご覧ください。

エッジコンピューティングで機械学習!画像認識・検出を実践してみた
エッジコンピューティングをGoogle edge TPUで実施してみました。機械学習で画像認識させて指定の物を検出した場合にはリアルタイムでGPIO制御(LED出力)させるようにプログラムしてみました。 エッジコンピューティングとは? 詳細...

 

AmazonなどでもCoral USB Acceleratorが仲介業者から売られているので貼っておきますが、2019/3末時点では数量が出回っていないのか高額になっています。

2020年1月にはAmazonでもMouserの送料・手数料を考慮すると適正な価格になっていました。

コメント