Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

ドア開閉センサを温度センサとして使う お風呂場のドア開閉センサから • お風呂を沸かした時刻 • シャワーを浴びた時刻 • お風呂に入ったかどうか などがわかる 10

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

効果 • 買い物のし忘れが減った • こまめにメモを(音声で)とるようになった • 家に帰ったときにほっとするようになった • 帰宅タイミングに合わせて電気がつくなど • よく眠れるようになった/朝起きれるようになった • 深夜に強制的に電気が消される/朝は電気やテレビがつく 生活の質が大きく向上 15

Slide 16

Slide 16 text

きょうはAIカメラ Brownie のおはなし https://github.com/ksasao/brownie 16

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Wi-Fi でつながります 22

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

M5StickV • Kendryte K210 • RISC-V プロセッサ (64bit x 2) • KPU (0.8TOPS) • 液晶モニタ (240x135px) • LED(RGBW) • スピーカー • ジャイロ・加速度センサ • TFカードスロット (microSD) •3000円 25

Slide 26

Slide 26 text

Canaan Creative社 Kendryte K210 https://kendryte.com/ 26

Slide 27

Slide 27 text

開発 • MaixPy (micropython ベース, NumPyなどは使えない) • カメラなどが簡単に使える。Tiny YOLO 向けの API あり。 • 統合開発環境 MaixPy IDE (Sipeed社製) 27

Slide 28

Slide 28 text

推論の実行 https://bbs.sipeed.com/t/topic/682 カメラから画像取得 モデル読み込み 推論 28

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

どうやって学習するか • MaixPy では重みの更新はできない • NumPy (最近のファームウェアで一部対応), SciPy が使えない • アルゴリズムを手書きすると実行速度が遅い • ネイティブコードのモジュールを読み込む機能は(現在は)ない → MobileNet を特徴抽出器として利用して k-NN (k近傍法) で推論 31

Slide 32

Slide 32 text

https://sites.google.com/view/learning-with-limited-data https://drive.google.com/file/d/1O3CxWtaytBfwjj50WprXXWwqMiZy-Kyq/view 32

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

k-NN (k-Nearest Neighbor) を利用した オフライン転移学習 https://twitter.com/ksasao/status/1161978500091301893 入力 画像 特徴 抽出層 学習した特徴ベクトル群と 入力画像の特徴ベクトルの ユークリッド距離をもとめ 最も近いものを返す (k=1) 推論時 グー チョキ パー 768次元ベクトルを可視化 1x768 37

Slide 38

Slide 38 text

2種類の画像の中間値の推定 https://qiita.com/ksasao/items/6d6bcac4c5e92fa692a2 境界 特徴量空間に マッピング 特徴量空間に マッピング 38

Slide 39

Slide 39 text

k-NN (k-Nearest Neighbor) を利用した オフライン転移学習 https://twitter.com/ksasao/status/1161978500091301893 良い点 • 学習にかかる時間がほぼゼロ (特徴ベクトルを保存するだけ) • 1枚学習するだけでも動く • 学習・推論が素早く試せる 悪い点 • 汎化性能が低い • とはいえ位置・回転・照明条件などにはそれなりにロバスト 39

Slide 40

Slide 40 text

応用 • 既存のセンサを置き換えられる • ドア開閉センサ (磁気センサ) • お風呂センサ (水位センサ) • ボスが来たセンサ (光センサなど) • 盗難センサ (重量センサなど) • … • 人間がパッと見てわかる程度の違いがあればわりと認識可能 • 部屋の散らかり具合を 0 ~ 100 の数値で表現 • … Brownie の 画像認識で 置き換え 40

Slide 41

Slide 41 text

性能が物足りないと感じてきたら • M5Stack公式サイトが無料の転移学習サービスを提供 https://docs.m5stack.com/#/en/related_documents/v-training 41

Slide 42

Slide 42 text

もちろん自分でモデルを作ることも可能 Keras (*.h5) TensorFlow Lite (*.tflite) tflite_convert KPU (*.kmodel) NNCase (ncc) • 最終的なモデルサイズで 2.5MB 程度が上限値 • サポートしている Operator に制約があるので注意 https://github.com/kendryte/nncase 42

Slide 43

Slide 43 text

ためしてみたい? 43

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

M5StickV を始める前に • 動作確認済み microSD カードを入手 認識しないカードがかなり多い 推奨は Lexar の microSDHC 32GB (記憶容量も合わせること) 45

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

ちなみに • かなりセンシティブなことが分かる • 人間が忘れてしまう細かなことも機械は覚えている • 長期的な傾向もわかる • 解析されたデータを直視するのはつらい・ヤバい • その人のダメな部分も可視化される それをやんわり伝えるためのキャラクターの活用 これはまた別なところで・・・ 48

Slide 49

Slide 49 text

まとめ • Brownie は簡単に使えるAIカメラ • 画像認識でおうちを便利に ミクミンP @ksasao https://github.com/ksasao/brownie 49