使用BasicSR训练模型报错No module named 'augmentations'如何解决
BasicSR框架训练时augmentations模块缺失报错解决方案
问题描述
使用BasicSR框架开展模型训练时,程序无法识别augmentations模块触发报错,此前尝试安装augmentation、albumentation相关依赖包,问题仍未解决。
相关代码与报错信息
模块导入代码
import os.path import random import numpy as np import cv2 import torch import torch.utils.data as data import data.util as util import sys sys.path.append('../codes/scripts') sys.path.append('../codes/data') import augmentations # 该行触发模块导入错误
模块调用代码
# 随机裁剪(优先降低计算开销,将图像调整至符合要求的尺寸) if img_HR.shape[0] > HR_size or img_HR.shape[1] > HR_size: # 此处缩放比例取图像本身的尺寸比例,而非训练配置的缩放比例(适配动态缩放场景) scaleor = img_HR.shape[0]//img_LR.shape[0] img_HR, img_LR = augmentations.random_crop_pairs(img_HR, img_LR, HR_size, scaleor)
控制台报错信息
File "D:\basicsrtrainmodel\BasicSR\codes\data\LRHROTF_dataset.py", line 12, in <module> import augmentations ModuleNotFoundError: No module named 'augmentations'
排查思路与可行解决方法
- 先明确核心认知:之前安装的
augmentation、albumentations均为第三方公开数据增强库,和BasicSR项目内自定义的本地augmentations.py模块完全无关,安装这类第三方包无法解决本地模块导入失败的问题。 - 优先排查路径配置错误:
- 原有代码中写的相对路径可靠性极低:相对路径的解析基准是程序启动时的工作目录,而非当前py文件的存放目录,Windows环境下启动训练时如果工作目录和预期不一致,路径会直接失效。且原有路径写法本身存在逻辑问题:如果当前数据集文件存放在
codes/data目录下,../codes/data实际指向的是codes/codes/data这一不存在的路径,必然找不到目标文件。 - 修复方案:将硬编码的相对路径替换为基于当前文件位置的绝对路径,替换原有sys.path追加的代码即可:
# 放在import augmentations之前 current_file_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.join(current_file_dir, '../scripts')) sys.path.append(current_file_dir)
- 原有代码中写的相对路径可靠性极低:相对路径的解析基准是程序启动时的工作目录,而非当前py文件的存放目录,Windows环境下启动训练时如果工作目录和预期不一致,路径会直接失效。且原有路径写法本身存在逻辑问题:如果当前数据集文件存放在
- 其次检查本地文件是否存在:查看
codes/data目录下是否存在augmentations.py文件,若文件缺失(拉取代码时漏传、误删、重命名都会导致该问题),将包含random_crop_pairs方法的augmentations脚本放入该目录即可。 - 更稳定的导入写法调整:如果确认文件存在、路径配置正确,可以直接替换裸导入语句为包内相对导入,不需要额外配置sys.path,将
import augmentations修改为from . import augmentations即可,该写法会直接从当前数据集文件所在的目录下检索目标模块,不受工作目录变动影响。 - 验证技巧:如果上述操作后仍报错,可以在
import augmentations前添加print(sys.path),运行后查看打印的路径列表中是否包含augmentations.py所在的文件夹,若不存在则继续调整路径配置直到目标目录出现在路径列表中。
内容的提问来源于stack exchange,提问作者teste colab
相关产品推荐
相关产品推荐

