📝
【Kaggle】上位3位 Solution(CMI - Detect Behavior with Sensor Data)
⭐ CMI – Detect Behavior with Sensor Data
ウェアラブルデバイスで取得した IMU / 温度 / ToF の時系列データから、
人の「BFRB(身体集中反復行動)」を検知する Kaggle コンペのまとめ記事です。
日常生活の中で自然に発生する行動をセンシングし、
“人の行動をデータから読み解く” という、まさに実世界AIを象徴するコンペでした。
📘 コンペ概要(図解つき)
🎯 目的
子どもや若者を対象に、爪噛み・髪触りなどの反復行動(BFRB)を検出することがゴール。
従来の課題である
- セルフレポートへの依存
- 持続的モニタリングの難しさ
- センサーのノイズや個人差
を克服するため、ウェアラブルデバイスによる“客観的リアルタイム検出”を目指す学術的にも重要なテーマです。
📦 データ構成(図解)
┌──────────────────┐ ┌───────────────┐ ┌───────────────────────────┐
│ IMU │ │ Thermopile │ │ ToF │
│ 加速度 / 角速度 │ → │ 温度変化 │ → │ 距離 / 手の位置 / 接触検知 │
└──────────────────┘ └───────────────┘ └───────────────────────────┘
↑ ↑ ↑
高頻度 中頻度 非常に有用(接触)
IMU は“動き”、Thermopile は“熱や接近”、ToF は“距離”というように、
各センサーが人間の行動を異なる角度から捉えているのが本コンペの魅力です。
📊 評価指標
- Binary F1(BFRB vs 非BFRB)
- Macro F1(18 動作クラス分類)
→ 最終スコア = (Binary F1 + Macro F1) / 2
バランス良く“二値”と“多クラス”の両方を求められるため、
ラベル間の整合性や後処理が極めて重要になります。
🤔 難しさ(図解)
┌────────────────────────────────────────────────────┐
│ 本コンペが難しい理由 │
├────────────────────────────────────────────────────┤
│ ・装着向きが左右で異なる(利き手問題) │
│ ・クォータニオンがジャンプして連続性が壊れる │
│ ・センサーモダリティ欠損(IMUのみのテスト多数) │
│ ・個人差 / 年齢差による動作のゆらぎ │
│ ・18クラスの類似動作(細かな違いが多い) │
└────────────────────────────────────────────────────┘
この“現実世界ならではの難しさ”をどう攻略したかが、各上位解法の違いとして現れます。
🥇 上位 1〜3 位の解法まとめ(図解つき)
🥇 1st Place — 多モダリティ × 多様モデル × 強アンサンブル
📐 モデル全体像(図解)
IMU ───────▶ ┐
THM ───────▶ ├─▶ 特徴量生成(35種類の handcrafted features)
ToF ───────▶ ┘
│
▼
┌─────────────────────────────────────┐
│ LSTM | CNN | Attention │ (複数モデル)
└─────────────────────────────────────┘
│
▼
アンサンブル(Foldごと最良run採用)
│
▼
最終予測
🔍 解法の核心
- 35種のハンドクラフト特徴量で“動作の質感”を高精度に定量化
- LSTM / CNN / Attention の 多様性あるモデルを作成
- 各foldで複数回学習し、最も性能の高いモデルのみ選択
- 推論時の入力長を調整して“アンサンブル相関”を低減
→ データの持つ表現を徹底的に引き出した「総合力型」戦略。
🥈 2nd Place — “フェーズ分解 × Attention × Pseudo Labeling”
📐 フェーズ分解(図解)
┌──────────────────────────────────────────┐
│ 手の動きは 3つのフェーズに分解できる │
├──────────────────────────────────────────┤
│ ① Move to target (対象へ手を近づける) │
│ ② Reach target (接触 / 到達直前) │
│ ③ Execute gesture(BFRB動作そのもの) │
└──────────────────────────────────────────┘
📐 モデルの流れ(図解)
┌────────────────────────┐
Input(IMU/THM/ToF)▶│ フェーズ分類器 │
└────────────────────────┘
│(3フェーズ)
┌────────────────┼────────────────┐
▼ ▼ ▼
Attention Attention Attention
(Phase 1) (Phase 2) (Phase 3)
│ │ │
└────────────────┴────────────────┘
▼
モデル融合
▼
Hungarian法で“時系列整合性”を保証
🔍 解法の核心
- Quaternion を 6D表現に変換し、ジャンプ問題を解決
- “フェーズ”という概念を導入し、時系列構造を知識としてモデルに与える
- モダリティ欠損別に 4タイプのモデルを別々に学習
- Pseudo Labeling で性能をさらにブースト
- Hungarian法で“不可能な動作遷移”を排除
→ “行動とはどういう構造なのか”を科学的に捉えたアプローチ。
🥉 3rd Place — 時系列を“画像化”して2Dモデルで処理
📐 図解:画像化のイメージ
時系列センサーデータ(IMU/ToF)
│
▼
2D画像(スペクトログラム風)
│
▼
ConvNeXt / EfficientNet / MaxViT などの2Dモデル
│
▼
予測
🔍 解法の核心
- IMU/ToF の動きのパターンを 画像として捉える
- ConvNeXt や EfficientNet など、
画像分野の強力なSOTAモデルをそのまま活用
🌀 増強(Augmentation)
- Z軸方向に −60°〜60° 回転(装着向き補正)
- y軸方向に −7°〜7° 回転(微妙なズレ吸収)
- Quaternion の符号反転+正規化
→ “装着の揺らぎ”を徹底的に吸収する設計。
🚀 コンペから得られる重要な学び(図解つき)
┌──────────────────────────────────────────────┐
│ CMIコンペで得られる本質的な学び │
├──────────────────────────────────────────────┤
│ 1. 物理世界の理解(Quaternion/装着方向/距離) │
│ 2. モデル多様性(1D×2D×Attention) │
│ 3. 特徴量+深層学習のハイブリッド構築 │
│ 4. アンサンブル最適化でスコアの底上げ │
│ 5. 後処理(Hungarian法)で“時系列整合性”を担保 │
└──────────────────────────────────────────────┘
特に重要なのは、
「センサーの物理特性 × モデルアーキテクチャ × 後処理」の3点セットで戦うこと。
実務でも転用可能な知見が多く、ウェアラブル系AI開発の教科書と言える内容でした。
🏁 まとめ
強さの本質=「物理 → 特徴量 → モデル → アンサンブル → 後処理」の一貫最適化。
CMI コンペは、ウェアラブル × 多モダリティ × 時系列分析の“総合格闘技”でした。
上位解法はすべて、センサーの性質と人間行動の構造を深く理解している点に共通点があります。
🔗 参考リンク
- コンペ概要
https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/overview - 1st Place Solution
https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/writeups/cmi-1st-place-solution - 2nd Place Solution
https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/writeups/2nd-place-solution#3280846 - 3rd Place Solution
https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/writeups/3rd-place-solution
Discussion