You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

3D人体跌倒检测conv3d形状错误解决及训练输入配置方法

报错根因与排查解决方法

训练时触发的报错信息如下:

ValueError: Error when checking target: expected conv3d_7 to have shape (4, 64, 64, 1) but got array with shape (2, 64, 64, 1)

该错误本质是框架训练前的张量形状校验不通过:模型最后一层卷积层conv3d_7输出的预期张量时间维度为4,但传入的训练标签(target)时间维度仅为2,二者形状不匹配。按以下优先级排查即可解决:

  • 核对视频帧采样参数:该仓库的DSTCAE-C3D模型默认输入为连续16帧的视频片段,经过2次时间维度步长为2的下采样后,输出特征时间维度固定为4。如果采样时将单样本连续帧数量改为8,最终输出时间维度就会变成2,直接触发报错。找到脚本中帧采样的配置项,将单训练样本的连续采样帧数改回16即可。
  • 核对数据生成器的标签返回逻辑:该模型属于卷积自编码器结构,训练目标是重构输入片段,因此标签与输入样本的张量形状完全一致。如果数据加载逻辑中对标签单独做了时间维度裁剪、隔帧抽取操作,就会导致标签时间维度缩短。检查生成器返回的(样本, 标签)元组,保证标签未被单独做维度压缩。
  • 核对模型层的步长配置:打开模型定义代码,检查conv3d_7之前所有3D卷积、3D池化层的时间维度步长参数,如果某一层的时间步长被误从2改为4,会导致下采样倍数翻倍,输出时间维度减半。逐层核对步长参数,保证总下采样倍数和输入帧长度匹配即可。
3D跌倒检测模型训练阶段正确输入格式与传入方式
  • 标准输入张量格式:单样本输入形状为(时间步, 帧高度, 帧宽度, 通道数),该仓库默认配置下的标准形状为(16, 64, 64, 1),对应连续16帧、分辨率64*64的单通道灰度人体动作片段。批量训练时,输入批次的整体形状为(batch_size, 16, 64, 64, 1)。
  • 预处理要求:所有帧传入模型前需要将像素值归一化到0~1区间,帧中人体区域需要做居中对齐,避免裁剪后人体关键部位缺失;采样的16帧需保证时序连续,帧间隔不超过0.1秒,避免动作时序特征断裂。
  • 数据传入方式:优先使用脚本内置的数据加载生成器,按照仓库要求的目录结构存放跌倒、日常动作类别的视频片段即可,不要随意修改生成器输出的张量维度。如果使用自定义数据集加载逻辑,调用fit方法传入训练集、验证集时,需要保证标签张量形状和模型输出形状完全对齐,自编码器训练场景下标签直接使用输入样本本身即可,不需要额外做维度变换。

内容的提问来源于stack exchange,提问作者Ravi Nandani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:39:15