More Related Content
Similar to ITフォーラム2022 先端IT活用推進コミュニティ(4-2) (20)
ITフォーラム2022 先端IT活用推進コミュニティ(4-2)
- 1. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
ITフォーラム2022
先端IT活用推進コミュニティ
『空気を読む家』
Well-being 測定技術編
2022/02/04
クラウド・テクノロジー グループ
エクスウェア株式会社 荒本道隆
- 2. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
2010年~2021年:先端IT活用推進コンソーシアム
■背景/活動目的(最終年度)
11年目の最後の年は、気象庁APIの運用で蓄積された7年半分のアクセスログとデータの、可視化や
データ活用について検討する。← 全然できなかった
また、これまで通り、クラウド全般、IoT、量子コンピューティング、AIについても取り組んでい
く。 ← できた
広範囲の各要素技術に対し、部会参加者が「知っている」ではなく「使ったことがある」「人に教
えることができる」と言えるレベルを目指す。← 2件できた
2021年~:先端IT活用推進コミュニティ
『空気を読む家』のニーズに新しい技術が適合できるかを評価する
「適合させる」が目的ではなく、「新しい技術を使ってみる」が目的
→ そのため、無理矢理感がある場合が多々あり
クラウド・テクノロジー活用部会とは
2
- 3. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
これまで、データ収集、蓄積&演算、可視化を実装してきた(赤字は2020年度の成果)
クラウド部会と『空気を読む家』の関係
3
入力 出力
カメラ
・玄関で訪問者を識別
・ベットで寝てる人、睡眠の深さ
・姿勢検出と物体検出
・サーモグラフィで高温注意検出
センサ
・音声認識、話者識別
・冷蔵庫内のプリンを管理
・BLEタグで置き傘を管理
・屋内での人の位置を把握
外部データの取り込み
・気象庁防災情報XML
・東京公共交通オープンデータ
統計&AI
・書籍の輪読
・クラスタリング
Webサイト
・データの可視化
量子コンピュータ
・スケジュール最適化
蓄積&演算
大量データ
・RDF/SPARQL
・Amazon S3 Select
プロジェクタ
・危険度を投影
- 6. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・M5StickC Plus:3,058円
選択理由
使い慣れている
『M5StickC』の方が安価だけど、在庫がなかった(2021年12月時点)
LCDに、様々な情報を表示できる
工作が不要、IoTを知らない人が見ても不安にならないデザイン
背面の磁石で、冷蔵庫に張り付く
使用する加速度センサ
6
製品特徴
・ESP32ベースでBluetooth 4.0とWi-Fiが利用可能
・インターフェース
・ボタン x 2
・ブザー
・ IR送信機
・赤色LED
・マイクロフォン
・ 6軸IMU
・ RTC
・ PMIC(バッテリ管理IC)
・ 1.14 インチ 135x 240 LCD
・ 120mAh バッテリー内蔵
・機能拡張が可能なGrove互換ソケット
https://www.switch-science.com/catalog/6470/
- 7. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・スリッパ、家具、各部屋のドアに加速度センサを貼り付ける
スリッパで誰か?を識別
スリッパの加速度+冷蔵庫の加速度で、誰が冷蔵庫を開けたか?が分かる
加速度の強弱で、感情を推測
機械学習で推測できないだろうか?
検証用システムver1
7
- 9. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・冷蔵庫に貼って、OPENとCLOSE時を測定
内蔵磁石で張り付いた。勢いよく開閉しても問題無し
OPEN時:開け方によって差が出そう
CLOSE時:磁力で「バタン」と閉まるので早い
課題:約90分で勝手に電源が切れた
使ってみたら
9
OPEN時
CLOSE時
開けていた時間
- 10. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・消費電力:約80mAh、内蔵バッテリー:120mAh → 稼働時間:約90分
使っていない機能をOFFにすれば、稼働時間を少しは延ばせる
LCD(画面)の明るさを落とすことで、120分までは延ばせそう
→ 稼働時間を延ばすために、モバイルバッテリーを追加
重くて実用性に難があるけど、それはいったん無視
『M5StickC Plus』の稼働時間についてー1
10
https://lang-ship.com/blog/work/m5stickc-power-saving/
参考:M5StickCの消費電力
- 11. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・ダイソーのモバイルバッテリー(500円)を追加
バッテリー容量:2480mAh(4000mAh)
稼働時間を試算:90分x(2480/120)=1860分=31時間
・しかし、約3時間で電源が切れてしまった
モバイルバッテリーには電気が75%以上残っていた
稼働時間を延ばすために、LCD(画面)を暗くしていたため
モバイルバッテリーの「AUTO POWER OFF」(保護機能)で、給電がストップ
・LCD(画面)の明るさを常に最大に設定
「AUTO POWER OFF」(保護機能)の閾値を上回り、給電を継続
→ 30時間10分、連続稼働した
「1分間で1秒間だけ明るさを最大」では、給電がストップ
別のモバイルバッテリーではこれでうまくいった。ものによって判定基準が違うらしい
・確実なのは「AUTO POWER OFF」が無効なモバイルバッテリー
例: IoT機器対応モバイルバッテリー cheeroCanvas 3200mAh(3,035円)
https://www.switch-science.com/catalog/2618/
例:「定電流モード」付きのモバイルバッテリー ※未検証
『M5StickC Plus』の稼働時間についてー2
11
- 12. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・冷蔵庫の使用状況を加速度センサから推測
OPEN/CLOSE?
どの段を開けたか?
誰が開けたか? ※加速度だけで
その時の感情は?
・動作確認してみたら
二段目と三段目は、OPEN時の反応が極端に弱かった
通常時:0~41
一段目のOPEN時:150~600
二段目のOPEN時:最大53
三段目のOPEN時:最大47
→ 一段目と四段目だけを対象にする
・おことわり
OPENとCLOSEはZ軸での判定が確実だけど、あえて機械学習で
全扉にセンサを付ければ簡単だけど、あえて機械学習で
スリッパのデータを参照すれば分かるけど、あえて機械学習で
3秒間の加速度データで機械学習を
12
飲み物、食材、
オヤツ
氷、アイスクリーム
冷凍食品
野菜室
- 13. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・PyCaretとは
機械学習(AutoML)ができるPythonのライブラリ
MITライセンス
Google Colab上でも動作する
PyCaret でOPEN/CLOSEを分類ー1
13
https://openstandia.jp/oss_info/pycaret/
https://pycaret.org/
- 14. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・冷蔵庫のOPEN/CLOSE時の加速度データを記録
一段目に対して、以下を行う
扉をOPEN → 3秒待つ → 扉をCLOSE → 5秒待つ → 最初に戻る
※100回繰り返す
PyCaret でOPEN/CLOSEを分類ー2
14
一段目の最初の5回分
OPEN
CLOSE
- 15. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・加速度データをCSV形式で保存
1行目:ヘッダ
2行目以降:データ
1カラム目:OPEN/CLOSE
2カラム目以降:10msecごとの加速度の絶対値
PyCaret でOPEN/CLOSEを分類ー3
15
action,door,data1,data2,data3,data4,data5,data6,data7,data8,data9,data10,.....
OPEN,DOOR1,8,11,7,8,6,8,7,2,7,11,13,15,4,5,3,7,5,2,5,6,5,4,4,8,8,7,3,12,19,…..
CLOSE,DOOR1,12,19,3,9,10,6,6,1,9,11,2,3,6,12,15,7,8,2,7,16,10,8,3,11,8,12,.....
OPEN,DOOR1,11,12,5,4,6,5,9,14,5,2,4,10,8,7,16,10,3,9,11,8,10,8,5,8,8,7,8,7,.....
CLOSE,DOOR1,10,11,16,10,13,19,6,9,3,10,6,6,3,7,11,12,9,4,8,11,6,7,9,9,6,3,.....
OPEN,DOOR1,10,11,5,3,3,5,12,5,4,6,7,8,14,10,12,4,6,3,3,2,1,13,15,7,7,16,8,.....
CLOSE,DOOR1,6,8,11,15,9,2,2,6,8,5,12,9,8,6,10,11,2,13,12,7,5,2,7,12,13,7,.....
OPEN,DOOR1,5,7,5,10,9,7,7,5,4,4,11,11,13,12,3,7,6,7,8,4,9,10,9,10,5,10,8,4,.....
CLOSE,DOOR1,13,9,1,5,6,8,7,9,7,11,10,8,11,8,20,10,6,11,7,6,3,8,10,11,10,7,.....
:
:
- 16. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・OPEN/CLOSEの分類問題(pycaret.classification)
Googleコラボで以下を実行
PyCaret でOPEN/CLOSEを分類ー4
16
# インストール
! pip install pycaret
# CSVファイルから読み込む
import pandas as pd
door1 = pd.read_csv('https://aramoto.sakura.ne.jp/IoT/datas/door1.csv')
door1.head()
# 前処理(分類問題:pycaret.classification)
from pycaret.classification import *
exp1 = setup(door1, target = 'action' )
# モデルの比較
compare_models()
- 17. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・もう少し精度を上げてみよう
データ範囲を制限する
カラムの型(数値型)を明示する
PyCaret でOPEN/CLOSEを分類ー5
17
ignore = []; # 使わない列を指定する
ignore.append('data301'); # 最後の列はデータが入っていない
for i in range(1, 80+1, 1): # 前0.8秒のデータは使わない
ignore.append('data' + str(i))
for i in range(151, 300+1, 1): # 後1.5秒のデータは使わない
ignore.append('data' + str(i))
data_label = []; # カラムの型を明示する
for i in range(1, 301+1, 1):
data_label.append('data' + str(i))
exp1 = setup(door1, target='action', numeric_features=data_label, ignore_features=ignore)
compare_models()
- 18. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・データ範囲を制限&型を明示しただけで
Accuracy:0.9018 → 0.9571
※実行するたびに結果は微妙に異なります
PyCaret でOPEN/CLOSEを分類ー6
18
無設定 範囲制限&型明示後
- 21. ・一段目と四段目のデータを読み込む
2つのデータをマージ
DOOR1/DOOR4をOPENだけで判定
DOOR1/DOOR4をCLOSEだけで判定
前1秒も使った方が精度が高かった
#CSVファイルから読み込む
import pandas as pd
door1 = pd.read_csv('https://aramoto.sakura.ne.jp/IoT/datas/door1.csv')
door4 = pd.read_csv('https://aramoto.sakura.ne.jp/IoT/datas/door4.csv')
door14 = pd.concat([door1, door4]) # DataFrameを結合
door14 = door14[door14.action == 'OPEN'] #OPENだけにする
door14.head()
ignore = []; # 使わない列を指定する
ignore.append('data301'); # 最後の列はデータが入っていない
for i in range(201, 300+1, 1): # 後1.0秒のデータは使わない
ignore.append('data' + str(i))
data_label = []; # カラムの型を明示する
for i in range(1, 301+1, 1):
data_label.append('data' + str(i))
exp1 = setup(door14, target='door', numeric_features=data_label, ignore_features=ignore)
compare_models()
Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
PyCaret で一段目/四段目を分類ー3
21
一段目
四段目
- 23. ・一段目/四段目とOPEN/CLOSEをまとめて分類
Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
PyCaret で一段目/四段目+開閉を分類ー1
23
#CSVファイルから読み込む
import pandas as pd
door1 = pd.read_csv('https://aramoto.sakura.ne.jp/IoT/datas/door1.csv')
door4 = pd.read_csv('https://aramoto.sakura.ne.jp/IoT/datas/door4.csv')
door14 = pd.concat([door1, door4]) # DataFrameを結合
door14['actiondoor'] = door14['action'] + door14['door'] # 2つの列を結合
door14.head()
ignore = []; # 使わない列を指定する
ignore.append('action'); # actiondoorを使用する
ignore.append('door'); # actiondoorを使用する
ignore.append('data301'); # 最後の列はデータが入っていない
for i in range(201, 300+1, 1): # 後1.0秒のデータは使わない
ignore.append('data' + str(i))
data_label = []; # カラムの型を明示する
for i in range(1, 301+1, 1):
data_label.append('data' + str(i))
exp1 = setup(door14, target='actiondoor', numeric_features=data_label, ignore_features=ignore)
compare_models()
actiondoor の中身
OPENDOOR1
CLOSEDOOR1
OPENDOOR4
CLOSEDOOR4
- 24. ・判定結果
Accuracy:0.9238
Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
PyCaret で一段目/四段目+開閉を分類ー2
24
actiondoor の中身
OPENDOOR1
CLOSEDOOR1
OPENDOOR4
CLOSEDOOR4
- 25. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・バッテリーの持ち時間が一番の課題
毎日、複数個所のモバイルバッテリー交換は面倒
しかも、日に日にバッテリーの稼働時間が短くなっていく
1週間は連続して動いて欲しいけど、
5倍(20,000mAh)のモバイルバッテリーは超巨大なため、非現実的
・一段目/四段目+開閉の判定精度は0.9238
この精度で十分なのかは未定義
CPUパワーが必要なので、『M5StickC Plus』内では無理
加速度データをサーバに送って判定する
・「誰が?」「感情」までは検証できていない
家庭の事情です。すいません
検証用システムver1の課題
25
- 26. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
これまで、データ収集、蓄積&演算、可視化を実装してきた(赤字は2020年度の成果)
過去の実証実験を思い返して
26
入力 出力
カメラ
・玄関で訪問者を識別
・ベットで寝てる人、睡眠の深さ
・姿勢検出と物体検出
・サーモグラフィで高温注意検出
センサ
・音声認識、話者識別
・冷蔵庫内のプリンを管理
・BLEタグで置き傘を管理
・屋内での人の位置を把握
外部データの取り込み
・気象庁防災情報XML
・東京公共交通オープンデータ
統計&AI
・書籍の輪読
・クラスタリング
Webサイト
・データの可視化
量子コンピュータ
・スケジュール最適化
蓄積&演算
大量データ
・RDF/SPARQL
・Amazon S3 Select
プロジェクタ
・危険度を投影
BLEタグを使
用
- 27. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・バッテリーの持ち時間が一番の課題
・一段目/四段目+開閉の判定精度は0.9238
・「誰が?」を確実に判定したい
・スリッパだけBLEタグ(忘れ物防止タグ)に変えてみる
ボタン電池で1~3年は動く
参考:3年ちょっと前に買ったBLEタグの残バッテリー:13%
・『M5StickC Plus』は常に電源に接続
BLEタグとの距離を近くするため、できるだけ下に付ける
・BLEタグと『M5StickC Plus』の距離で判定
常に全BLEタグのRSSI(Received Signal Strength Indicator)を取得
加速度センサが反応したら、
→ 一番RSSIが大きいタグの持ち主が使用した、と判定
残課題:二段目と三段目は加速度センサが反応しない
検証用システムver2
27
- 28. ・機能概要
電源ON時に、設置場所を選択
無線LANに自動接続、切れていた場合も自動再接続
事前登録したBLEタグのRSSI(Received Signal Strength Indicator)を常に収集
10msecごとに加速度センサを読み取る
X,Y, Z軸の変化量(絶対値)のうち、閾値以上の変化量が発生したら、
最もRSSIが大きい(近い)BLEタグの番号をHTTPで送信
通信部分は別スレッド化し、送信データをキューに入れる
通信時に、加速度センサの読み取りが遅れないように
BLEタグのRSSI収集は別スレッド化し、グローバル変数でデータ共有
収集時に、加速度センサの読み取りができないので
・Tips
無線LANとBLEを同時に使うと、プログラム領域が足りなくなった
「最大1310720バイトのフラッシュメモリのうち、スケッチが1560510バイト(119%)を使っています。」
OTA(OverThe Air)の無効化で、プログラム領域が1.3MB → 2MB に増える
Arduino IDE:「ツール」→「Partition Scheme:」→「No OTA(Large APP)」
Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
検証用システムver2、実装してみた
28
- 29. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・RSSI強度で「誰が?」を判定(5回)→ 正解率がとても低い
OPEN時:40%正解
CLOSE時:80%正解
動作をみていると、
ビーコンを受信する前に開けて、開けている間にビーコンを受信している
そのため、特にOPEN時の判定は、運次第
・2個のBLEタグ(別メーカー)を同じ場所に置き、ビーコン送出を1時間測定
BLEタグ1:962回(約3.7秒に1回)※一定間隔ではない
BLEタグ2:531回(約6.8秒に1回)※一定間隔ではない
検証用システムver2を使ってみたら
29
BLEタグ1
BLEタグ2
最初の5分間
BLEタグ2を
受信していない
- 30. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・ビーコンの発信間隔が長いほど、誤判定する
移動して、ビーコンを受信する前に冷蔵庫を開けると、誤判定
→ 発信間隔を短めに設定する
→ → 最近買ったBLEタグは変更できなかった
→ → 発信していない? 受信できていない?
・電源の配線により、設置場所が制限させる
→ 『M5StickC Plus』とBLEタグである程度は回避できる
→ → ビーコンの間隔以内で開閉したら、検出できない
・どのくらいの精度が必要か?
今回の機械学習のやり方は、きっと正しくない
冷蔵庫の中身が増減すると、加速度の出方が変わるかも
検証用システムver2の課題
30
- 31. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・動いたタイミングでBLEタグがビーコンを出して欲しい
・探してみたら、アッサリ発見
『MM-BLEBC5』加速度トリガー搭載BLEビーコン 5,680
https://www.sanwa.co.jp/product/syohin?code=MM-BLEBC5
・以下のようにシステム構成を変更
BLEタグを『MM-BLEBC5』に変更
加速度検出でビーコンを送信するよう設定
加速度検出:5秒間、200msec周期で出す
・「誰が?」を10回判定 ※BLEタグを3つ使用
OPEN時:100%正解
CLOSE時:100%正解
検証用システムver2.1
31
- 32. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・各デバイスの配置
『M5StickC Plus』:距離を測りたい地点、詳細な加速度を取りたい場所、電源が取れる所
例:冷蔵庫、扉、テーブル、など
BLEタグ:「この部屋にある/ない」が分かればいいもの、更新頻度が分単位でよいもの
例:カサ、カバン、など
加速度トリガーBLEタグ:「動いた」瞬間を捉えたいもの
例:スリッパ、椅子、コップ、など
・感情認識は未着手
ラズパイ(PC)を追加し、詳細な加速度データを受信する
今後、加速度データから感情が推測できるか、検証を行う ※教師データをどうやって集める?
検証用システムver2.1のまとめ
32
- 33. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・『EB10-B』電池レス 振動発電ビーコン
メリット
・電池交換不要
・「加速度トリガー搭載BLEビーコン」よりも薄い(電池が不要なため)
・2~3歩毎に電波が出る
デメリット
・動いていないとビーコンが出ない(探し物には使えないかも)
・「加速度トリガー搭載」よりも高い(約8千円/個)
参考:今回は使えなかったけど
33
https://www.sd.toyonics.co.jp/01_solution/02_ecobeacon/eb10-b.html
- 34. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・「誰がトイレに行ったか?」の回数と長さをカウントする
IoTによる「猫のトイレの回数を記録し、膀胱炎を見つける」の人間版
複数人が居る家だと「誰が?」の判定が必要
人間相手だと「カメラで認識」はプライバシーが問題
NEWS記事:
西川きよし、前立腺がん発見のきっかけは妻
「自分では医者に行くほどではないだろうと…」
https://www.billboard-japan.com/d_news/detail/103956/2
活用案:夜中にトイレへ行った回数を記録
34
受診のきっかけは、ヘレンさんの一言だった。ヘレンさんは当時、夫の頻尿が気になっ
ていたという。
「もともと主人は60歳を過ぎた頃から、前立腺肥大症を持っていたので、そんなものか
な、と思っていたんですが、夜中のトイレの回数が増えまして。主人が起きると、私もお
のずと目が覚める。それがひどくなって、心配で『先生に診てもらおう』と申しましたら、
主人が重い腰を上げて『ほな行こか』となって」と経緯を説明。
- 35. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・IoTデイバスの実装範囲
『M5StickC Plus』から、以下のデータを空間OSに送信
加速度検出時に、対象のBLEタグのうちで一番近くにあったタグ
近くのBLEタグの加速度とRSSIを中継
・ラズパイ(PC)の実装範囲
加速度データを受信し、感情を推測して、空間OSに送信
・空間OSのエージェントに判定ロジックを実装
BLEタグ(=人)の場所を推定+感情
何が起こったかを判定
例:〇は冷蔵庫を開けた、△はトイレに入った、×は玄関を開けた、など
例:〇が機嫌良く起きた、△が夜中にトイレへ2回行った、×が急いで出かけた、など
今後、どう使うかを検討
空間OSとの連携(仮)
35
- 36. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
・加速度データのとり方を一番悩んだ
「時刻として正確」or「秒以下は正しくない」で、後者を選択
・『M5StickC Plus』の内蔵バッテリーでテストが楽だった
好きな場所に仮設置してデータを取ってみる、が簡単にできた
「AUTO POWER OFF」(保護機能)は想定外だった
・『M5StickC Plus』で3スレッドがうまく動作した
メイン:加速度センサ&LCD表示、task1:キュー受信&HTTP通信、task2:BLEタグのRSSI収集
ただし、ライブラリは対応していないため、同じ機能を別スレッドで使用しないこと
例:画面更新、日時取得、シリアルポート出力
・加速度トリガー搭載BLEビーコンが便利だった
「動いた」「大体、どの辺に居る」を取り易いが、値段が2~3倍
・「PyCaretを触ってみる」という目的は達成できた
引き続き、もうちょっと精度アップを頑張ってみる
・「加速度データによる感情認識」は実施できなかった
教師データ収集が課題
教師データ収集時だけ、カメラによる感情認識を併用する?
まとめ&感想
36
- 37. Copyright © 2022 Advanced IT Community to Evaluate, Apply and Drive All Rights Reserved.
ハルミン
AITC非公式イメージキャラクター
http://aitc.jp/
https://www.facebook.com/aitc.jp/
最新情報はこちらをご参照ください