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

Google Colab中已安装PyAV仍报错:UCF101数据集导入失败

解决Colab中torchvision UCF101数据集的PyAV导入错误

我遇到过完全一样的问题,罪魁祸首是DataLoader的多进程机制和Colab的环境隔离。虽然你在主进程里成功安装并验证了PyAV,但DataLoader启动的子工作进程并没有继承到这个新安装的包,所以才会触发这个错误。下面是几个有效的解决办法:

方法1:临时禁用DataLoader多进程(快速验证)

先把DataLoader的num_workers参数设为0,强制在主进程加载数据,绕开子进程环境的问题:

from torch.utils.data import DataLoader
import torchvision
import torchvision.transforms as transforms

# 定义你的数据集(和之前代码一致)
dataset = torchvision.datasets.UCF101(
    '/content/drive/My Drive/Colab Notebooks/ucf101', 
    annotation_path='/content/drive/My Drive/Colab Notebooks/ucfTrainTestlist', 
    frames_per_clip=16, 
    step_between_clips=1, 
    frame_rate=None, 
    fold=1, 
    train=True, 
    transform=transforms.Compose([transforms.ToTensor(),])
)

# 关键:设置num_workers=0
dataloader = DataLoader(dataset, batch_size=4, num_workers=0)

这个方法能快速验证是不是多进程的问题,但缺点是加载数据速度会变慢,适合测试阶段使用。

方法2:重启Colab运行时(彻底同步环境)

有时候Colab的pip安装后,新包不会立刻被子进程识别,重启运行时能让整个环境同步:

  1. 点击Colab界面顶部的「Runtime」→「Restart runtime」
  2. 重启后先重新运行安装代码:pip install av
  3. 再执行你的数据集加载代码

方法3:安装兼容版本的PyAV

如果重启后还是报错,可能是PyAV版本和torchvision不兼容。试试安装一个经过验证的稳定版本:

pip install av==10.0.0

这个版本和大多数torchvision的视频数据集模块兼容性更好。

额外验证步骤

重启或重装后,你可以加一段代码验证子进程是否能正常导入PyAV:

import torch.multiprocessing as mp

def check_av_in_subprocess():
    try:
        import av
        print(f"子进程中PyAV版本:{av.__version__}")
        return True
    except ImportError:
        print("子进程无法导入PyAV")
        return False

# 启动子进程测试
mp.set_start_method('spawn')
test_process = mp.Process(target=check_av_in_subprocess)
test_process.start()
test_process.join()

如果能正常打印PyAV版本号,说明子进程环境已经正常,再运行UCF101的代码就不会报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:17:35