趣味TECHオンライン | 趣味のモノづくりを応援するオンラインメディア

趣味のモノづくりを応援するオンラインメディア

M5StickVで姿勢チェッカーを作ってみた


f:id:tokyo_ff:20191231035401j:plain

M5StickVで姿勢が悪くなったことをお知らせしてくれる姿勢チェッカー作りました。

 

<投稿者:Katsu Shun @katsushun89

趣味で電子工作とか身の回りをちょっと便利にするものや、何の役にも立たないものを作って遊んでいます。

twitter.com

 

何を作ったか

f:id:tokyo_ff:20191231035736j:plain

仕事中にPC操作しながら座っていると、だんだん姿勢が悪くなってしまいます。
なかなか気づけないので、姿勢が悪くなったことをお知らせしてくれる姿勢チェッカーをM5StickVを使って作りました。具体的には、カメラで悪い姿勢を検知すると、LEDが青く点灯し、それが5秒以上継続すると音声で「姿勢が悪いようです」とお伝えしてくれます。

みんなのM5Stack入門

みんなのM5Stack入門

  • 作者:下島 健彦
  • 出版社/メーカー: リックテレコム
  • 発売日: 2019/11/08
  • メディア: 単行本(ソフトカバー)
 

 

固定するためのケースのモデリング

M5StickVはそのままだと棚などに固定しづらかったので、Fusion360でケースをモデリングして、3Dプリンタで出力しました。取っ手的な部分でひっかけられるような構造にしています。

f:id:tokyo_ff:20191231035838j:plain

f:id:tokyo_ff:20191231035849j:plain

Fusion 360 マスターズガイド ベーシック編 改訂第2版

Fusion 360 マスターズガイド ベーシック編 改訂第2版

 

 

データ取りと学習

M5StickVはKPUというNeural Network用のプロセッサが載っています。これはTensorflowなどを用いて作った機械学習のモデルをM5StickV上で動かすことが出来ます。

TensorFlowはじめました3 Object Detection ─ 物体検出 (NextPublishing)

TensorFlowはじめました3 Object Detection ─ 物体検出 (NextPublishing)

  • 作者:有山 圭二
  • 出版社/メーカー: インプレスR&D
  • 発売日: 2018/01/26
  • メディア: Kindle版
 


そのあたりは色々な方や公式が情報出しているので割愛しますが、今回はGoogle colabratoryで学習を実行しました。データ取りと学習のざっくりやったことはこういう流れです。

  1. M5StickVで10秒おきに静止画を撮影しSDカードに保存するコードを書く
  2. 仕事中に自分の姿が写るような位置にM5StickVを固定し、自動で撮影し続ける
  3. 帰ってから画像データを確認、クラス分け(ディレクトリを良い姿勢・悪い姿勢・離席中の3つに分ける)
  4. 分けた画像データをデータセットとしてGoogle colab上でMobileNetの転移学習にかける
  5. 5.正しく分類出来ていなかったら、2からやり直し


5は混同行列(confusion matrix)という正しく分類できているか評価するためのMatrixをみて判断します。最終的に、自分に非常に近い位置にカメラを設置することで良い姿勢と悪い姿勢を区別することが出来ました。比較すると、悪い姿勢の時だけ自分の顔が部分的にでも写っているような画像になっていました。

f:id:tokyo_ff:20191231040006j:plain

f:id:tokyo_ff:20191231040013j:plain

やってみてわかったこと

初めて機械学習というものをやってみましたが、コードはほぼ書かずに画像データだけディレクトリに分けて学習にかけるだけで出来たのでかなりお手軽でした。どちらかというと学習自体よりも、今回気づいたのは、自分が見分けたいものを見分けられるためにはどういうデータセットを用意しなければならないかということです。


最終的に座った自分に非常に近い位置にカメラを配置することで見分けることが出来ましたが、数日間位置に関しては試行錯誤しました。(といっても位置を変えてデータ取って自宅に帰って学習かけてハイだめやり直しーってなるだけなので、そこまで作業時間はかかっていないですが)

 

また、取り組む、見分けたい問題も、必ず成功しなくても許せるようなものにした方が良さそうです。100%見分けるというのはなかなか厳しそうなのでまあ失敗しても許せるよねってレベルのものにするのが、趣味レベルではオススメです。他にもM5StickVの公式でV-Trainingという画像をアップロードするだけで、学習済みのModelを提供してくれるクラウドサービスもありますので、お気軽に試してみてください。

 

ソースコード

M5StickVのソースコードはこちらのgithubリポジトリに置いてあります。

github.com

 

 

<投稿者:Katsu Shun @katsushun89

趣味で電子工作とか身の回りをちょっと便利にするものや、何の役にも立たないものを作って遊んでいます。

twitter.com