fastai v0.7.0中tfms_from_model()的作用是什么?如何手动实现?
fastai v0.7.0
tfms_from_model 功能说明 1. 函数输出内容
tfms_from_model() 会返回两个可调用的变换流水线对象:
train_tfms:训练集专用变换,包含数据增强逻辑val_tfms:验证/测试集专用变换,无随机增强逻辑
2. val_tfms的具体执行操作
不是仅做归一化处理,完整执行流程如下:
- 尺寸调整:将输入图像等比例缩放后,做中心裁剪得到
sz × sz尺寸的正方形图像 - 维度转换:将输入的HWC格式(numpy数组默认的通道在后格式)调整为PyTorch要求的CHW格式(通道在前)
- 模型匹配归一化:针对传入的骨干模型(此处为VGG16)执行标准化,VGG16对应的归一化规则为:输入已缩放到0~1区间的图像,逐通道减去ImageNet均值
[0.485, 0.456, 0.406],再除以标准差[0.229, 0.224, 0.225]
你给出的示例中,变换后需要执行transpose(1,2,0)把CHW转回HWC才能正常显示,也对应了维度转换的操作逻辑。
3. sz设置为56的输出结果
变换的整体逻辑不会变化,唯一区别是尺寸调整环节的目标尺寸改为56×56:
val_tfms处理后输出的数组/张量尺寸为3×56×56train_tfms包含的随机裁剪、缩放等增强逻辑的目标尺寸也会同步改为56×56- 归一化、维度调整的规则保持不变
4. 和自定义normalize逻辑的对比
两者不等价,你的自定义逻辑缺少两个必要步骤:
- 缺少
sz对应的尺寸调整、中心裁剪操作 - 缺少HWC到CHW的维度重排操作
如果你补充了上述两个步骤,且normalize内的均值、标准差和VGG16要求的参数完全一致,那么补全后的逻辑和val_tfms的输出是等价的。
内容的提问来源于stack exchange,提问作者Madara
相关产品推荐
相关产品推荐

