def transform_tr(self, sample): composed_transforms = transforms.Compose([ tr.RandomHorizontalFlip(), #随机水平翻转 tr.RandomScaleCrop(base_size=self.args.base_size, crop_size=self.args.crop_size), #随机尺寸裁剪 tr.RandomGaussianBlur(), #随机高斯模糊 tr.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)), #归一化 tr.ToTensor() ]) return composed_transforms(sample)
def transform_tr(self, sample): if not self.random_match: composed_transforms = transforms.Compose([ tr.RandomHorizontalFlip(), tr.RandomScaleCrop(base_size=400, crop_size=400, fill=0), #tr.Remap(self.building_table, self.nonbuilding_table, self.channels) tr.RandomGaussianBlur(), #tr.ConvertFromInts(), #tr.PhotometricDistort(), tr.Normalize(mean=self.source_dist['mean'], std=self.source_dist['std']), tr.ToTensor(), ]) else: composed_transforms = transforms.Compose([ tr.HistogramMatching(), tr.RandomHorizontalFlip(), tr.RandomScaleCrop(base_size=400, crop_size=400, fill=0), tr.RandomGaussianBlur(), tr.Normalize(mean=self.source_dist['mean'], std=self.source_dist['std']), tr.ToTensor(), ]) return composed_transforms(sample)
from torchvision import datasets, transforms import torch.utils.data as data import torch import torch.nn as nn import torch.nn.functional as F import numpy as np from PIL import Image import os import custom_transforms as trans img_transform = transforms.Compose([ trans.RandomHorizontalFlip(), trans.RandomGaussianBlur(), trans.RandomScaleCrop(700, 512), trans.Normalize(), trans.ToTensor() ]) class TrainImageFolder(data.Dataset): def __init__(self, data_dir): self.f = open(os.path.join(data_dir, 'train_id.txt')) self.file_list = self.f.readlines() self.data_dir = data_dir def __getitem__(self, index): img = Image.open( os.path.join(self.data_dir, 'train_images', self.file_list[index][:-1] + '.jpg')).convert('RGB') parse = Image.open( os.path.join(self.data_dir, 'train_segmentations',
num_workers=4) for item in dataloader: train = item['image'] # train = np.array(train) #? print(train.shape) print('sample {} images to calculate'.format(train.shape[0])) mean = np.mean(train.numpy(), axis=(0, 2, 3)) std = np.std(train.numpy(), axis=(0, 2, 3)) return mean, std if __name__ == '__main__': trs = tf.Compose([ tr.RandomHorizontalFlip(), tr.RandomScaleCrop(base_size=512, crop_size=512), tr.RandomGaussianBlur(), #高斯模糊 tr.Normalize(mean=LungDataset.mean, std=LungDataset.std), tr.ToTensor() ]) dataset = LungDataset(root_dir=r'D:\code\U-net', transforms=trs, train=True) # dataset = LungDataset(root_dir=r'D:\code\U-net', transforms = False , train=True) # print(dataset.get_mean_std()) for item in dataset: # print(item['label'].shape) # plt.imshow(image, cmap='gray') # print(item['image']) print(item['image'].min(), item['image'].max(), item['label'].min(), item['label'].max())