Fork me on GitHub

深度学习预测标签可视化

图像语义分割预测标签可视化

前言

​ 图像语义分割任务中,网络输出后经过概率化处理(sigmoid/softmax)和取索引(torch.argmax)后可以得到一个标签数组,标签的值为0/1/2/3...一个值代表一个类别。

​ 这里记录一下输出结果的可视化方法。

方法

  1. 标签数组转彩色图片

    import skimage.io
    import numpy as np
    
    filename = 'E:\Tablefile\mask.png'
    arr = skimage.io.imread(filename)
    
    data = np.zeros((arr.shape[0], arr.shape[1], 3)) + 255
    key1 = arr==0 # 代表类别,这里只有2类
    key2 = arr==1 
    
    data[:,:,0][key1] = 255 # 橙色
    data[:,:,1][key1] = 128
    data[:,:,2][key1] = 0
    
    data[:,:,0][key2] = 0  # 青色
    data[:,:,1][key2] = 255
    data[:,:,2][key2] = 255
    
    skimage.io.imsave('E:\Tablefile\label.png',data)
    
  2. 彩色图片与原图的叠加显示

    '''
    @opencv  cv2.addWeighted
    '''
    import cv2
    import numpy as np
     
    img = cv2.imread(r'E:\Tablefile\land.png')
    mask = cv2.imread(r'E:\Tablefile\label.png')
     
    img = cv2.resize(img, (400,400))
    mask = cv2.resize(mask, (400,400))
    
    # 图像融合
    combineValue = cv2.addWeighted(img, 0.5, mask, 0.5, 0) # 0为gamma系数
    cv2.imshow('combine', combineValue)
    cv2.waitKey(0)
    # cv2.imwrite('E:\Tablefile\overlayBycv2.png', combine)
    
    
    '''
    @PIL  Image.blend
    '''
    from PIL import Image
    import matplotlib.pyplot as plt
     
    #image 原图 
    #mask 彩色mask
    image = Image.open(r'E:\Tablefile\land.png')
    mask = Image.open(r'E:\Tablefile\label.png')
    
    image = image.resize((400,400))
    mask = mask.resize((400,400))
    
    image = image.convert('RGBA')
    mask = mask.convert('RGBA')
     
    # 两幅图像进行合并时
    # 按公式:blended_img = img*(1–alpha) + mask*alpha 
    image = Image.blend(image, mask, 0.5)
    image.save("E:\Tablefile\overlayLabelImg.png")
    image.show()
    

    彩色图片与原图的合成的原理是将两幅图像进行加权计算,同时设置透明度和gamma系数的权重。这里有现成的cv2.addWeighted和PIL的Image.blend

    可以使用。

    原生方法参见https://blog.csdn.net/qq_36068446/article/details/95345137?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=533279a1-d30a-4bd1-86dc-16306fa5888a&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

    但该方法中貌似有些许问题?正确的计算方法暂时不详,可参见opencv源码。

结果

image-20210225172441837
posted @ 2021-02-25 17:30  Rser_ljw  阅读(1352)  评论(0编辑  收藏  举报