Spresenseを使って飼っているうさぎの良い写真を集めたい
はじめに
はじめまして、Arumon&NRI一年目の小銭(こぜに)です。
一年目ながら図々しくAdventCalendarにお邪魔しています笑
Arumon AdventCalendarは、12/25までの予定なのでだいぶ終盤に差し掛かっているところですね。漫才であれば、オチに向けて更に熱を帯びるタイミング、映画であれば序盤の伏線を回収しようとするタイミングですね。大事なところです。
何が言いたいかといいますと記事の内容に非常に迷いました。迷ったのですが、あくまで私はエンジニアなので技術中心に書いていきたいと思います。
簡単な話、マイコンを使って飼っているうさぎの写真を撮ってみました。
Spresenseとは
まず、Spresense???となっている方々が多いのかなと思うので↓
Spresenseとは、所謂マイコンです。
SONYが2018年にリリースした開発用ボードで、低消費電力マルチコアプロセッサ「CXD5602」が搭載されています。SONYというとCMOSイメージセンサーの印象が強いですが、機能てんこ盛りなマイコンも出している何て素晴らしい多角経営なのでしょうか!(違う)
余談ですが、SONYがリリースしている公式SpresenseFAQで
Q:Spresense の名前の由来は何ですか?
A:Spresense の名称に特に意味はありません。
とありました笑
プロダクトやサービス名のユニーク&キャッチーさは、非常に重要だと思うので、この世にない言葉を新たに生み出せる方々は改めてすごいと思います。あ、話が逸れました。
Spresenseで出来ること
Spresenseには以下の機能などが標準搭載されています。
ARM Cortex-M4Fを6つ搭載した低消費電力マルチコアCPU搭載
ニューラルネットワークコンソールに対応したAI機能
ハイレゾリューションオーディオの入出力
カメラインターフェース搭載
「みちびき」に対応したGPSモジュール内蔵
LTE低消費電力通信(LTE-M)に対応(LTE拡張ボードが必要)
普通のマイコンとは、少し異色なモジュールであることが分かるかなと思います。特にNNCやハイレゾなどはSONYらしいなと思います。そして、メインボードに周辺機器であるカメラモジュールやWiFiモジュールを組み合わせることで、出来ることが広がります。
なぜはじめたか
私は、現在実家から離れたところに住んでおり、実家のうさぎ(以下、ぴのくん)が見たいときは、カメラロールを振り返るか、実家に住んでいる母に写真を撮ってもらう等の必要があります。母は、写真のセンスが非常に独特のため、私が満足するぴのくんの写真を手に入れるまで少し苦労します。「いや、Amazon Echo show使えww」は言わないでくれると助かります笑
そこで、Spresense+カメラモジュール+WiFiモジュール+機械学習によって、
ぴのくんの撮影・映え写真の抽出・送信の自動化
を実現したいなと思い、開発しました。
システム構成
Spresense メインボード
Spresense用カメラボード(撮影用)
Spresense 拡張ボード(SDカードの読み書きに必要)
Wi-Fi add-onボード「ESP-WROOM-02」(データ送信用)
このシステムは
①撮影パート→ぴのくんを撮影する
②機械学習パート→ちゃんと撮影されているもののみを抽出する
③送信パート→抽出された写真をPCへ送信
の大きく分けて3つの機能パートに分類されます。
①撮影パート
Spresenseは機能が豊富かつライブラリが豊富なので、これを活用しない手はありません。公式チュートリアルを参考に、
Spresenseカメラで撮影し、JPEG 画像を microSD カードに保存
を実装しました。
撮影間隔は、バッテリーの消費電力やSDカードの容量などを考え、5秒に1シャッターくらいの間隔に設定しました。
②機械学習パート
撮影パートで撮った写真の中から、ブレたり近すぎて不明瞭な写真を間引くする必要があるので、学習済みモデルを作成しました。
まず、データセットの作成です。
・元々あったぴのくんの写真75枚
・ネットで拾ったぴのくんに似たフォーン系ネザーランドドワーフの写真80枚
を使ってサイズを合わせ、データセットの作成準備は完了です。
次にNeural Network Consoleを使い、モデル作成です。
Neural Network Consoleとは、Sonyが開発したノーコードで深層/機械学習が行えるアプリケーションです。クラウド版とプリミティブ版があり、プリミティブ版は日本国内でのみダウンロード可能で無料で使えます。
Input,CONFIGなど諸々設定します。この辺に関しては長くなるので割愛します。
結果として、Accuracyは0.8791でした。
ぼちぼちのレベルだとは思うのでこれを学習済みモデルとし、Spresenseに書き込んでいきます。
③送信パート
すみません、ここは未実装です…間に合いませんでした…
本当はSpresense WiFiモジュールを使って、Googleフォトなどのクラウドサービスに自動送信や、良い写真をLINE送信してくれるようにしたいのですが中々そこまでは出来ていません。技術力が足りない!!
とりあえず、SDカードに保存orPCを付けっぱなしにしておいてただただ送受信することで現在は対処しています。
結果と今後
家のリビングにぴのくんは生息しているので、良き場所を探しながら撮影を一日続けました。上手くいってそうな写真を載せます。
そんな感じで雑に作った割には良いものができた気がします。
一方、課題もまだまだ沢山あります。
デザイン面での課題
①筐体
実家にSpresenseを持って帰ったとき、母&姉から「ぴのくんがかじりそうで怖い!」と言われました。その通りです。顧客視点、うさぎ視点が足りていませんでした。カメラモジュールの配線なども美しくないので3Dプリンタなどを使ってうまく安全&綺麗にパッケージ化したいところです。
②ネーミング
伏線回収ではないですが、ネーミングに困っています。何かユニーク&キャッチーなものを考えたいものです。
機能面での課題
①送信機能部分の改良
便利&開発のしがいがある機能にしたいなと思いながら触れていません。
②学習済みモデルの改良
今回のモデルはSONYからのライブラリを利用し、パラメータをいじっただけに過ぎないので自分でより良いモデルを構築したいなと思いました。
また、データセットに関しても写真の枚数はもう少し増やしたいところです。
パッと思いつくだけでこれだけあるのでまだまだやりがいはあるかなと思います。時間があるときに少しずつ改良していきたいですね。
結論、私から読んでくださった皆さんに言いたいことは
①うさぎはかわいい
②電子工作は面白い
③漫才は難しい(昨日M1だった影響です)
ということです。少しでも伝われば幸いです。
さいごに
Arumon Advent Calendar 2021 の12/20の記事として、
「Spresenseを使って、ペットの写真を撮影・機械学習による選別・送信するシステムを作ってみた」
を皆さんにご紹介しました。
個人的な思いですが、Arumonに入らせていただきながら、先輩・同期からgiveされ続けている状態なので、少しでも恩返していきたいなと思っています。これからも少しずつ頑張っていきますので、宜しくお願い致します。
以上、Arumonの小銭でした。
最後まで読んでくださり、ありがとうございました。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?