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として既に販売されている「USB Accelerator」と「ラズベリーパイ」でGoogle同様のデモを行っていきます
「USB Accelerator」の購入方法などに関しても以前の記事でまとめていますので、購入を考えている方は参考にしてください。(リンク先はこちらから)
ラズベリーパイとカメラとUSB Acceleratorでテストする
今回のデモでは画像認識する必要があるので「USB Accelerator」以外にもラズベリーパイ(raspberry pi)とカメラを用意します。
あとSWとLEDも必要になりますが、市販で売られているブレッドボードや電子工作セットを組み合わせるだけで動作可能です。(回路図・配線に関しては後半で記載)
Google同様のデモプログラムを動かすためには…
Googleが公開しているサンプルプログラムはありますが、展示会で行っていたデモプログラムとは違いますのでPythonで修正対応していきます。
サンプルプログラムの使い方に関しては以前記載した「USB Accelerator」の下記記事を参考お願いします(リンク先はこちらから)

AIによる画像認識の事例
別の記事でもPythonでプログラミングをしてGoogle Edge TPUでAIの画像認識を試しています。
下記記事では工場の制御機器(PLC:シーケンサ)と接続を想定してテストしました。よろしければこちらもご参考ください。(リンク先はこちらから)

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

初心者が高い参考書を買って一人でPython勉強するよりは「非常に分かりやすく」「費用が抑えられる」はずですのでご参考ください。リンク先はこちらから
Pythonで画像認識のプログラミング
Googleが公開しているサンプルプログラムでは単に機械学習による画像認識を行うのみだけでした。
そのため下記の仕様をPythonのプログラムで追加していきます。
①最初は何を画像認識させても緑LEDを点灯
・SWをトリガーに(個別のLEDを点灯)画像認識させた情報を学習させる
・(SWを離した後は)学習させた情報を画像認識させて個別のLEDを点灯
画像認識させた情報を学習させる
Google Edge TPUが画像認識させた情報の収得方法は以前記事に記載したものと同様です。「result」に入っているラベル情報を使っていきます。(その記事のリンク先はこちらから)

今回は学習させると言っても非常に簡単な方法です。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の使い方の記事リンク先はこちらから)
自作デモプログラム結果
①プログラム起動後に自動的に緑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勉強するよりは「非常に分かりやすく」「費用が抑えられる」はずですのでご参考ください。リンク先はこちらから
コメント