albumentations的Normalize变换是否会对mask执行归一化操作?
albumentations.Normalize 对mask的处理逻辑与集成指南 1. 变换对mask的处理规则
albumentations.Normalize(mean, std) 内部默认只会对输入的image执行减均值、除以标准差的归一化操作,完全不会修改mask的数值。该变换会自动识别输入目标的类型,仅对图像类张量做数值变换,掩码会原封不动返回。
2. 正确集成方式
你不需要对Normalize做特殊参数调整,直接将其放入变换组合即可,参考示例:
import albumentations as A from albumentations.pytorch import ToTensorV2 # 定义变换流水线 train_transform = A.Compose([ A.RandomResizedCrop(height=256, width=256), A.HorizontalFlip(p=0.5), A.ColorJitter(p=0.3), # 直接插入Normalize即可,不需要额外配置掩码相关参数 A.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ToTensorV2(), ]) # 调用变换时按规范传参 aug_output = train_transform(image=input_image_array, mask=input_mask_array) processed_image = aug_output['image'] processed_mask = aug_output['mask']
如果需要传入多个掩码,只需在Compose阶段声明附加目标即可,Normalize依然不会修改这些掩码:
train_transform = A.Compose( [ A.RandomResizedCrop(height=256, width=256), A.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ToTensorV2(), ], # 声明附加掩码,类型和主mask一致 additional_targets={"mask1": "mask", "mask2": "mask"} )
3. 是否需要手动添加处理逻辑
正常场景下不需要为掩码额外添加和Normalize相关的处理逻辑。如果你有特殊需求,比如需要将掩码的取值范围从0255缩放到01,可以单独对掩码做数值转换,不要通过修改Normalize的参数实现。
内容的提问来源于stack exchange,提问作者Olli
相关产品推荐
相关产品推荐

