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の購入から簡単な画像認識(鳥の判別)までまとめた記事が下記となります。実際に初めてみたい方はこちらから参照ください
今回は前回と同様にラズベリーパイ(raspberry pi)とCoral USB Acceleratorを使っていきます。
ラズベリーパイ(raspberry pi)にカメラを付ける
今回はカメラを使ってデモプログラムを動かします。「写真を撮って物を検出する」「動画を撮ってリアルタイムで分類する」の2パターンを実行します。
ラズベリーパイのカメラを取り付けるのは簡単です。あと最近は1000円足らずで売られているので非常におすすめです。
実際に購入しますとカメラとケーブルが入っていますので接続するだけです。難しいことは必要ありません。
カメラ側にケーブルを挿してコネクタをはめて…
ラズベリーパイ側もケーブルを挿しこめば完成です
Google Edge TPUを使う前の準備
ラズベリーパイのカメラを使って写真・動画を撮り、その写真の物体検出・分類をしてみます。
今回説明する一連の流れはCoralの公式HPに記載されているものを応用したものです。(英語ですがリンク先はこちらです)
ラズパイのカメラが正常動作するか確認する
まずは先ほどラズベリーパイ(raspberry pi)に付けたカメラの動作確認も含めて写真を撮ってみます。
ラズベリーパイを起動してコンソール上で下記コマンドを実行します。
無事写真が取れました。デフォルトで動かしたならば「pi」のフォルダ「test.jpg」の名前で保存されているはずです。筆者のはマウスを持った写真です
ラズパイにUSB Acceleratorを接続する
「ラズベリーパイ(raspberry pi)」+「USB Accelerator」を接続しておきます。
前回記事で対応しましたが、Edge TPUのライブラリのダウンロード・インストールをしていない場合は実行しときます。既に実施済の方は読み飛ばしてください
最新のEdgeTPUのインストール手順は変更されています
<<20191229追記>>
最新のEdgeTPUのインストール手順が変更されています。
下記記事で紹介するインストール手順は最新のラズパイ4(ラズパイ3B+にも)対応しています。
お手数ですがインストール方法は下記記事をご参考ください。(リンク先はこちらから)
本記事の下記記述の内容でも「ラズパイ3B+」では動作しますが最新のラズパイ4では動きませんので注意ください。
edgetpu_apiをダウンロードしてインストールする
Coralのスタートガイドに従ってラズベリーパイでデモ用のソフト・プログラムをダウンロードしていきます。
ラズベリーパイを起動してコンソールを開き、下記コマンドで「Edge TPUのruntime」と「Pythonのライブラリ」ダウンロードします。
そしてダウンロードしたものを解凍してインストールしていきます。
最後のコマンドを押してすぐに「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でモデルを入手するならば下記コマンドです
分類(Image classification)で使ったモデルとラベル
分類(Image classification)で使ったモデルとラベルは「MobileNet V2 (ImageNet) 」です。
wgetでモデルとラベルを入手するならば下記コマンドです
オリジナルの機械学習のモデルの作り方
<<20190615追記>>
今回はサンプルのモデル・ラベルを使っていますが、GoogleのAutoML Vision Edgeのサービスを使うことでオリジナルのモデル・ラベルを簡単に作成できます。
初心者でも簡単に作成でき、筆者が「工具」のモデルを作った時の記事を1からまとめてみました。よろしければご覧ください(リンク先はこちらから)
検出(object_detection.py)を試してみる
ラズベリーパイで撮った写真の「検出(Object detection)」してみます。
物体検出のプログラムを動作させてみます。(筆者の場合は先ほど撮った写真(test.jpg)を「~/python-tflite-source/edgetpu/test_data」に入れています)
まずはディレクトリを移動して
下記コマンドを実行して検出プログラムである「object_detection.py」を実行しました
出力として写真でも返ってきました。手とマウス含めて10個ぐらい検出(object_detection)しているようです。
結果の一部を貼り付けておきます。
-----------------------------------------
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)に関してはカメラで動画を撮りながらリアルタイムで物を判別(分類)できました。
コマンドとしては下記です
ドライバー以外にもマウス・キーボード・定規(スケール)を試してみましたが全て分類できました。
マウスは難しかったのか、若干スコアが低め(0.39)でした。
定規(スケール)は簡単らしくスコアも高かった(0.95)です。
<<20190805追記>>
リアルタイムで人の動作・姿勢も検出してみました。こちらもサンプルプログラムで簡単に動きます。(リンク先はこちらから)
ラズパイ4での分類(classify_capture.py)の実施方法
<<20191230追記>>
最新のEdgeTPUのインストール手順が変更されたため、プログラムのフォルダ構成が変わっています
(大きな流れは変わりませんが、サンプルプログラムのインストール先などが変わっています)
下記記事で紹介する実施手順は最新のラズパイ4(ラズパイ3B+にも)対応していますので参考ください
まとめ・感想
如何でしたでしょうか、初心者の筆者でしたが簡単にGoogle Edge TPUが使うことができました。
デモプログラムでもリアルタイムで十分に分類することができ、色々なケースで応用が期待できるデバイスだと感じました。ぜひ皆様も試してみてください。
<<20190406追記>>
今回のリアルタイムの分類に加えてGPIO制御(LED点灯)も行ってみました。よろしければこちらの記事もご覧ください。
AmazonなどでもCoral USB Acceleratorが仲介業者から売られているので貼っておきますが、2019/3末時点では数量が出回っていないのか高額になっています。
2020年1月にはAmazonでもMouserの送料・手数料を考慮すると適正な価格になっていました。
コメント