665. CMI - Detect Behavior with Sensor Data | cmi-detect-behavior-with-sensor-data
首先,我想对组织这场激动人心的比赛表示感激。对我来说,这是近两年来获得的第一枚金牌。此外,由于我之前曾在同一场 Child Mind Institute 竞赛中通过排名跃升(shakeup)获得过第 10 名,这次的结果对我而言显得尤为有意义。
groups="subject",k=5。CV 分割使用三个不同的种子值生成:0、1 和 2。rot): 用单位四元数替换缺失值。thm):
27.03。将所有传感器值调整为右手 orientation。
# Imu
df['acc_x'] *= -1.0
df['rot_y'] *= -1.0
df['rot_z'] *= -1.0
# Thm
thm_3 = df['thm_3'].copy()
thm_5 = df['thm_5'].copy()
df['thm_5'] = thm_3
df['thm_3'] = thm_5
# Tof
tof_names = [f'tof_{i}' for i in range(200)]
tof = df[tof_names].values.copy()
tof = tof.reshape(-1, 5, 8, 8)
tof = tof[:, [0, 1, 4, 3, 2]]
tof = np.flip(tof, 3)
tof = tof.reshape(-1, 5 * 8 * 8)
df[tof_names] = tof.copy()
确定 SUBJ_019262 和 SUBJ_045235 的传感器围绕 Z 轴旋转了 180 度。对其数据应用了以下校正。
# acc
df['acc_x'] *= -1.0
df['acc_y'] *= -1.0
# rot
w = df['rot_w'].copy()
x = df['rot_x'].copy()
y = df['rot_y'].copy()
z = df['rot_z'].copy()
df['rot_w'] = -z
df['rot_x'] = y
df['rot_y'] = -x
df['rot_z'] = w
# thm
thm_2 = df['thm_2'].copy()
thm_3 = df['thm_3'].copy()
thm_4 = df['thm_4'].copy()
thm_5 = df['thm_5'].copy()
df['thm_2'] = thm_4
df['thm_4'] = thm_2
df['thm_3'] = thm_5
df['thm_5'] = thm_3
# tof
tof_names = [f'tof_{i}' for i in range(200)]
tof = df[tof_names].values.copy()
tof = tof.reshape(-1, 5, 8, 8)
tof = np.rot90(tof, k=2, axes=(2, 3))
tof = tof[:, [0, 3, 4, 1, 2]]
tof = tof.reshape(-1, 5 * 8 * 8)
df[tof_names] = tof.copy()
由于数据集大小有限,数据增强对模型性能至关重要。
rot)数据将每一帧的加速度分离为重力和线性分量。rot 值重新计算重力分量。std_Y=10,std_X=7,和 std_Z=0.1。z = Mixup(Mixup(Mixup(x)))。x 与混合数据 Mixup(x) 沿 batch 维度连接。beta=0.5,而第二和第三阶段使用 beta=16。