カメラと連動「いいね!検出装置」(Maker Faire Tokyo 2019)
2019年08月02日 金曜日
CONTENTS
はじめに
「いいね」検出装置の認識モデルの作成を担当しました、MVNO事業部の川崎と申します。
このたび、Maker Faire Tokyo 2019へ出展しないかと声をかけられて、事業部の同期・後輩と一緒に参加することにしました。
ここでは会場で頒布したレシピには記載しきれなかった細かい部分についてご紹介します。
SPRESENSEについて
一言で紹介すると、省電力・高機能ボードコンピュータです。
なんと CPU (ARM® Cortex® M4F) 6コア 搭載というハイパワー。
ボード上には、基本的なGPIOはもちろん、ハイレゾオーディオ、GPSまで内蔵されています。
今回のいいね検出装置も、このパワフルな計算資源を活用して、判定を行っています。
SPRESENSEについての詳細は以下をご覧ください。
https://developer.sony.com/ja/develop/spresense/#overview-content
使ったもの
- SPRESENSE 本体
- SPRESENSE LTEボード
- SPRESENSE カメラモジュール
- Neural Network Console 学習済モデル
- たくさんのいいね / よくないね 画像
画像左:手前がカメラモジュールで奥が本体+LTEボード
画像右:ボードの裏にSIMやSDカードが挿さっています
装置の仕組み
装置の全体像は以下の通りです。
いいねの投稿までは大きく分けて以下4ステップがあります。
- いいね画像の撮影
- 画像形式の変換
- 認識モデルによる判別
- Twitter への投稿
以下で、それぞれ詳細をご紹介します。
いいね画像の撮影
SPRESENSEのカメラモジュールを使って、シャッターを切るだけ、とやることはシンプルです。
SPRESENSEのcameraモジュール制御機構には、動画用、画像取得用 2種類のストリームがもうけられており、デフォルトだと前者は YUV4:2:2 形式、 後者は JPG 形式でSDカードへの書き出しを行うことができます。
https://developer.sony.com/ja/develop/spresense/developer-tools/get-started-using-nuttx/nuttx-developer-guide#_camera
今回は前者、動画を扱うためのストリームを利用しました。
画像形式の変換
画像撮影後、ここで後続の処理の為に、画像を pgm形式へコンバートする必要があります。
pgm形式は白黒画像(グレイスケール)を扱う形式で、数バイトのヘッダ情報と「画素ごとの明るさを表す数値の羅列」だけで画像を表現するフォーマットです。
SPRESENSE上で画像認識を行うためには、この形式で画像を保存する必要があります。(2019/07 現在)
上記で撮影したYUV形式の画像は、Y成分に輝度情報、 U,V 成分に色差情報が含まれています。
Y成分だけを取り出すことができれば、それはそのまま白黒画像として表現できることになります。
(SPRESENSE上でそれを実現するための関数も用意されております)
https://github.com/sonydevworld/spresense/tree/master/sdk/modules/imageproc
画像認識
pgm形式に変換ができたら、認識モデル、いわば「いいね判別器」に画像を投入します。
いいね判別器そのものもSPRESENSE上で動かすことが可能です。
ソニー株式会社製 Neural Network Console を使用すると、クラウド経由で認識モデルを直観的な操作で作成することができます。
また、SPRESENSEに対応した形式で、認識モデルをエクスポートすることもできます。
認識モデルの作成にあたっては、多数のいいね画像 / そうでない画像 が必要であるため、今回はIIJオフィスの休憩エリアにカメラを設置し、スタッフに素材写真の撮影を呼びかけました。
Twitterへの投稿
認識までできたら、いよいよ投稿に移ります。
今回、ソニーセミコンダクタソリューションズ様からSPRESENSE用のLTE通信ボードをお借りし、通信機能はそちらで実装しました。
通信にあたっては、もちろん弊社が提供するSIMを挿して使用しました。
- お借りしたSPRESENSE LTEボード
(2019年8月3日~11月5日までリリース前のモニターキャンペーンをされています)
SPRESENSEへの展望
今回認識モデルを作成しましたが、「手のひらの上に載るようなコンピュータで認識モデルを動作させることができる」という点は驚きでした。組み込み用マイコンの性能向上は著しいと感じました。
(認識モデルには非常に多くのパラメータが保持されているので、おそらくボード上に載せるだけでも一筋縄ではいかないのでは、と考えていましたので)
終わりに
紆余曲折ありましたが、どうにか形にすることができました。
ご来場頂いた皆様に、是非ブースで楽しんでいただければ幸いです。
なおIIJでは、個人向けIoT SIMとして、IIJmio IoTサービス の提供を 2018/08 から実施しています。
Makerの皆様、LTE通信ができるプロダクトが作りたくなりましたら、是非ご検討くださいませ!
また、最近ではeSIMプランもリリースしております。(※ 2019/07 現在、β版でのご提供です)
今後のIIJサービスの動向も是非ご注目ください。