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

PyTorchVideo训练视频分类模型时Kinetics数据集加载错误修复咨询

解决Kinetics数据集PyTorchVideo训练中的两个加载错误

错误1:ValueError: invalid literal for int() with base 10:'Dancing'

原因

PyTorchVideo的Kinetics数据集类默认要求标签为整数类型,你最初使用文本标签(如Dancing),导致系统无法将其转换为整数,触发类型错误。

解决方法

无需移动视频文件位置,保留原分类文件夹结构即可,两种修复方式二选一:

  1. CSV保留文本标签,添加映射参数
    在初始化Kinetics数据集时,传入label_map参数,手动映射文本标签到整数:
    # 替换为你的所有类别映射关系
    label_map = {"Dancing": 0, "Running": 1, "Jumping": 2, ...}
    train_dataset = pytorchvideo.data.Kinetics(
        data_path=os.path.join("/mnt/storage_6TB/user/kinetics400/train_subdivision", "my_train.csv"),
        clip_sampler=pytorchvideo.data.make_clip_sampler("random", self._CLIP_DURATION),
        transform=train_transform,
        label_map=label_map
    )
    
  2. CSV直接使用整数标签
    保持你已经修改的数字标签CSV,但恢复原数据集文件夹结构,无需将所有视频移到同一目录。

错误2:RuntimeError: Failed to load video after 10 retries

核心原因:视频文件无法被正常读取,可能由以下问题导致,逐一排查修复:

  1. 路径不匹配
    检查CSV中的视频路径是否正确:

    • 若使用绝对路径,确保路径与实际文件位置完全一致(区分大小写、后缀名);
    • 若使用相对路径,需设置video_path_prefix参数,指向视频文件的根目录。
  2. 视频文件损坏/编码不兼容

    • 编写安全加载函数跳过损坏视频:
      from pytorchvideo.data.encoded_video import EncodedVideo
      
      def safe_video_loader(path, decode_audio=False):
          try:
              return EncodedVideo.from_path(path, decode_audio=decode_audio)
          except Exception as e:
              print(f"跳过损坏视频: {path},错误信息: {e}")
              return None
      
      # 初始化数据集时替换默认loader
      train_dataset = pytorchvideo.data.Kinetics(
          data_path=os.path.join("/mnt/storage_6TB/user/kinetics400/train_subdivision", "my_train.csv"),
          clip_sampler=pytorchvideo.data.make_clip_sampler("random", self._CLIP_DURATION),
          transform=train_transform,
          video_loader=safe_video_loader
      )
      
    • 对编码不兼容的视频,用ffmpeg转码:
      ffmpeg -i 原视频.mp4 -c:v libx264 -crf 23 -c:a aac 转码后视频.mp4
      
  3. 数据加载器参数冲突
    降低num_workers数值(比如从8改为4),多进程加载可能引发文件访问冲突。

  4. 裁剪时长不匹配
    你的_CLIP_DURATION设置为2秒,若存在时长不足2秒的视频,会导致无法采样。解决方式:

    • 过滤CSV中时长小于2秒的视频;
    • 更换clip_sampler为uniform,允许采样短于设定时长的视频片段。

额外脚本修复提示

你的训练变换中,RandomShortSideScale设置为224,但后续RandomCrop设置为244,这会触发尺寸不匹配错误,需将RandomCrop参数改为224:

RandomShortSideScale(min_size=224, max_size=224),
RandomCrop(224),  # 原244改为224

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:22:03