iT邦幫忙

2021 iThome 鐵人賽

DAY 17
1
自我挑戰組

資料分析及AI深度學習-簡單基礎實作系列 第 17

DAY17:Pytorch transforms(下)

  • 分享至 

  • xImage
  •  

torchvision.transforms

transforms可以用來改變樣本的多樣性,例如:旋轉、平移等等,訓練圖像辨識時,一定會用到的工具,現在來跟大家介紹他有哪些用法!我拿還未處理過的資料來當示範。這裡我把圖片都轉換成400*400的大小。

    from torchvision import transforms
    from PIL import Image

    def img_loader(img_path):
        image = Image.open(img_path)
        img = image.resize((400, 400),Image.ANTIALIAS)
        return img.convert('RGB')

  • transforms.Resize

    • 重置影像解析度。

      • size:圖像大小,height * width,若height > width,則(size * height / width, size),若只設定一個數a,則為(a*a)。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.Resize(size=(300))])
      img = tranform(img)
      img.show()
      

      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.Resize(size=(300,200))])
      img = tranform(img)
      img.show()
      


  • 標準化:transforms.Normalize

    • 對資料按通道進行標準化,即先減均值,再除以標準差。

      • mean:均值。
      • std:標準差。

  • 轉為tensor:transforms.ToTensor

    • 將PIL Image或者 ndarray 轉換為tensor,並且歸一化至[0-1],歸一化至[0-1]是直接除以255。

  • 修改亮度、對比度和飽和度:transforms.ColorJitter

    • 调整亮度、对比度、饱和度、色相。

      • brightness:調整亮度因子。(當為 (a, b) 時,從 [a, b] 中選擇)。
      • contrast:對比度。(當為 (a, b) 時,從 [a, b] 中選擇)。
      • saturation:飽和度。(當為 (a, b) 時,從 [a, b] 中選擇)。
      • hue:色相參數。(當為 (a, b) 時,從 [a, b] 中選擇)。

      調整亮度

      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.ColorJitter(brightness=(0.3,1.5))])
      img = tranform(img)
      img.show()
      

      調整對比

      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.ColorJitter(contrast=(0.3,0.5))])
      img = tranform(img)
      img.show()
      
      


      調整飽和度

      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.ColorJitter(saturation=(0.3,0.5))])
      img = tranform(img)
      img.show()
      

      調整色相

      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.ColorJitter(hue=(0.3,0.5))])
      img = tranform(img)
      img.show()
      


  • 轉為灰階圖:transforms.Grayscale

    • 轉為灰階圖。

      • num_output_channels:輸出的通道數,只能設置1或3。
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform =         transforms.Compose([transforms.Grayscale(num_output_channels=1)])
      img = tranform(img)
      img.show()
      


  • 隨機轉為灰階圖:transforms.RandomGrayscale
    • 隨機率p轉為灰階圖。
      • p:轉為灰階圖的機率。

  • 仿射變換:transforms.RandomAffine
      
    • 對圖像進行仿射變換,為2維的線性轉換。有五種基本操作,旋轉、平移、縮放、錯切及翻轉。

      • degrees:旋轉角度。
      • translate:平移區間。設置為比例,如(0.3,0.3)。
      • scale:縮放比例。
      • shear:錯切角度。例如30,則為(-30,30)
      • fillcolor:填充的顏色。
        旋轉
      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.RandomAffine(degrees=30)])
      img = tranform(img)
      img.show()
      

      平移

      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.RandomAffine(degrees= 0 ,translate=(0.2,0.5))])
      img = tranform(img)
      img.show()
      

      縮放

      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.RandomAffine(degrees= 0 ,scale=(0.2,0.5))])
      img = tranform(img)
      img.show()
      

      錯切

      img = img_loader(r"C:\Users\Frank\PycharmProjects\practice\mountain\train\5_拓.jpg")
      tranform = transforms.Compose([transforms.RandomAffine(degrees= 0 ,shear=(30))])
      img = tranform(img)
      img.show()
      


上一篇
DAY16:Pytorch transforms(上)
下一篇
DAY18:激活函數
系列文
資料分析及AI深度學習-簡單基礎實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言