fastai调用learner.predict预测单图报AttributeError问题排查
错误原因
learn.predict() 不支持直接传入字符串格式的图片路径。方法内部会对输入对象调用apply_tfms方法,执行和训练阶段完全一致的尺寸调整、数据增强、归一化等预处理操作,字符串类型不存在该方法,因此抛出AttributeError: 'str' object has no attribute 'apply_tfms'错误。
修复方案
提前使用fastai框架自带的open_image工具加载目标图片,生成框架可识别的Image对象后,再传入predict方法即可。
修复后的调用代码如下:
# 从fastai.vision模块导入图片加载工具 from fastai.vision import open_image # 加载待预测的单张图片 img = open_image('test/0.jpg') # 执行预测,返回值依次为预测类别、类别对应索引、所有类别的预测概率 pred_class, pred_idx, pred_probs = learn.predict(img)
注意事项:
- 传入
open_image的图片路径需要和运行代码时的工作目录匹配,若触发文件不存在报错,优先检查路径拼写、相对路径对应关系是否正确- 不要直接传入PIL库读取的图像对象、numpy数组格式的原始图像数据,这类数据不会自动对齐训练阶段的预处理逻辑,容易出现预测结果偏差或格式报错,单张图预测优先使用框架自带的
open_image加载。
内容的提问来源于stack exchange,提问作者Devon Lai
相关产品推荐
相关产品推荐

