深度學習預測標簽可視化


圖像語義分割預測標簽可視化

前言

​ 圖像語義分割任務中,網絡輸出后經過概率化處理(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM