Torchvision归一化值选择:预训练ResNet处理Kinetics帧该选哪种?
预训练ResNet提取Kinetics视频帧特征:归一化参数选择及来源解析
先给你明确结论:你必须选择Torchvision文档中给出的预训练模型统一归一化参数,也就是:
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
为啥不能用Kinetics官方脚本的参数?
预训练的ResNet是在ImageNet数据集上训练完成的,整个训练过程中输入图像都遵循上述的ImageNet归一化规则。模型的权重已经完全适配了这种数据分布——如果你突然换成Kinetics的归一化参数,输入帧的RGB通道分布会和模型训练时预期的完全不符,提取出来的特征会失去参考价值,甚至完全偏离预期。
简单说:预训练模型“认”的是ImageNet的数据分布,你得给它符合这个分布的输入,它才能输出靠谱的特征。
两组参数的来源解析
- Torchvision预训练模型的归一化参数:这是统计ImageNet训练集数百万张图像后,计算得到的RGB三个通道的均值和标准差。这是计算机视觉领域使用预训练CNN模型的标准输入预处理规则,目的是让输入数据和模型训练时的分布对齐。
- Kinetics官方脚本的归一化参数:这是针对Kinetics视频数据集本身计算的通道均值和标准差,专门用于从头训练针对Kinetics的视频分类模型。当你从零开始训练一个模型来做Kinetics的视频分类时,用这组参数可以让模型更快适应Kinetics的数据分布,但它和预训练ResNet的训练分布不匹配,所以不适合用来提取特征。
内容的提问来源于stack exchange,提问作者zuujhyt
相关产品推荐
相关产品推荐

