二分类语义分割结果彩色可视化代码

对于一个特定的数据集,我们需要关注分类器的预测结果。我们应该从后往前看,先看分类器的预测结果是Positive(正样本)还是Negative(负样本)?如果分类器预测正样本,那么我们需要查看实际结果是否也是正样本,如果是,则说明分类器预测正确,否则说明分类器预测错误。如果分类器预测负样本,那么我们需要查看实际结果是否也是负样本,如果是,则说明分类器预测正确,否则说明分类器预测错误。

在分类器的预测结果中,我们还需要关注四个重要的指标:True Positive(TP)、False Positive(FP)、True Negative(TN)和False Negative(FN)。TP表示分类器预测结果为正样本,实际也为正样本,即正样本被正确识别的数量;FP表示分类器预测结果为正样本,实际为负样本,即误报的负样本数量;TN表示分类器预测结果为负样本,实际也为负样本,即负样本被正确识别的数量;FN表示分类器预测结果为负样本,实际为正样本,即漏报的正样本数量。

通过对这四个指标的分析,我们可以了解分类器的准确率、召回率、精确率和F1值等指标,从而评估分类器的性能。

具体代码如下:

将两张图像进行融合时,在不涉及透明度的情况下(设置透明会导致提取结果的白色变成灰色),会涉及到背景问题,存在FN色彩融不进去的现象,所以需要另写循环来对色彩进行调整。

# -*- encoding: utf-8 -*-

from PIL import Image
import cv2
import numpy as np


def visualize_errors(image_path, mask_path, prediction_path):
    image = cv2.imread(image_path)
    mask = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)
    prediction = cv2.imread(prediction_path, cv2.IMREAD_GRAYSCALE)

    # 创建 FP 和 FN 的掩膜
    fp_mask = np.zeros_like(mask)
    fn_mask = np.zeros_like(mask)

    # 判断每个像素的分类是否正确,并标记 FP 和 FN 区域
    for i in range(mask.shape[0]):
        for j in range(mask.shape[1]):
            if mask[i, j] == 255 and prediction[i, j] != 255:  # FN
                fn_mask[i, j] = 255

    for i in range(mask.shape[0]):
        for j in range(mask.shape[1]):
            if mask[i, j] == 0 and prediction[i, j] == 255:  # FP
                fp_mask[i, j] = 255

    fn_visualized = np.stack((fn_mask, fn_mask, fn_mask), axis=2)
    fp_visualized = np.stack((fp_mask, fp_mask, fp_mask), axis=2)

    mask_3d_fp = np.all(fp_visualized == [255, 255, 255], axis=2)
    fp_visualized[mask_3d_fp] = [255, 0, 0]  # FP blue
    result = cv2.add(fp_visualized, image)

    for i in range(fn_visualized.shape[0]):
        for j in range(fn_visualized.shape[1]):
            if fn_visualized[i, j][0] == 255:
                result[i, j] = [0, 0, 255]  # FN red

    cv2.imshow("result Image", result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    cv2.imwrite('fused_image.jpg', result)


if __name__ == '__main__':
    # 图像=标签
    image_path = "10007.png"
    # 标签
    mask_path = "10007.png"
    # 预测 8位24位均可
    prediction_path = "10007pre.png"
    visualize_errors(image_path, mask_path, prediction_path)

 运行结果图

1eefcaf110a44776a6f04ff0c373e720.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yokon_D

您的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值