You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras语义分割数据增强生成全黑掩码问题排查

语义分割数据增强输出全黑掩码问题排查

我在使用Keras开展语义分割任务时,需要对图像与对应掩码同步执行数据增强。所用输入掩码为黑白格式,但增强后输出的掩码完全为黑色,无法定位代码问题,现提出两点疑问:

  • 若处理的掩码为黑白格式,使用cv2.IMREAD_GRAYSCALE参数读取是否正确?
  • 哪些原因会导致增强后输出全黑掩码?

示例素材

  • 输入图像:
    输入图像
  • 输出异常掩码:
    输出全黑掩码

复现代码

img_augmented_path = PATH+'\\new_data\images'
mask_augmented_path = PATH+'\\new_data\masks'

aug = A.Compose([
    A.VerticalFlip(p=0.5),
    A.HorizontalFlip(p=0.5),
])

i = 1

random.seed = 42
while i < 5:
    number = random.randint(0, len(imageset)-1)
    image = imageset[number]
    mask = maskset[number]

    print(image,mask)
    org_image = cv2.cvtColor(cv2.imread(image), cv2.COLOR_BGR2RGB)
    org_mask = cv2.imread(mask, cv2.IMREAD_GRAYSCALE)

    agumented = aug(image=org_image, mask=org_mask)
    transformed_image = augmented['image']
    transformed_mask = augmented['mask']

    new_image_path = '%s\\augemented_image_%s.png'%(img_augmented_path,i)
    new_mask_path = '%s\\augemented_mask_%s.png'%(mask_augmented_path,i)
    io.imsave(new_image_path,transformed_image)
    io.imsave(new_mask_path,transformed_mask)
    i = i+1

问题解答

1. 灰度模式读取黑白掩码的正确性

该读取方式完全正确。黑白二值掩码属于单通道图像,像素值仅包含0(黑色,对应背景)、255(白色,对应前景)两类,使用cv2.IMREAD_GRAYSCALE读取会直接返回shape为(H,W)的单通道数组,完全匹配语义分割任务的掩码输入格式,无需额外转换为RGB/BGR三通道格式。

2. 输出全黑掩码的常见原因

结合代码,有3个直接/间接导致问题的点:

  • 核心错误:变量名拼写不一致:调用增强pipeline返回值时写的变量名是agumented(正确拼写为augmented,漏写了字母n),但后续提取增强结果时调用的是augmented字典。如果之前运行代码时内存中残留了其他全0/全黑值的augmented变量,代码不会触发NameError报错,会直接读取旧的全黑数据保存,最终得到全黑掩码。
  • 次要错误:随机种子设置失效:random.seed是函数,固定种子的正确写法为random.seed(42),现有写法是将seed函数直接赋值为整数42,完全没有起到固定随机结果的作用,该问题不会直接导致全黑掩码,但会让增强结果无法复现。
  • 隐性保存坑:数值范围/类型不匹配:如果读取的掩码在流程中被意外归一化到0-1浮点范围,直接调用io.imsave保存时,会将所有小于1的像素值识别为0(黑色),最终输出全黑图。保存前可打印transformed_mask.min()、transformed_mask.max()和transformed_mask.dtype确认:正常掩码应为uint8类型,数值范围在0-255区间,如果是0-1浮点范围,需要先乘255再转uint8类型后保存。

修复顺序:先统一增强返回值的变量名拼写,修正随机种子写法,保存掩码前校验数组类型和数值范围,即可解决全黑问题。

内容的提问来源于stack exchange,提问作者dspeanut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:45:37