Smombie App は、スマートフォンの加速度センサーとジャイロスコープのデータを機械学習で分析し、歩きスマホを検知するWebアプリケーションです。
歩きスマホは重大な事故につながる危険な行動であり、本システムはその検知と警告によって安全な歩行を促進することを目的としています。
- 機械学習モデル作成 - ランダムフォレストを用いた歩行状態分類モデルの学習
- リアルタイム予測 - phyphoxアプリと連携したリアルタイムセンサーデータの処理
- 警告メール送信 - 歩きスマホ検知時の即時メール通知
- ユーザー管理 - アカウント登録・ログイン・設定カスタマイズ機能
smombie_app/
├── app/
│ ├── main.py # メインアプリケーション・ナビゲーション
│ ├── requirements.txt # Python依存パッケージ
│ ├── .streamlit/
│ │ └── secrets.toml # メール送信用認証情報(非公開)
│ ├── db/
│ │ └── app_db.db # SQLiteユーザーデータベース
│ └── pages/
│ ├── top.py # ホームページ・ユーザー認証
│ ├── train_model.py # モデル学習ページ
│ ├── realtime_data.py # リアルタイム処理ページ
│ └── files/
│ └── checklist.pdf # 実験報告書チェックリスト
├── data/
│ ├── train_data.xlsx # 学習用データセット
│ ├── test_data.xlsx # テスト用データセット
│ └── model.pkl # 学習済みモデル
└── rub_app.bat # Windows起動スクリプト
| カテゴリ | 技術・ツール |
|---|---|
| 言語 | Python |
| フレームワーク | Streamlit, streamlit-pdf |
| 機械学習 | scikit-learn |
| データ処理 | pandas, NumPy, scipy, openpyxl |
| 可視化 | matplotlib, Pillow |
| データベース | SQLite, SQLAlchemy |
| センサーデータ取得 | phyphox, requests |
| 通知 | yagmail |
| セキュリティ | hashlib |
| モデル保存 | pickle |
本システムは、以下の3つの歩行状態を分類します:
| ラベル | 説明 |
|---|---|
| Stop | 停止状態 |
| Distracted Walking | 歩きスマホ |
| Not Distracted Walking | 歩きスマホ以外(鞄に入れて歩く、ズボンのポケットに入れて歩く等) |
センサーデータ(6軸:ax, ay, az, wx, wy, wz)から以下の統計量を抽出します:
- 基本統計量: 平均(mean)、標準偏差(std)、最小値(min)、最大値(max)、中央値(median)
- 範囲: レンジ(range)
- 四分位: 第1四分位(q1)、第3四分位(q3)、四分位範囲(iqr)
- 分布形状: 歪度(skew)、尖度(kurt)
合計 66個の特徴量 を使用してモデルを学習します。
- Python 3.10以上
- pipパッケージマネージャー
-
リポジトリをクローン
git clone https://github.com/cog-pr/smombie_app.git cd smombie_app -
依存パッケージをインストール
pip install -r app/requirements.txt
-
メール設定(オプション)
app/.streamlit/secrets.tomlファイルを作成し、以下の形式で設定します:[email] address = "[email protected]" app_key = "your-app-password" [connections.my_db] url = "sqlite:///./app/db/app_db.db"
注意: Gmailを使用する場合はアプリパスワードを生成してください。
streamlit run ./app/main.pyまたは、Windowsの場合は run_app.bat をダブルクリックしてください。
Docker Composeを使用する場合(推奨):
# secrets.tomlを作成
cp app/.streamlit/secrets.toml.example app/.streamlit/secrets.toml
# 中身を編集してメール設定を入力
# ビルド&起動
docker-compose up --build
# バックグラウンドで起動する場合
docker-compose up -d --buildDockerだけで起動する場合:
# イメージをビルド
docker build -t smombie-app .
# コンテナを起動
docker run -p 8501:8501 smombie-app起動後、ブラウザで http://localhost:8501 にアクセスしてください。
- ホームページでアカウントを作成
- ログイン後、各種設定をカスタマイズ可能
- 学習用Excelファイル(train_data.xlsx)をアップロード
- 必須列:
time,ax,ay,az,wx,wy,wz,class
- 必須列:
- テスト用Excelファイル(test_data.xlsx)をアップロード
- 「実行する」ボタンでモデル学習・評価を実行
- 混同行列とアニメーションGIFで結果を確認
- 学習済みモデル(.pkl)をダウンロード
- スマートフォンでphyphoxアプリを起動
- リモートアクセスを有効化してIPアドレスを取得
- アプリにIPアドレスを入力
- 学習済みモデル(.pkl)をアップロード
- 「実行する」ボタンでリアルタイム検知を開始
ログイン後、設定画面から以下のパラメータをカスタマイズできます:
| パラメータ | デフォルト値 | 説明 |
|---|---|---|
| ウィンドウサイズ | 60 | 一度に分析するデータポイント数 |
| ストライド | 30 | ウィンドウのスライド幅 |
| パラメータ | デフォルト値 | 説明 |
|---|---|---|
| n_estimators | 400 | 決定木の数 |
| max_depth | 6 | 決定木の最大深さ |
| オプション | 説明 |
|---|---|
| 即時送信 | 歩きスマホ検知時に即座に警告メールを送信 |
| 計測終了後 | 計測終了後にまとめて通知 |
phyphox は、スマートフォンの各種センサーデータを取得できる無料アプリです。
- iPhone: iOS版 phyphox
- Android: Android版 phyphox
- 線形加速度センサー(X, Y, Z軸)
- ジャイロスコープ(X, Y, Z軸)
本システムは以下の研究・文献を参考にしています:
- 京都大学(2024)「歩きスマホによる内因性転倒リスクの増大」
- 東京消防庁「歩きスマホ等に係る事故に注意!」
- J-STAGE「歩行中のスマートフォン操作と視線の危険性」
- モバイル社会研究所(2024)歩きスマホに関する実態調査
本プロジェクトは、認知情報科学実験2 の一環として開発されました。