AIカメラで簡単に生活を便利にする #TMMF2020

03089d9ce3bc29cb15ccb3dc5017b900?s=47 ksasao
February 15, 2020

AIカメラで簡単に生活を便利にする #TMMF2020

Tsukuba Mini Maker Faire 2020 のプレゼン資料です。

03089d9ce3bc29cb15ccb3dc5017b900?s=128

ksasao

February 15, 2020
Tweet

Transcript

  1. AIカメラで簡単に生活を 便利にする ミクミンP @ksasao Tsukuba Mini Maker Faire 2020 #TMMF2020

    2020/2/15
  2. そろそろ人間が把握できなくなる量のデータが ご家庭でも処理できるようになってきました 2

  3. 人の寿命 • 人の一生は 約3万日 • 人の一生は 2.5G秒 割と短い。 3

  4. 機械の処理能力 https://twitter.com/ksasao/status/966991586356731909 https://arxiv.org/abs/1612.08242 https://twitter.com/ksasao/status/941326622178738176 •55.8億回というと多い気がする •5.58G回というと少ない気がする (2018年) 4

  5. M5StickV https://twitter.com/ksasao/status/1151984910703288321 M5Stack 社製の AIカメラ 0.8TOPS (8000億回/秒) 3000円 5

  6. もうだいたい機械でいい気がする 6

  7. そうだ、おうちを機械化しよう 7

  8. 家の中で何が起こっているかを知る 8

  9. ドア開閉センサ • TWE-Lite を利用 • 電池交換をほぼ意識しなくて済む • ドア開閉だけでなく電池の電圧も わかる ボタン電池1個で数年持つ無線ドア開閉センサを作る

    https://qiita.com/ksasao/items/1a221843894fdb57677b 9
  10. ドア開閉センサを温度センサとして使う お風呂場のドア開閉センサから • お風呂を沸かした時刻 • シャワーを浴びた時刻 • お風呂に入ったかどうか などがわかる 10

  11. おうち全体の消費電力(約3秒毎, 200万件) • aaa 2016 2017 2018 11

  12. おうち全体の電力消費パターン • 家電ごとに使用電力のパターン があるので分離できる 12

  13. おうちの温度分布 https://twitter.com/ksasao/status/894066708545101825 西日で高温 エアコンで 快適 13

  14. 効果 • 運動せずに半年で5kg痩せた • 体重計にのらないとしつこく言ってくる • データが可視化されると食べる量を意識する ようになる • 現在も一定体重を維持

    14
  15. 効果 • 買い物のし忘れが減った • こまめにメモを(音声で)とるようになった • 家に帰ったときにほっとするようになった • 帰宅タイミングに合わせて電気がつくなど •

    よく眠れるようになった/朝起きれるようになった • 深夜に強制的に電気が消される/朝は電気やテレビがつく 生活の質が大きく向上 15
  16. きょうはAIカメラ Brownie のおはなし https://github.com/ksasao/brownie 16

  17. Brownie はこんなことができます 17

  18. じゃんけんをちょっとずつデバイス内で学習 していく様子 https://twitter.com/ksasao/status/1161978500091301893 1枚の学習画像だけでもそれなりに動作 18

  19. デバイス単独で動きます (6700mAhのモバイルバッテリーで22時間) https://twitter.com/ksasao/status/1160532010856665089?s=20 19

  20. 2種類の画像の中間値もわかります https://twitter.com/ksasao/status/1185909464471232512?s=20 20

  21. 画像認識した結果でコマンドが叩けます (Windows/Mac/Linux/RaspberryPiに対応) • Windows バイナリ版 • Node.js 版 があります。 https://github.com/ksasao/brownie

    21
  22. Wi-Fi でつながります 22

  23. Arduino などにもつながります (UART) 4 pin cable 23

  24. この水色のデバイスは何? 24

  25. M5StickV • Kendryte K210 • RISC-V プロセッサ (64bit x 2)

    • KPU (0.8TOPS) • 液晶モニタ (240x135px) • LED(RGBW) • スピーカー • ジャイロ・加速度センサ • TFカードスロット (microSD) •3000円 25
  26. Canaan Creative社 Kendryte K210 https://kendryte.com/ 26

  27. 開発 • MaixPy (micropython ベース, NumPyなどは使えない) • カメラなどが簡単に使える。Tiny YOLO 向けの

    API あり。 • 統合開発環境 MaixPy IDE (Sipeed社製) 27
  28. 推論の実行 https://bbs.sipeed.com/t/topic/682 カメラから画像取得 モデル読み込み 推論 28

  29. Tiny YOLO で物体検出するコード https://bbs.sipeed.com/t/topic/683 YOLO用の初期化 推論 29

  30. 推論は簡単っぽい 学習は? 30

  31. どうやって学習するか • MaixPy では重みの更新はできない • NumPy (最近のファームウェアで一部対応), SciPy が使えない •

    アルゴリズムを手書きすると実行速度が遅い • ネイティブコードのモジュールを読み込む機能は(現在は)ない → MobileNet を特徴抽出器として利用して k-NN (k近傍法) で推論 31
  32. https://sites.google.com/view/learning-with-limited-data https://drive.google.com/file/d/1O3CxWtaytBfwjj50WprXXWwqMiZy-Kyq/view 32

  33. k-NNを利用した推論のイメージ 通常の機械学習 今回の実装 半径を実験的に決定は 33

  34. k-NN (k-Nearest Neighbor) を利用した オフライン転移学習 https://twitter.com/ksasao/status/1161978500091301893 入力 画像 特徴 抽出層

    全結合 層 MobileNet v1 softmax 認識結果 1000クラス 十分に学習済みのモデルなら このあたりには、画像をいい 感じに抽象化したベクトルが 出力されているはず・・・ 深層学習の入門記事などでは 全結合層・softmax 部分のみ 変更して再学習することが多い (学習データ↑, 計算時間↑) 34
  35. k-NN (k-Nearest Neighbor) を利用した オフライン転移学習 https://twitter.com/ksasao/status/1161978500091301893 入力 画像 特徴 抽出層

    全結合 層 MobileNet v1 softmax 認識結果 1000クラス kpu.set_layers(task,29) 29層目まで計算した結果を取り出す 35
  36. k-NN (k-Nearest Neighbor) を利用した オフライン転移学習 https://twitter.com/ksasao/status/1161978500091301893 入力 画像 特徴 抽出層

    特徴抽出層の出力 (768次元ベクトル) をそのまま保存 学習時 グー チョキ パー 768次元ベクトルを可視化 1x768 36
  37. k-NN (k-Nearest Neighbor) を利用した オフライン転移学習 https://twitter.com/ksasao/status/1161978500091301893 入力 画像 特徴 抽出層

    学習した特徴ベクトル群と 入力画像の特徴ベクトルの ユークリッド距離をもとめ 最も近いものを返す (k=1) 推論時 グー チョキ パー 768次元ベクトルを可視化 1x768 37
  38. 2種類の画像の中間値の推定 https://qiita.com/ksasao/items/6d6bcac4c5e92fa692a2 境界 特徴量空間に マッピング 特徴量空間に マッピング 38

  39. k-NN (k-Nearest Neighbor) を利用した オフライン転移学習 https://twitter.com/ksasao/status/1161978500091301893 良い点 • 学習にかかる時間がほぼゼロ (特徴ベクトルを保存するだけ)

    • 1枚学習するだけでも動く • 学習・推論が素早く試せる 悪い点 • 汎化性能が低い • とはいえ位置・回転・照明条件などにはそれなりにロバスト 39
  40. 応用 • 既存のセンサを置き換えられる • ドア開閉センサ (磁気センサ) • お風呂センサ (水位センサ) •

    ボスが来たセンサ (光センサなど) • 盗難センサ (重量センサなど) • … • 人間がパッと見てわかる程度の違いがあればわりと認識可能 • 部屋の散らかり具合を 0 ~ 100 の数値で表現 • … Brownie の 画像認識で 置き換え 40
  41. 性能が物足りないと感じてきたら • M5Stack公式サイトが無料の転移学習サービスを提供 https://docs.m5stack.com/#/en/related_documents/v-training 41

  42. もちろん自分でモデルを作ることも可能 Keras (*.h5) TensorFlow Lite (*.tflite) tflite_convert KPU (*.kmodel) NNCase

    (ncc) • 最終的なモデルサイズで 2.5MB 程度が上限値 • サポートしている Operator に制約があるので注意 https://github.com/kendryte/nncase 42
  43. ためしてみたい? 43

  44. 入手先 スイッチサイエンスで売り切れていても、 他の電子パーツ店(マルツ、共立エレ ショップ)などでは在庫があることも https://eleshop.jp/shop/g/gJ7C314/ https://www.marutsu.co.jp/GoodsDetail.jsp?salesGoodsCode=1555934 44

  45. M5StickV を始める前に • 動作確認済み microSD カードを入手 認識しないカードがかなり多い 推奨は Lexar の

    microSDHC 32GB (記憶容量も合わせること) 45
  46. M5StickV が届いたら • 適切なファームウェアを kflash_gui で書き込み • https://github.com/sipeed/kflash_gui • 新しければ動くというものでもないので適切なものを選択

    • TMMF2020 に出展している時点の Brownie のファームウェアは、 http://dl.sipeed.com/MAIX/MaixPy/release/master/maixpy_v0.5.0_9_g8eba07d の maixpy_v0.5.0_9_g8eba07d_m5stickv.bin 46
  47. Browine https://github.com/ksasao/brownie Tiny YOLO v2 face detection + Tiny YOLO

    v2 object detection (20-class) MobileNet v1 (1000-class) MobileNet v1 (feature extraction) + k-Nearest Neighbor (offline training) Brownie Brownie 1000 Brownie Learn 47
  48. ちなみに • かなりセンシティブなことが分かる • 人間が忘れてしまう細かなことも機械は覚えている • 長期的な傾向もわかる • 解析されたデータを直視するのはつらい・ヤバい •

    その人のダメな部分も可視化される それをやんわり伝えるためのキャラクターの活用 これはまた別なところで・・・ 48
  49. まとめ • Brownie は簡単に使えるAIカメラ • 画像認識でおうちを便利に ミクミンP @ksasao https://github.com/ksasao/brownie 49