GoogleのAIの活用事例!Edge TPUのデモを自前で作ってみた

Python

Googleが「CES」等の世界規模の展示会で実施していた「Edge TPU Dev Board」のデモを自前で作ってみました。

「ラズベリーパイ」と「USB Accelerator」で真似できましたので誰でも同様にAIの事例を試せます。

 

Google Edge TPUのデモプログラムの内容

2019年3月にGoogleが「Google Edge TPU」を発売する前に「CES」「Tensorflow Dev Summit」等の世界規模の展示会でAI・機械学習のデモプログラムを動かしていました。

 

デモ内容はYoutubeにあります。下記動画の14分20秒辺りでオレンジを「Edge TPU Dev Board」でSWをトリガーに学習させて、その後は自動でLED点灯させています。

 

PythonとEdge TPUの使い方を学んで同様のデモプログラムを作れましたので記事にしました。

 

「Edge TPU Dev board」がまだ日本で購入できないので…

以前の記事でも紹介しましたが、まだ2019年4末時点でも「Dev board」日本ではまだ購入できません。

Wifiが内臓されているため技適の問題かと思われます。(リンク先はこちらから)

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

 

そのため日本でもGoogle Edge TPUとして既に販売されている「USB Accelerator」と「ラズベリーパイ」でGoogle同様のデモを行っていきます

 

「USB Accelerator」の購入方法などに関しても以前の記事でまとめていますので、購入を考えている方は参考にしてください。(リンク先はこちらから)

 

ラズベリーパイとカメラとUSB Acceleratorでテストする

今回のデモでは画像認識する必要があるので「USB Accelerator」以外にもラズベリーパイ(raspberry pi)カメラを用意します。

 

あとSWとLEDも必要になりますが、市販で売られているブレッドボード電子工作セットを組み合わせるだけで動作可能です。(回路図・配線に関しては後半で記載)

 

Google同様のデモプログラムを動かすためには…

Googleが公開しているサンプルプログラムはありますが、展示会で行っていたデモプログラムとは違いますのでPythonで修正対応していきます。

 

サンプルプログラムの使い方に関しては以前記載した「USB Accelerator」の下記記事を参考お願いします(リンク先はこちらから)

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

 

AIによる画像認識の事例

別の記事でもPythonでプログラミングをしてGoogle Edge TPUでAIの画像認識を試しています。

 

下記記事では工場の制御機器(PLC:シーケンサ)と接続を想定してテストしました。よろしければこちらもご参考ください。(リンク先はこちらから)

AIと画像認識の事例!Pythonでプログラミングして試してみた
AIで画像認識させて特定の物を検出した場合には外部機器を制御するようにPythonでプログラミングしました。 実際に動く物を検出しますので「人・動物の検知」「工場ラインの管理」等に応用できます。 リアルタイムで動体をAI+画...

 

ちなみに筆者は少し前までPython初心者でしたが、下記記事で紹介しているUdemy で勉強することで今回のレベルのことは出来るようになりました。

未経験・社会人向け! Pythonと機械学習の勉強方法・始め方
未経験で社会人である筆者がPythonと機械学習を学ぶにあたって「今回の勉強方法はかなり実用的かつ効率的!」と強く実感した内容でしたので紹介したいと思います。 UdemyがPythonと機械学習の始め方に最適! 結論から言いますとの講座...

 

初心者が高い参考書を買って一人でPython勉強するよりは「非常に分かりやすく」「費用が抑えられる」はずですのでご参考ください。リンク先はこちらから

 

Pythonで画像認識のプログラミング

Googleが公開しているサンプルプログラムでは単に機械学習による画像認識を行うのみだけでした。

 

そのため下記の仕様をPythonのプログラムで追加していきます。

①最初は何を画像認識させても緑LEDを点灯

 

・SWをトリガーに(個別のLEDを点灯)画像認識させた情報を学習させる

 

・(SWを離した後は)学習させた情報を画像認識させて個別のLEDを点灯

 

画像認識させた情報を学習させる

Google Edge TPUが画像認識させた情報の収得方法は以前記事に記載したものと同様です。「result」に入っているラベル情報を使っていきます。(その記事のリンク先はこちらから)

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

 

今回は学習させると言っても非常に簡単な方法です。SWを押しているときは画像認識している情報を配列(Array)に格納していきます。

 

最初にスレッドを分けているので最初に変数・配列をインポートして…

 

実際に使う変数・配列で定義しました。

 

そしてGPIOの入力を条件に、フラグが立ったら画像のラベルを配列に格納させます。これでSWを押した時の画像情報が学習されていきます。

 

学習させた情報を元にLEDを点灯させる

ラズベリーパイでLEDを点灯させるには最初にGPIOをインポートさせます。今回はGPIOの20,21,16をLED出力、23,24をSW入力のピンとして使っていきます

 

今回は「SWを押している時」「学習前」「学習後」でLED点灯を変える必要があるので条件式で対応しました。

 

最後に「学習後」に関しては現在画像認識している情報と比較させて、一致したときには指定のLEDを出力させます。これにてプログラムは終了です。

 

回路図・配線

回路図としてはLED、SWを接続しただけですが一応載せておきます。市販で売られているブレッドボード電子工作セットを組み合わせるだけで動作可能です。

 

実際のテスト環境としては下記形です。Googleが行っているデモと比べると手作り感があります。

 

Google同様のデモプログラム動作を確認する

それではテストを行っていきます。

Pythonのプログラムを起動させたコマンドは下記です。作成したプログラムの名前で実行すればOKです。(Edge TPUの使い方の記事リンク先はこちらから)

 

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

 

自作デモプログラム結果

①プログラム起動後に自動的に緑LEDがONします。最初に何を画像認識させても緑LEDしか点灯しません。⇒OKです。

 

②(黄LED用)SWを押した時は(黄)LEDを点灯+画像情報を学習できています。⇒OKです。

 

③黄LED用SWを離した後でも「学習した情報(テニスボール)」と「現在の画像認識(テニスボール)」が一致したら黄LEDが自動点灯します。⇒OKです

 

④赤LEDでも同様に「学習した情報」と「現在の画像認識」の情報が一致したら自動でLED点灯させることができました。

 

実際の動画

動画も撮ってYoutubeに上げてみました。最初は何を画像認識させても反応しませんが、学習後はLEDを自動的ONできていることが分かります

 

~10秒  プログラム実行(緑LEDがON)

~17秒  テニスボールを画像認識させても緑LED点灯のまま

~25秒  黄LED用SWを押して「黄LED点灯」+「テニスボールを学習」させる

~32秒  (黄LED用SWを離しても)学習したテニスボールを認識したら黄LEDが点灯

~42秒  キーボードを画像認識させても緑LED点灯のまま

~47秒  赤LED用SWを押して「赤LED点灯」+「キーボードを学習」させる

~56秒  (赤LED用SWを離しても)学習したキーボードを認識したら赤LEDが点灯

 

まとめ・感想

Googleが展示会で実施していたEdge TPU Dev Boardのデモを「ラズベリーパイ」と「USB Accelerator」で再現させることができました。

 

Pythonのプログラミングができれば今回のようにAI・機械学習等のデバッグ・テストが簡単にできるので非常に便利です。

 

ちなみに筆者は少し前までPython初心者でしたが、下記記事で紹介しているUdemy で勉強することで今回のレベルのことは出来るようになりました。

未経験・社会人向け! Pythonと機械学習の勉強方法・始め方
未経験で社会人である筆者がPythonと機械学習を学ぶにあたって「今回の勉強方法はかなり実用的かつ効率的!」と強く実感した内容でしたので紹介したいと思います。 UdemyがPythonと機械学習の始め方に最適! 結論から言いますとの講座...

 

初心者が高い参考書を買って一人でPython勉強するよりは「非常に分かりやすく」「費用が抑えられる」はずですのでご参考ください。リンク先はこちらから

 

コメント