番外編4 AIY VISION KIT

今回はちょっとX68000とは外れますが、いずれ応用する基礎技術ってことで・・・


はじめに

 AI(artificial intelligence 人工知能)はクルマの自動運転、経営判断など今まさに多くの分野で活用され始めている技術です。昔はコンピュータ用の人工知能言語なんてのもあり、PROLOGを少しかじってみたこともありましたが、今のAI技術は脳科学のニューラルネットワークや機械学習を応用したディープラーニングが中心で、データをコンピュータに大量に与えて、それぞれの特徴を把握させ、推論・判断のもとにしています。

 これを手軽に体験できる製作キットとして、GoogleはAIYシリーズの提供を開始し、2017年12月に「VISION KIT」を発表しました。私はこの記事を見て早く日本でも発売されないかなと心待ちにしていて、8月にやっと入手できました。さっそく、組み立てて動作試験をしましたが、キット付属の段ボールケースは見た目、耐久性からもいかにもお粗末でしたので、X68000ミニケースに組み直しました。




パーツ構成
 キットには、シングルボードコンピュータのRaspberry PI(ラズパイ)の廉価版 ZERO WHとVPUチップが載ったボンネット(拡張基板)、カメラ、LED、ブザー、スイッチなどが入っています。

 AIYボンネットに載っているVPUチップ、「MA2450」は、Movidius社(インテルが買収)のMyriad 2ファミリーのビジョンプロセッシングユニットで、4 Gbit DDRとTeraFLOPSを誇る浮動小数点演算機能、画像処理機能を持ち、高速でディープニューラルネットワークに基づく分類等の処理を行ってくれますので、クラウドに頼らずローカルで画像から物体認識するのに役だっていてくれます。VPUは最近、USBスティック版も販売されるようになりましたが、結構高価で(秋月電子通商で1万円程度)、カメラ、ラズパイ付きのVISION KIT(12.4k円)はかなりお得感がありました。あと、ボンネット基板には、空きGPIOの端子が4本引き出されているのと、ラズパイとスマホとでBluetoothのペアリングをする際に使用する押しボタンスイッチが載っていました。

 組み立て説明書はなく(以前に購入したVOICE KITには冊子の説明書が添付されていた)、以下のサイトの案内書きがあり、これを参考にして組み立てました。

     https://aiyprojects.withgoogle.com/vision/



起動
 ラズパイZEROはUSB端子がマイクロ1本しかなく、パソコンとして使用するには、キーボードやマウスを接続するための変換コードやハブが必要となりますが、キットでは最初からWiFi環境でのPCからのSSH接続による運用が想定されています。そのため、WiFiルータがDHCPでキットのラズパイに提供したIPアドレスを知らせるスマホ用アプリがAIYプロジェクトで用意されていました。キットのデフォルトでは「喜び検出」なるソフトが自動的に起動してくれるので、これ専用であればPC接続は不要かと思われがちですが、システムをシャットダウンするには、やはりSSH等によるログイン作業が必要となってきます。

 家庭で使う時はIPアドレスはだいたい推測できるので、スマホを使わないでなんとか接続しています。下図は、PCからログイン後のAIYプロジェクトディレクトリに入ったところです(「喜び検出」のソフトの自動起動は解除しました)。

    

 多くのPythonによるサンプルプログラムが入っています。以下、コマンドを入力して試したものをいくつか紹介します。


喜び検出
$ joy/joy_detection_demo.py

 製作したVISIONユニットにはミニX68000の筐体の正面、両タワーの隙間部分にカメラを取り付けています。趣味で撮影したモデルの写真を見せたところ、人物だと認識すると、筐体トップのLEDが青く点灯し、さらに、笑顔であればブザーを鳴らし黄色で点灯します。笑顔に近い表情では青~黄色の微妙な色で光りました。


顔検出
$ ./face_detection_camera.py

 映画のちらしを見せたところ、カメラ画像の中の人物の顔部分を複数検出してハイライト表示しました。2つ目の画像の横向きの女性の顔は写真では認識していますが、実際はちらちらと認識したり、しなかったりしました。横顔はなかなか難しいようです。


物体検出
$ ./image_classification_camera.py

 カメラのライブ画像をリアルタイムに認識し事前に学習された物体の中から確率が高いものを3つ、リアルタイムにSSH端末画面に出力します。部屋にある小物をいろいろと見せて反応を確認しました。

試料:目覚まし時計

 アナログ時計 約50%
 壁掛け時計 約40%
 気圧計 約10%
試料:観用木

 花瓶 約77%
 水差し 約8%
 ランプシェード 約2%
試料:砂時計(計時中)

 砂時計 約97%
 鉛筆削り 約1%
 香水 約0.5%
試料:リモコン

 リモコン 約55%
 ローション 約10%
 ヘアスプレ- 約5%
試料:CDとラベル

 実験用白衣 約27%
 アイロン 7%
 洗濯機 約5%

 あらかじめ教え込まれたデータの質と量にもよると思いますが、ほぼ的確な検出をしてくれました。砂時計は計時中だと認識率が上がりました。最後は難題かと思いながらセッティングしましたが、まさかCDの円盤でなく歌手の衣服に着目するとは意外でした(白いから実験用白衣・・・)し、そのリアルタイムの検出繰り返しの中で「ニプル」なんてのもあり、「おいおいどこを見てんだ!」とつっこみを入れたくなりました。あと、ここにはありませんが、お城の置物を置いて「障害物」と検出され時には、可笑しくてつい笑ってしまいました。


改造予定
 とりあえず、使いやすくするために、以下の計画を立てています。
  ・空きGPIOに押しボタンスイッチを取り付け、短押しでリセット、長押しでシャットダウンするようにする。
  ・空きGPIOにロータリーDIPスイッチを付け、自動起動ソフトを選べるようにする。
  ・空きGPIO出力からケーブルを出し、X68000等の起動制御ができるようにする(顔認識で起動など)。
 どれもすぐにできそうなネタですが、X68000本体の改造に時間をとられ、4ヶ月過ぎてしまいました・・・。


おわりに
 サンプルソフトには、上記のほか、顔認識をするとシャッターを切るカメラなど、いろいろなものがあって、全て解析が容易なPythonでの記述なので、いろいろなことに応用できそうです。いずれはクルマに載せて道路標識など見えるものを認識させたり、X68000の動作支援、特にFDX68で蓄えたゲームソフトのデータを使い、ソフトのパッケージをカメラで画像認識して自動で起動するなどに応用していきたいと考えています。


参考になったサイト

Movidius、「Myriad 2」ビジョンプロセッサを発表
 

  メニューへもどる