ちょっと前に、M5StickVを手に入れてました。
AIカメラが付いており、小型ながら単独でディープラーニングを用いた画像認識が出来るスゴいやつです。
デフォルトで人の顔を認識するようになってるのですが、せっかくなので自分が設定したものを認識できるようにしたいなーってことで、痛み分けまで持ち込めたので記録を残しておきます。
- やりたい事
- 用意するもの
- V-Trainingを使えば素人でも画像認識できる!
- Kflashでファーム焼き
- BootコードをM5StickV内SDカードへ移動
- 撮影データをアップロード
- 結果
- エラー集
- 参考にさせていただいたページ
やりたい事
最近、ムスコが「カンカン踏切セット」を欲しがっています。
このセット、踏切にプラレールが近づいたときにアナウンスが流れるそうなんですが、新幹線・特急・SLの3パターンのアナウンスがあるんですよね。CM見てると、プラレールの種類に応じてアナウンスが変わってるように見えます。さすが令和にもなると、子供のおもちゃでも画像認識できるのか!
で、現実は↓でした。
今は令和でしょ?画像認識を使ってハイテク感を見せて欲しかった。
でもM5StickVなら簡単に画像認識できるのでは?新幹線とか在来線の区別とか、なんなら車両ごとを分けて認識できるのでは?
これがゴールです。
用意するもの
- M5StickV
- microSDカード
- モバイルバッテリー
M5Stack M5StickV K210 AIカメラ64ビットRISC-V MPU6886チップ、16MフラッシュST7789 IPS LCD
- 出版社/メーカー: M5Stack
- メディア: エレクトロニクス
- この商品を含むブログを見る
Transcend マイクロSDカード 16GB UHS-I Class10 Nintendo Switch/3DS 動作確認済 TS16GUSD300S-AE【Amazon.co.jp限定】
- 出版社/メーカー: トランセンドジャパン
- 発売日: 2018/08/31
- メディア: Personal Computers
- この商品を含むブログを見る
本体はAmazonよりスイッチサイエンスさんが安いです。
microSDは相性で使えたり使えなかったり、みたいです。@ksasao さんが動作確認済みのSDをリストにしてくれているので、自分はそれを参考にしました。一応、上に貼ってるアフィのSDは自分が使って問題なかったものです。
M5StickV動作確認済み microSD - Google スプレッドシート
M5StickVにはバッテリが積んでありますが、単独だと1分もたたずに落ちてしまうので、モバイルバッテリーを繋いで使うのが基本となります。何でも良いので用意しておきましょう。
V-Trainingを使えば素人でも画像認識できる!
公式で、画像撮ってアップすれば学習済みデータを吐き出してくれる、ありがたいサービスを用意してくれています。その名もV-Training。さすが令和の時代。
M5Stack - A series of modular stackable development devices
上のリンクにファームを焼くところから書いてあります。基本コレを読めばOKですが、自分もやったこと書いておきます。
Kflashでファーム焼き
V-Trainingのリンクに、ファームと書き込みツール(Kflash)のダウンロード先があります。
WindowsだとEasyLoaderを使って焼くのがシンプルそうですが、先にKflashを使って焼いてしまいました。まぁ、KflashならMacでも大丈夫なので、応用が効くってことで。
自分は、下記の設定で焼きました。
BootコードをM5StickV内SDカードへ移動
公式のページからコードその他が入ったzipを落として解答し、microSDに入れます。
で、それをM5StickVに挿入して起動すると認識させる物体を撮影するモードに入ります。撮影ボタン、Classの切り替えボタンは起動時に出てくる案内のとおりです。
下記のように、学習させたいモデルのみを写した写真を1class35種類撮っていきます。
撮影してる時はわからなかったけど、レンズかセンサにゴミが付いてますね。。。
撮影データをアップロード
撮影後にSDを見てみると、train, vaildの2つのフォルダが出来ており、中には撮影した写真がClassごとのフォルダの中に格納されています。(vailedでもvalidでもないのか...)
間違った写真がないか確認したら、train, vaildを同じ階層のままZipに圧縮しましょう。
Zipを圧縮したら下記ページからアップロードします。結果はメールで送られてくるので、受け取るためのアドレスを記載しておきましょう。
学習が終わり、エラーが無ければ学習状況を示す(?)データと共に、学習済みデータとサンプルコードが送られてきます。
これらを再びmicroSDに入れて、M5StickVに差し込んで起動すれば、完成です。
結果
何となく、3種類とも認識出来ています。
ジェームスをトーマスと誤認。他にも角度や画角によっては認識が甘いところもあり、撮影データに工夫が必要みたいですね。とはいえ、こんなに手軽に画像認識できるのは素晴らしい!
撮影するときの背景とか、明るさとか、取る角度と種類とか。工夫すべき点は色々ありそうです。どのパラメータが結果に効いてくるのか、じっくり実験計画法やりますかね。精度を上げるためのアドバイスは随時募集中です。
エラー集
撮影データのアップロードに失敗する
タイミングが悪いのか、度々アップロードに失敗しました。何度かやってるうちにアップロード出来るので、気にせず上げましょう。
失敗メールが来た
こんなメールが2度送られてきました。
1度目は、train, vaildフォルダの上にもう一階層作ってからZip圧縮したための失敗です。
2度目は、そもそも撮影データが各35枚に満たなかった事による失敗です。
撮影モードのとき、撮影枚数が35/35となっているので十分かと思いましたが、34枚しかデータがありませんでした。撮り始めが1/35から始まるので、35/35は35枚撮り終わったことを意味するわけではないんですよね。
参考にさせていただいたページ
M5Stack - A series of modular stackable development devices
M5StickVで超お手軽エッジAI画像認識 - karaage. [からあげ]
https://colab.research.google.com/drive/1mirG8BSoB3k87mh-qyY3-8-ZXj0XB6h6
V-TrainingでM5stickV用学習ファイルを作った話|設備のマニアどっとこむ
brownie/README.ja.md at master · ksasao/brownie · GitHub
こんな記事も書いています。