Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CMI - Detect Behavior with Sensor Data

Avatar for Rist Inc. Rist Inc.
October 30, 2025

CMI - Detect Behavior with Sensor Data

Kaggleコンペにて、Rist Kaggle Team所属、Kaggle Grandmaster 石 圭一郎が個人で金メダルを獲得した「CMI – Detect Behavior with Sensor Data」の解法紹介です。

本コンペティションは、手首装着型デバイスから得られるセンサーデータを用いて、抜毛や皮膚むしりといった身体集中反復行動(BFRB)と、眼鏡を直すなどの日常的な仕草とを区別する予測モデルを開発するタスクでした。

Avatar for Rist Inc.

Rist Inc.

October 30, 2025
Tweet

More Decks by Rist Inc.

Other Decks in Technology

Transcript

  1. ©Rist Inc. 04 • 開催情報: ◦ 期間: 2025/5 ~ 2025/9

    ◦ 主催: Child Mind Icnstitute ◦ 結果: 7位 / 2657チーム • 課題: ◦ 手首装着型デバイスで得られるセンサーデータから、抜毛や   皮膚むしりといった身体集中反復行動(BFRB)などを分類する ◦ BFRBの検知・治療をサポートするウェアラブルデバイスの設計 精度向上に貢献することが目的 • 評価指標: ◦ カスタマイズされたF1スコア (後述) • データ: ◦ IMU、TOF、サーモの3種類のセンサー信号を統合して分類 ◦ testデータの約半数はIMUセンサーのみの信号が記録されている ▪ (TOF, サーモを加えた際の効果確認が目的) CMI - Detect Behavior with Sensor Data 被験者がつけているデバイス 出典 :www.kaggle.com/competitions/cmi-detect-behav ior-with-sensor-data/overview/description
  2. ©Rist Inc. 05 Data|Gesture (target) • Gesture:今回の予測対象ラベル ◦ BFRB 8種類、非BFRB

    10種類の合計18クラス ◦ 1シーケンスに1ラベルのみ付与 ◦ 後述するように、評価時には非BFRB内のクラスは1つに統一してから計算される ▪ 非BFRB内での分離性能は最終評価には影響しない Gesture = まつ毛の抜毛動作 Gesture = 首を引っかく動作 Gesture = 首の皮膚をつまむ動作
  3. ©Rist Inc. 07 Data|Orientation • Orientation:各動作を行う姿勢 ( trainのみ付与) ◦ Seated

    Straight:普通にイスに座った状態 ◦ Seated Lean Non Dom - FACE DOWN:少し前屈みでイスに座った状態 ◦ Lie on Back:仰向けで寝た状態 ◦ Lie on Side - Non Dominant:非利き手側を下にして横向きで寝た状態 Seated Straight Seated Lean Non Dom - FACE DOWN Lie on Back Lie on Side - Non Dominant
  4. ©Rist Inc. 08 Data|Behavior • Behavior :シーケンス中の動作phaseを表す時系列ラベル (trainのみ付与) ◦ Performs

    gesture:target動作中 ◦ Moves hand to target location:対象部位へ手を移動させている状態 ◦ Hand at target location:対象部位で手を止めている状態 (一時停止) ◦ Relaxes and moves hand to target location:リラックスしながら対象部位へ手を移動させている状態 • 各シーケンスは、Move or Relax から始まり、その後hand at target locを挟み、Performs gestureでおわる 背景色 = Behavior, 青=Move, 朱=Relax, 緑=Hand at target, 赤=Peform
  5. ©Rist Inc. 09 (備考)配布ラベルの制約について • データ収集時、被験者ごとに、各動作を同じ回数ずつ行い、それぞれが独立したシーケンスとして提供された • より詳細には、取りうる {姿勢 (Orientation),

    動作 (gesture)} の組み合わせを網羅するように収集された • 取りうる組み合わせは最大:姿勢4種類 x 動作18種類 = 72種類 だが、実際には全ての組み合わせで動作が行われ たわけではなく、固定の51種類の {姿勢, 動作} の組み合わせでのみデータ収集された • さらに、初期状態は {Move, Relax} どちらでも記録されているため、trainではほとんどの被験者で ◦ 51 (姿勢と動作の組) x 2 (取りうる初期状態) = 102 個のシーケンス • が記録された • test でも同じ手順でデータが収集された そのため、最終的なLB上位は、NNの純粋な精度に加え、上記制約を考慮した最適化 (後処理) が必須な戦いに
  6. ©Rist Inc. 010 (Binary F1 + Macro F1) / 2

    • Binary F1:BFRB or 非BFRB のバイナリ評価 • Macro F1:BFRB 8種類と、非BFRB (非BFRB内クラスは評価時一つに統一される) の合計9クラスの分類性能 ◦ 実際には、Binary F1はvalidationスコアで0.99以上出るため、ほぼ差がつかない状態 ◦ Macro F1 (BFRB内での分類性能) が重要 評価指標
  7. ©Rist Inc. 011 Data|IMU, THM, TOFデータ • デバイスは被験者の利き手側手首に付けられ、下記3種類のセンサーデータが提供された ◦ IMU

    (7ch) :加速度センサー情報:acc_x, y, z, rot_w, x, y, z ◦ THM (5ch):サーモパイルセンサー thm_[1-5] ◦ TOF (320ch):Time Of Flight (距離) センサー ▪ 実際には、8x8の面内解像度を持つ5chの時系列センサー情報 • testデータの約半数はTHM, TOFデータが意図的に欠損した状態 ◦ IMUのみでもある程度のスコアが出せるモデル作りが重要 IMU THM TOF TOF-2 TOF-1 TOF-4 TOF-5 TOF-3
  8. ©Rist Inc. 014 Overview • Input ◦ 左利き → 右利きへの簡易的なデータ変換

    ◦ IMU, THM, TOFそれぞれでfeature engineering ◦ time warpingや同一gesture x orientation内でのmixupなど、様々なaugmentation • Model ◦ IMUのみモデル、IMU+THM+TOFモデルの2種類用意 ◦ model:2D CNNメイン、ensemble用に1D modelも学習 ◦ behavior, orientation予測のaux loss ◦ EMAによる学習の安定化 • Postprocess ◦ 各被験者でgesture間の予測回数が等しくなるような補正処理
  9. ©Rist Inc. 015 Input|利き手の反転, その他の前処理 • IMU ◦ 左利きデータの場合:acc_z, rot_x,

    y, zを反転 • THM ◦ 左利きデータの場合:thm_3 とthm_5 をスワップ • TOF ◦ 左利きデータの場合:TOF-3 と TOF-5 をスワップ ◦ 左利き / 右利きともに:TOF-3 と TOF-5 を2D画像にreshapeしてから90度回転させる デバイスを左手につけると  THM, TOFともに3と5が反転する よく見るとTOF3, 5のセンサーは 90度回転して基板についている 出典:www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/overview/description
  10. ©Rist Inc. 016 Input|Feature Engineering • IMU ◦ 重力成分の除去、ノルム、角速度、ジャーク、連続フレーム間のコサイン類似度、周波数領域特徴など ◦

    一番効いたのは重力成分除去 & 除去後の各成分を使った特徴量 • THM ◦ Feature Engineeringは特に実施せず 生の特徴量のみを使用 ◦ IMUとTHMは平均0, 分散1に標準化 • TOF ◦ 一部のモデルはTOFに対してもFeature Engineertingを適用 ▪ 8x8xtime-stepにreshapeした状態での空間統計、勾配、フローなど • 全ての特徴量を結合し、2D画像とみなして後続のModelへ入力
  11. ©Rist Inc. 017 Input|Feature Engineering • 前処理後のIMU, THM, TOFをch方向に結合し、縦=ch, 横=seq_len

    の2D画像として扱った • IMU+THM+TOF モデルでは、入力サイズ = (1024, 512)、IMU only モデルでは、入力サイズ = (512, 512) とした
  12. ©Rist Inc. 018 Input|Augmentation • 被験者数=81, 総シーケンス数=8151 と、比較的小規模なデータセットということもあり、Augmentationでの 改善幅が大きかった •

    適用したAugmentation ◦ rotデータの確率的drop ◦ Crop:基本的に各シーケンスは末尾140stepのみcropするが、train時は70~200stepでRandomCrop ◦ 時系列aug:Time/Magnitude Warping, Jittering, Scaling, Window SlicingからRandomに選択して適用 ◦ Mixup:同クラス x 同Orientationグループから選択してMixup
  13. ©Rist Inc. 019 Model • 2D model ◦ backbone =

    ConvNeXt-base (IMU only model), Efficientnet-B5 (IMU+THM+TOF model) ◦ backboneの-1, -2, -3 stageから中間特徴MAPを取得しfusion → behaviorを時系列で予測 ▪ 予測したbehavior (時系列) を他のfeatureとconcatしてから最終予測 ▪ 簡易的な時系列attentionとして機能することを期待 ◦ メインは9クラス (BFRB 8種 + 非BFRB) 予測 補助タスク (aux loss) として下記を追加 ▪ 非BFRBを畳み込まない18クラスの予測 ▪ orientation予測 • 1D model ◦ IMU+THM, TOFで別ブランチで処理 ◦ TOFはまず8x8画像を小さめの2D CNNで処理 → 各時刻の5つのセンサー間でattention → 時系列方向に 1DConv → IMU+THM featureとconcat → 9クラス予測 ◦ 単体のvalidationスコアは2D modelが良かったが、ensembleでの1D modelの貢献が大きかった
  14. ©Rist Inc. 020 EMA • validationデータの数が少ない & メトリクスが離散値で不安定 なため、最良checkpointを選ぶのが難しい ◦

    学習安定化のために、モデルEMA (decay = 0.99) を適用 ◦ 結果的に全体的な精度改善にも寄与
  15. ©Rist Inc. 021 Postprocess • 各被験者でgesture間の予測回数が等しくなるような補正処理 ◦ 予測自体はkaggleのevaluation APIを使って1サンプルごとに行う必要があるため、APIの外側に予測ごとの 被験者情報と予測結果を保持するモジュールを配置

    ◦ 新規予測の際、その被験者の過去の予測を参照して、まだ予測が少ないクラスへの割り当てが増えるように、 probability scoreに補正をかける(シーケンス数が貯まるほど補正が強くなるように調整) ◦ Public LBでは0.01の改善だったが、Private LBだと0.005の改善幅だった 出典:https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/writeups/7th-place-solution
  16. ©Rist Inc. 023 概要 • デバイスを逆さまに付けてしまった被験者の取り扱い (3rd, 6th) • 最適割り当て

    (1st, 2nd, 3rd, 4th, 5th) • モデルアーキテクチャは1D modelがほとんどだったが、2D modelをensembleに含めることでスコアを 大幅に上げたチームもあった (3rd)
  17. ©Rist Inc. 024 デバイスを逆さまに付けてしまった被験者の取り扱い (3rd, 6th) • trainにおいて subject_id =

    SUBJ_019262, SUBJ_045235 の2名の被験者のCVスコアがかなり低くなる ことが、Discuttionで報告されていた • ほとんどの参加者は上記2名を学習時に除外するなどの対策を行っていたが、実際にはこれらの被験者は  デバイスをZ軸を中心に180°回転させた状態で装着していた ◦ 学習時に上記データを補正 (3rd, 6th) ◦ 推論時にデバイスを逆さまに付けた被験者を検知 → 推論時にも補正 (6th) 出典:https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/writeups/6th-place-solution
  18. ©Rist Inc. 025 最適割り当て (1st, 2nd, 3rd, 4th, 5th) おそらく2ndの最適化が一番強かった印象

    • test setの予測時、姿勢 x クラス x 初期状態 = 102 個の取りうる予測の中で、各被験者ごとに割り当て  クラスが重複しないようにハンガリアン法で最適化 (2nd) ◦ その被験者の新しいシーケンスが入力されるごとに過去の全シーケンス含め割り当てを見直していく • 他の参加者 (特に5位以上) の最適化は、姿勢 x クラス = 51個の取りうる予測の中で、各被験者ごとに最大 2つまでの重複を許可するやり方が主流だった ◦ 実際には初期状態によってさらに細分化できるため、そこまで考慮した方が強かった 出典:https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/writeups/2nd-place-solution
  19. ©Rist Inc. 026 賞金圏solutionとの差分 • Postprocessの違い ◦ 自分のsolutionでは、各gestureの回数を (softに) 揃えるところまでしか考慮できなかったが、より上位の

    solutionでは gesture x orientation (x 初期状態) の組み合わせまで考慮して最適化する手法が多かった • デバイスを逆さまに付けてる被験者の処理 ◦ DiscussionでCVが低い被験者の情報をみて、単純にそれらの被験者をデータから除外してしまった ◦ ヒストグラムを確認しながら考察すれば気付けるレベルだが、それを怠ってしまった    データをきちんと自分の目で確認することは非常に重要