semtorch图像语义分割模型训练出现TypeError错误如何解决
根因说明
报错TypeError: __init__() got an unexpected keyword argument 'limit'是因为你当前调用的Rotate类构造函数不支持limit参数:该参数是Albumentations库Rotate类的特有参数,用于指定旋转角度范围;而fastai内置transforms、torchvision.transforms等其他图像增强库的Rotate类没有该参数,通常使用max_deg之类的参数指定旋转角度。
排查解决步骤
步骤1:检查增强类的导入来源
你的代码中使用了SegmentationAlbumentationsTransform对接Albumentations增强,需要保证所有增强类都从Albumentations库导入,正确导入语句如下:from albumentations import Compose, Flip, VerticalFlip, Transpose, Rotate如果是从
fastai.vision.transforms、torchvision.transforms等其他库导入,直接替换导入语句即可解决问题。步骤2:升级Albumentations版本
如果导入来源正确仍报错,说明你安装的Albumentations版本过旧,旧版本Rotate类未使用limit参数,执行如下命令升级到最新版本即可:pip install --upgrade albumentations步骤3:非Albumentations场景的兼容方案
如果你确定要使用当前导入的非Albumentations库的Rotate类,将对应行的参数修改为对应库的合法参数即可,比如fastai的Rotate类使用max_deg指定最大旋转角度,修改为:Rotate(p=0.40, max_deg=10)注意:该场景下需要删除后续的
SegmentationAlbumentationsTransform转换逻辑,改用对应库的分割增强适配方式,否则数据格式不兼容会触发后续报错。
内容的提问来源于stack exchange,提问作者Akshada Pradhan

