Google Edge TPUを購入してラズベリーパイと機械学習してみた

機械学習

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

 

Google Edge TPUとは

2019年3月にGoogleが「Coral」というブランドで「Google Edge TPU」を発売しました。公式HPはこちらです

Googleが数年前から機械学習に特化したICを開発していました。(現在は第3世代ということです)

テンソル・プロセッシング・ユニット(Tensor processing unit、TPU)というのが本当の名前で、このTPUをエッジ向けに特化したデバイス「Google Edge TPU」となります

 

Google Edge TPUとして発売されたのは

発表されたのはオプション的なカメラモジュールなどを含めると「5つ」の製品なのですが、「Google Edge TPU」が載って現在発売されている本体としては下記2つです。公式HPはこちらから

 

一つはラズベリーパイのようなPCモジュールとなっている「Dev Board」と

 

他のPCとのUSB接続のモジュールとして使える「USB Accelerator」です

 

Google Edge TPUの価格は?

公式HP,また公式からリンク先が貼られているMouserともに確認しましたが販売価格は

「Dev board」は$149.9(約\17000)、「USB Accelerator」は$74.99(約\8500)となっていました。

 

まだ「Dev Board」は日本で購入できない

筆者としても「Dev board」を購入したかったのですが、日本ではまだ購入できませんでした。

Wifiが内臓されているため技適の問題かと思われます。

 

公式HPからリンクされている電子部品サイトのMouserで確認するとアメリカなどの国では購入できますが

 

日本では販売制限されていました。(2019年3月時点)

 

<<20190805追記>>

Devboardも2019年6月にようやく技適が通ったようです。

 

既に海外では出回っているためYoutube等を検索すると「Dev board」でTensorflowを使った機械学習のデモ等がありました。

 

<<20190430追記>>

上記Yotube同様のデモをPythonのプログラミングして作りましたので記事にしました。よろしければこちらもご覧ください(リンク先はこちらから)

GoogleのAIの活用事例!Edge TPUのデモを自前で作ってみた
Googleが「CES」等の世界規模の展示会で実施していた「Edge TPU Dev Board」のデモを自前で作ってみました。 「ラズベリーパイ」と「USB Accelerator」で真似できましたので誰でも同様にAIの事例を試せま...

 

「USB Accelerator」をMouserから購入してみた

2019年3月時点では「Dev board」はまだ購入できませんでしたが、「USB Accelerator」は日本でも購入できるので買ってみました。

 

\6000を超えていたので配送料は無料でしたが、消費税含めると約\9500でした

 

筆者は在庫「0」、工場リードタイムが「3週間」の状況で2019/3/12に注文しましたが…

 

10日後の2019/3/22に届きました。思ったより早かったです。(在庫と輸送の関係があると思いますのであくまで一例としてお願いします)

 

実際に段ボールを開封するとCoralのブランドの箱が出てきました。無事「Google edge TPU」が届きました。

 

ちなみにAmazonでも売っているが…

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

 

もう少し経てば数量も出回るのでAmazonの値段も正常に戻ると思いますが、もし早めに手に入れたい方はMouserから購入した方が安く済むと思います。リンク先はこちらから

 

Coral USB Acceleratorは簡単に使える

「Google Edge TPU」が搭載されている「USB Accelerator」は簡単に使えるように30cmのUSBケーブルも同梱されています。

USB AcceleratorはType-C

箱を開けますと本体の「USB Accelerator」とUSBケーブルが同梱されています。

 

ケーブルはTypeA-TypeCとなっており、本体側がTypeCとなっています

 

逆側はType-Aのため直ぐにラズベリーパイ(raspberry pi)やPCに繋げれるようになっています。

 

USB Acceleratorのサイズは小さい

USB Acceleratorのサイズとしては横65mm×30mm×8mと非常に小さいです。

 

「どれぐらい?」と言うとラズベリーパイと比較すると小ささがよく分かります。更に小さいサイズとなります

 

Google Edge TPUとラズベリーパイで機械学習をする

今回はラズベリーパイと組み合わせて、Google Edge TPUを試していきます。入門のスタートガイドはCoralの公式HPにも記載されています。リンク先はこちらから

 

LinuxのPCとUSB接続してエッジコンピューティングを行い機械学習の効率化をできるようになっていますので、「USB Accelerator」はラズベリーパイもサポートされています。

※但しラズベリーパイがUSB3.0でないためベストパフォーマンスは出ないということです

 

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」を選択しました)

 

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

 

残念ながら「Raspberry Pi 2/3 Model B/B+ 」の対応のみ

余談になりますが筆者のラズベリーパイ(raspberry pi)は「最新の3B+」「古い1B+」の2つあるのですが、「古い1B+」に関しては今回の「Google Edge TPU」が使えませんでした。

 

Coralのスタートガイドのページでも「Raspberry Pi 2/3 Model B/B+ 」という表記があり、実際にインストールできませんでした。

 

「USB Accelerator」で機械学習を実行!

インストール終了したら、「USB Accelerator」を接続して機械学習を実行します。

 

ディレクトリを移動して、いざプログラムを実行します

cd edgetpu
python3 demo/classify_image.py \
--model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--label test_data/inat_bird_labels.txt \
--image test_data/parrot.jpg
このプログラム何を行っているかというと、「Google Edge TPU」で「鳥」のデータを読み込んで機械学習させて「この写真の鳥は何か?」と聞いています
プログラム実行後にはスコア(得点)がでます。下記だと「Google Edge TPU」はコンゴウインコ(Scarlet Macaw)と判断したようです。
---------------------------
Ara macao (Scarlet Macaw)
Score : 0.613281
---------------------------
Platycercus elegans (Crimson Rosella)
Score : 0.152344

白と茶色のニワトリも判断できるか確認してみた

折角なのでフリー素材の「白と茶色のニワトリ」を2種類持ってきて、実行してみました。

 

やり方は簡単です。「~/python-tflite-source/edgetpu/test_data」の中に新たなデータ(写真)を入れまして

 

最後のプログラム実行箇所で判断する写真の名前を変更するだけです。(parrot.jpg⇒chicken.jpeg)

python3 demo/classify_image.py \
--model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--label test_data/inat_bird_labels.txt \
--image test_data/chicken.jpeg
ちなみに結果ですが「白のニワトリ」についてはゴシキヒワ?(Scarlet Macaw)とスコアが低いながらも判断し、
---------------------------
Carduelis carduelis (European Goldfinch)
Score : 0.105469
「茶色のニワトリ」についてはしっかりとニワトリ(Domestic Chicken)と判断したようです。
---------------------------
Gallus gallus domesticus (Domestic Chicken)
Score : 0.210938
---------------------------
Gallus gallus (Red Junglefowl)
Score : 0.195312
この結果に関しては「Google Edge TPU」がどうとかではなく単にデータセットの問題のため、あくまで参考までに。

まとめ・感想

本来ならば「エッジならではのリアルタイムの機械学習」などに使いたかったのですが、今回はデモを紹介するだけで終わってしまいました。

 

いずれ「Google Edge TPU」ならではの使い方をした機械学習の紹介もしたいと思います。

 

何にせよ、「Google Edge TPU」のようなデバイスが増えてくるとこれからより機械学習を使えるケースが増えてきそうです。

 

<<201903/31追記>>

「Google Edge TPU」と「ラズベリーパイ」に加えて「カメラ」も付けてリアルタイムで分類させた記事を追加しました。本格的なエッジコンピューティングができています。

よろしければこちらもご覧ください。リンク先はこちらから

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

 

ご覧いただきありがとうございました

コメント