返回列表

7th Place Solution

665. CMI - Detect Behavior with Sensor Data | cmi-detect-behavior-with-sensor-data

开始: 2025-05-30 结束: 2025-09-02 健康管理与公共卫生 数据算法赛
第 7 名解决方案

第 7 名解决方案

作者: ishikei (amanatsu) | 发布时间: 2025-09-03 | 竞赛排名: 第 7 名

首先,我要感谢组织者举办了如此有趣的竞赛。有许多不同的建模选项可供探索,我通过反复试验学到了很多。

我的方法使用了 2D CNN,灵感来源于我之前参加过的 HMS 竞赛中的一个顶级解决方案。


概述

  • 2D CNN 方法:我将时间序列数据转换为图像,并使用 EfficientNet 或 ConvNeXt 进行处理。
  • 分层多任务学习:模型有一个主要的 9 类分类任务和三个辅助任务(详细的 18 类分类、方向和行为)。
    • behavior(行为)是从骨干网络的中间特征图中作为时间序列预测出来的。该预测随后被用作主要任务和其他辅助分类任务的附加特征。
  • 指数移动平均 (EMA):用于更稳定的训练。
  • 数据增强:我使用了各种增强方法,包括特定于时间序列的增强(如时间扭曲 Time Warping)以及仅在同一方向样本之间应用的 Mixup。
  • 后处理:应用了最后一步,以确保测试集中的每个受试者被分配了相等数量的类别。

预处理

IMU 数据 (12 维 → 41 维)

  • 基础特征:acc (3), rot (4), thm (5)。
  • 工程特征
    • 去除重力后的线性加速度(使用四元数计算)。
    • 角速度和角距离。
    • 加加速度(加速度的导数)及其 magnitude。
    • 频域特征(0-1Hz, 1-5Hz, 和 5-10Hz 频段的功率)。
    • 方向变化检测(使用连续帧之间的余弦相似度)。
  • 通过反转特定轴针对惯用手进行了校正。
  • 使用 StandardScaler 对所有特征进行了归一化。

TOF 数据 (320 维)

  • 数据结构为 (seq_len, 5*64=320)
  • 针对传感器旋转和左右差异进行了校正。
  • 我发现排列 TOF 传感器数据以匹配其物理邻近性可以提高准确率。最佳顺序为:
    • TOF2 → TOF1 → TOF3 → TOF5 → TOF4

数据转换

  1. 裁剪 (Crop):取每个序列的最后 140 步。
  2. 重采样 (Resample):将 140 步重采样为 512 步。
  3. 调整大小 (Resize):将 resulting (512 步,361 通道) 数据视为图像,并使用 cv2.resize 调整大小为 (512, 1024)

模型

架构

  • 仅 IMU:ConvNeXt-base(在 ImageNet 上预训练)。
  • IMU+THM+TOF:EfficientNet-B5(在 ImageNet 上预训练)。
  • 使用骨干网络阶段 -1, -2, 和 -3 的多尺度特征提取。
  • 模型具有多头输出:
    • 主分类头 (Main Cls Head) (9 类)
    • 辅助分类头 (Auxiliary Cls Head) (18 类)
    • 方向头 (Orientation Head) (4 类)
    • 行为头 (Behavior Head) (4 类 x 64 步,时间序列)
  • 行为预测是从中间特征图生成的 64 步时间序列。每一步的 4 类概率值被添加为特征,用于主要任务和其他辅助任务。

其他

数据增强

  • 时间序列增强:时间扭曲 (Time Warping), 幅度扭曲 (Magnitude Warping), 抖动 (Jittering), 缩放 (Scaling), 和 窗口切片 (Window Slicing)。
  • Mixup:仅应用于共享相同方向的样本之间。
  • 旋转数据 Dropout:以 20% 的概率随机将四元数特征设置为零。
  • 训练期间的可变长度裁剪:使用较短序列(70-200 步)和较长序列(120-700 步)来处理可变性。

训练配置

  • 优化器:AdamW (lr=1e-3, weight_decay=1e-4)
  • 批次大小:32
  • 调度器:余弦退火 (Cosine Annealing),带有 150 步预热。
  • EMA:decay=0.99。

后处理

  • 我应用了一个后处理步骤,以均衡测试集中每个受试者的预测类别数量。
  • 我没有时间实现一个更复杂的版本,该版本还会考虑 (subject, orientation)
  • 此后处理带来的分数提升为 +0.004 CV, +0.01 公共榜, 和 +0.005 私有榜
CV 公共榜 私有榜
无后处理 (集成) 0.884 0.872 0.864
有后处理 (集成) 0.888 0.882 0.869
  • CV 分数计算排除了 SUBJ_045235SUBJ_019262
同比赛其他方案