2018年12月6日木曜日

画像認識ガジェット3題

おはようございます(午前4時)。

これは Hamee Advent Calendar 2018 7日目の記事です。

勤務先であるHamee株式会社IoT部で私は日々ハードウェア設計開発〜ファームウェアあたりを担当しています。Adventでその辺をがっつりやりたかったのですが、いろいろ間に合わなかったのでまた次回。

お仕事で作っている試作基板の例。不自然な指の位置w
さて、表題の通り、画像認識ガジェットを3つ紹介します。

これまでもOpenCV使って顔認識などで遊んでおりました。自前の認識器を作るのはちょっと面倒ですが、「顔」など既成の認識器は簡単に使えて楽ですし少ない資源で認識できるので、顔の座標を求めてサーボでカメラをそっちに向ける、なんて用途にはとても重宝します。

しかし、世はDNNが大ブーム。私の読んでいる比較的レガシーな技術誌ですら、このところ毎号毎号「人工知能特集」の文字が並んでいます。たまに「それは人工知能ではない…よね」という記事もありますけど。

ということで、お手軽に使える画像認識として、AIY Vision Kit、JeVois、SpresenseのNNLを簡単にご紹介します。

JeVoisはあまり知られていませんがKickstarter発のサイコロキャラメル大のモジュール。AIY Vision Kitはご存知Google AIYプロジェクトの第二弾。手のひらサイズで消費電力は数W単位でしょうか。Spresenseは比較的新しいプラットフォームでサイズは概ね名刺大で消費電力1W以下です。最近カメラが発売されました。

なお画像認識といっても色々ありますが、ここでは「カメラの視野の中にあるのは何か?を見分ける技術」とします。

■JeVois■

特徴は体積の1/3ぐらいを占める冷却ファンです。どえりゃあ高速でまわっていて、JeVoisを持ち上げるとジャイロ効果を感じるほどです。ARM A33 Quad Core+GPUという構成です。ハードウェアの構成だけ見ると「Nano Piあたりで作ったらいくらで出来るだろ?」などとつい考えてしまいますが、とにかくちっこいです(組み込み際にはエアフローのための隙間が必要です)。スイッチサイエンスさんで7,452円です。



MacなどとはUSBで接続します。付属のmicro SDカードをしっかり差し込みmicro USBを接続すると電源が供給され、MacからはUSBカメラとして認識されます。ファンが轟音を発するので、監視カメラなどの用途には無理ですね。Mac上の動画表示アプリを起動するとデモ動画が表示され、いくつかの認識機能が動きます。USBはシリアルも含んでいて、適当なコンソール、Macの場合はscreenなどを使うと直接コマンドを送ったり結果を受け取ることができます。

JeVoisのユニークな点は、USB表示の解像度を変えることで認識するモードが変わる、という仕様です。たとえば「,YUYV 320x286 @ 30.0 fps」を選択するとバーコードリーダーになり、「YUYV 320x252 @ 30.0 fps」では物体識別、なんと「YUYV 320x256 @ 30.0 fps」だと「Road Navigation」が動くとのことですが、引きこもり系技術者なのでまだ試していません。他にも動体検知、各種画像処理デモ(特殊効果やエッジ検出など)が含まれています。試したものはいずれも高速で瞬時に結果を判定してくれます。

デモ画面

USBの他にシリアルで接続してコマンドや認識結果をやりとりすることもできます。

USBとなるとラズパイやPICなどが必要ですが、シリアル接続で済むのでArduinoのようなシンプルなマイコンと組み合わせることも可能です。「機械学習とかよくわからないけど、カメラに写ったものが何かを判断して、モーターを動かしたり明かりをつけたりする」ということをやりたい場合、作業時間を含めたコストパフォーマンスは非常に高いと思います。

たとえば、「猫が来た時だけ、猫ドアを開ける」なんてガジェットを作ることもそんなに難しくないと思います。「うちの猫」識別は例えばiBeacon付きの首輪を使ってください(要望あれば作ります、いやまじで)。

■AIY Vision Kit■

Raspberry PiのOS、Raspibianの上で動いています(Linux系)。Raspberry Piは一昔前のパソコンぐらいのスペックがあります。KitはRaspberry Pi Zero、ハードウェアアクセラレータ、カメラ、ボール紙のケース、SDCardなどで構成されています。HDMI(mini USB)とUSBキーボード/マウスを接続(micro USBが1個出ているだけなので、micro USB接続の2ポート以上のハブが必要)するとデスクトップが表示されます。秋月電子通商などで入手できます。秋月では14,000円で売られています。

あ、間違えた
こっちがAIY Vision Kit

Vision Kitを使った感触としては、物体識別は背景がすっきりしていないと誤認識しがちなのは他と同様、顔認識(視野のどこに顔があるかを検出し□で囲む)もOpenCVと同程度。

表情認識は「だいたいあってる」という感じです。ちょっと口の端で笑った程度でも笑顔の黄色が点灯します。アシリパさんの「オソマ」のような表情で試したところBlueのランプが点灯しましたw

結構発熱ありますし、認識も表情識別以外は「まぁこんなもの」という印象です。3つの中で一番高価なのに残念。あと、設定アプリがAndroidしかなくて、iPhoneユーザとしては残念。まぁGoogleだしな…。

なお、組み立て中に私のミスでカメラケーブルのロックを折ってしまい、手持ちのzero whと交換しました。みんな、組み立ては慎重に!

機械学習による画像認識を試したいのであればMacでもいいし、ラズパイを使うということであればQuad Coreに普通のカメラでも十分速いんじゃないかと思ったり…どういう層がこれを買うのか今ひとつピンとこないです。zeroなので起動時間など驚くほど遅いですし。この価格とサイズなら液晶表示欲しいです。

■Spresense■

Advent書くと決まった時点で「SonyのNeural Network Consoleで学習したスマフォケース(Hamee株式会社はスマフォケースの会社です!)をSpresenseで認識」ってのを考えていたのですが、カメラの到着が遅れたりVMが消えたりで間に合いませんでした(Spresenseの開発環境はubuntu。Mac上のVirtualBoxにVM入れて作業してたんですが、ある晴れた朝、起動しなくなりました)。

画像はイメージです

とりあえず、インタフェース誌2019年1月号の特集記事を見ながらソニーさんのNeural Network Consoleを使ってハンドサイン識別(記事はジャンケンでしたが私は東京都武蔵野市在住なので楳図かずお先生に敬意を表してグワシ / バサラ / チョキにしました)をしたところ概ねうまく行ったのですが、クローラーで集めたスマフォケース画像の学習 / 認識は所詮付け刃で今ひとつうまくいかず、画像サイズや畳込処理などをもう少し細かく煮詰めないとダメっぽいです。まずCIFAR-10やFood 101あたりを使って、チューニングのコツなどを学ぶところからやり直したいと思います(小並感)。

相変わらずSpresenseの消費電力は小さくて、あまり厳密な測定ではないですが連続認識中でも400-600mW程度でした。相変わらず動作中に触っても熱さを感じません。以前の繰り返しになりますがSpresense CXD5602も素晴らしいのですが、PMIC/Audio InterfaceのCXD5247には愛を感じます。ぜひ自分でも基板を起こしたいのですが、ボールピッチ0.4mmのBGAはさすがにハードルが高く手が出せません。ESP32みたいに両チップを一緒に十数mm角ぐらいのモジュールにのせてTSSOPかせめてQFNで出してくれたらソニーに一生の忠誠を誓ってもいい!とすら思っています(真顔)。

■おわりに■

3個比較してみた結論です。

機械学習の概要を知っていてご自分でプログラム書いたりサンプルを直したりすることができるのであればSpresense + Cameraをお勧めします。小さくしたい、なるべく簡単に物体認識などに使いたければJeVois。AIYは…Googleによる今後の精度向上に期待、というところでしょうか。

Spresenseでの機械学習はソニーのNNL/NNCが使いやすいということもあって私のような機械学習初学者でも試行錯誤しながら作っていけるのもいいですね。サイズも消費電力も小さいので何か装置に組み込むときも苦労が少ないと思います。イチオシです!

----

本ブログに記載されているのは倉橋浩一個人の見解・意見であり、Hamee株式会社の意見を代表するものでも代弁するものでもありません。すべての文責は倉橋浩一個人に帰属します。

倉橋個人のブログはこちらです。

倉橋が個人で作った基板です。きれい? 私、きれい?

0 件のコメント:

コメントを投稿

このブログの文責は倉橋浩一個人にあり、あくまでも私人としてのクラブ活動を記録するものです。当然、記載されている内容はHamee株式会社の見解を代表するものではありません。

文中に登場する商品またはサービスなどの名称は各社の商標および登録商標です。