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

Unet分割5通道输出图像获取主色及对应标签的实现问题

问题核心错误点
  • Unet分割头输出的5通道是每个像素对应5个类别的预测概率,不是直接的one-hot编码或者RGB值,直接对概率矩阵做去重统计没有实际意义
  • 你写的colors=counts.argmax()返回的是counts数组最大值的索引位置,不是对应的颜色值,输出0仅代表出现次数最多的概率向量排在去重结果的第0位,和实际标签、颜色没有关联
实现代码
import numpy as np

# 1. 定义标签与RGB的映射关系,和你给出的规则完全对应
label_rgb_map = [
    [0, 255, 0],    # label 0 绿色
    [0, 0, 255],    # label 1 蓝色
    [255, 255, 0],  # label 2 黄色
    [255, 0, 0],    # label 3 红色
    [255, 255, 255] # label 4 白色
]

# 2. 处理模型预测结果,得到每个像素的分类标签
predicted_img = model.predict(image[:,:,:])[0]
# 对最后一维取argmax,得到每个像素概率最高的类别,输出维度为(128,128)
pred_label_mask = np.argmax(predicted_img, axis=-1)

# 3. 统计全图出现次数最多的主类别
unique_labels, label_counts = np.unique(pred_label_mask, return_counts=True)
main_label = unique_labels[label_counts.argmax()]

# 4. 查表得到主类别对应的RGB值
main_rgb = label_rgb_map[main_label]
print('主色RGB值:', main_rgb)

如果需要生成完整的(128,128,3)的彩色预测掩码,可以追加以下代码:

# 生成全图彩色预测掩码
pred_rgb_img = np.zeros((128, 128, 3), dtype=np.uint8)
for label, rgb in enumerate(label_rgb_map):
    pred_rgb_img[pred_label_mask == label] = rgb

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:36:06