自定義transform中的變換


背景

上一篇博客介紹了 pytorch 的 transforms 模塊,有需要的移步 研究一下 pytorch 的 transforms 模塊。現在,我想像 T.Normalise() 一樣,對每個圖片做一下對比度增強,而其他的轉換方法保持不變,依舊采用隨機處理。

實現方式是 采用 __call__ 機制,具體如下:

  • from PIL import ImageEnhance
  •  
  • class Contrast(object):
  • def __init__(self,degree):
  • self.degree = degree
  • def __call__(self,img):
  • return contrast(img,self.degree)
  • def contrast(img,degree):
  • enh_contrast = ImageEnhance.Contrast(img)
  • enh_contrast.enhance(degree)
  • return img

上面定義了新的數據轉換方法:Contrast,使用方法如下,以開源的代碼為例 class ChaojieDataset(Dataset):

  •  
  • #2.define dataset
  • class ChaojieDataset(Dataset):
  • def __init__(self,label_list,transforms=None,train=True,test=False):
  • self.test = test
  • self.train = train
  • imgs = []
  • if self.test:
  • for index,row in label_list.iterrows():
  • imgs.append((row[ "filename"]))
  • self.imgs = imgs
  • else:
  • for index,row in label_list.iterrows():
  • imgs.append((row[ "filename"],row["label"]))
  • self.imgs = imgs
  • if transforms is None:
  • if self.test or not train:
  • self.transforms = T.Compose([
  • T.Resize((config.img_weight,config.img_height)),
  • T.ToTensor(),
  • T.Normalize(mean = [ 0.485,0.456,0.406],
  • std = [ 0.229,0.224,0.225])])
  • else:
  • self.transforms = T.Compose([
  • T.Resize((config.img_weight,config.img_height)),
  • T.RandomRotation( 30),
  • T.RandomHorizontalFlip(),
  • T.RandomVerticalFlip(),
  • T.RandomAffine( 45),
  • Contrast( 1.8), ## 在此添加 ##
  • T.ToTensor(),
  • T.Normalize(mean = [ 0.485,0.456,0.406],
  • std = [ 0.229,0.224,0.225])])
  • else:
  • self.transforms = transforms
  • def __getitem__(self,index):
  • if self.test:
  • filename = self.imgs[index]
  • img = Image.open(filename)
  • img = self.transforms(img)
  • return img,filename
  • else:
  • filename,label = self.imgs[index]
  • img = Image.open(filename)
  • img = self.transforms(img)
  • return img,label
  • def __len__(self):
  • return len(self.imgs)

這樣,每一張圖片除了進行歸一化和轉變成張量外,都做了對比度增強,當然也可以設置一個隨機數,每次隨機選擇要增強的對比度。

 

 

 

原博客:http://spytensor.com/index.php/archives/38/


免責聲明!

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



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