Ejemplo n.º 1
0
 def _get_cutout_train_transform(self):
     transform = torchvision.transforms.Compose([
         transforms.normalize(self.mean, self.std),
         transforms.cutout(self.config['cutout_size'],
                           self.config['cutout_prob'],
                           self.config['cutout_inside']),
         transforms.to_tensor(),
     ])
     return transform
Ejemplo n.º 2
0
    def __init__(self, root, transforms=None, train=True, test=False):
        self.test = test
        imgs = [os.path.join(rppt, img) for img in os.listdir(root)]

        #         test1:data/test1/8973.jpg
        #         train:data/train/cat.10004.jpg
        if self.test:
            #             如果为测试集
            imgs = sorted(imgs,
                          key=lambda x: int(x.split('.')[-2].split('/')[-1]))
        else:
            #             如果为训练集
            imgs = sorted(imgs, key=lambda x: int(x.split('.')[-2]))
        imgs_num = len(imgs)

        if self.test:
            self.imgs = imgs
        elif train:
            #             训练集
            self.imgs = imgs[:int(0.7 * imgs_num)]
        else:
            #             验证集
            self.imgs = imgs[int(0.7 * imgs_num):]
        if transforms is None:
            normalize = T.normalize(mean=[0.485, 0.456, 0.406],
                                    std=[0.229, 0.224, 0.225])
            if self.test or not train:
                self.transforms = T.Compose([
                    T.resize(224),
                    T.CenterCrop(224),
                    T.ToTensor(), normalize
                ])


#             训练集
            else:
                self.transforms = T.Compose([
                    T.Resize(256),
                    T.RandomReSizedCrop(224),
                    T.RandomHorizontalFlip(),
                    T.ToTensor(), normalize
                ])

        def __getitem__(self, index):
            img_path = self.imgs[index]
            if self.test:
                label = int(self.imgs[index].split('.')[-2].split('/')[-1])
            else:
                label = 1 if 'dog' in img_path.split('/')[-1] else 0
            data = Image.open(img_path)
            data = self.transforms(data)
            return data, label

        def __len__(self):
            return len(self.imgs)
Ejemplo n.º 3
0
 def _get_cutout_train_transform(self):
     transform = torchvision.transforms.Compose([
         torchvision.transforms.RandomCrop(28, padding=4),
         torchvision.transforms.RandomHorizontalFlip(),
         transforms.normalize(self.mean, self.std),
         transforms.cutout(self.config['cutout_size'],
                           self.config['cutout_prob'],
                           self.config['cutout_inside']),
         transforms.to_tensor(),
     ])
     return transform
Ejemplo n.º 4
0
 def _get_random_erasing_train_transform(self):
     transform = torchvision.transforms.Compose([
         transforms.normalize(self.mean, self.std),
         transforms.random_erasing(
             self.config['random_erasing_prob'],
             self.config['random_erasing_area_ratio_range'],
             self.config['random_erasing_min_aspect_ratio'],
             self.config['random_erasing_max_attempt']),
         transforms.to_tensor(),
     ])
     return transform
Ejemplo n.º 5
0
 def _get_random_erasing_train_transform(self):
     transform = torchvision.transforms.Compose([
         torchvision.transforms.Resize((32,32)),
         torchvision.transforms.ColorJitter(0.1,0.1,0.1),
         # torchvision.transforms.RandomRotation(15),
         # RandomAffine(degrees=15,scale=(0.8,1.2),shear=15),
         torchvision.transforms.RandomCrop(32, padding=4),
         torchvision.transforms.RandomHorizontalFlip(),
         transforms.normalize(self.mean, self.std),
         transforms.random_erasing(
             self.config['random_erasing_prob'],
             self.config['random_erasing_area_ratio_range'],
             self.config['random_erasing_min_aspect_ratio'],
             self.config['random_erasing_max_attempt']),
         transforms.to_tensor(),
     ])
     return transform
if __name__ == '__main__':

    img_path = glob.glob("..\datasets\street_signs\mchar_train\mchar_train\*.png")
    # 最好传入Dataset类的是已经处理好的label,否则容易报错
    label_path = "..\datasets\street_signs\mchar_train.json"
    label_path=json.load(open(label_path))
    label_path=[label_path[x]['label'] for x in label_path]
    print(len(img_path),len(label_path))

    train_loader = torch.utils.data.DataLoader(
        data_set(img_path, label_path,
                 transforms.Compose([
                     transforms.resize((64, 128)),
                     transforms.randomcrop((60, 120)),
                     transforms.colorjitter(0.3, 0.3, 0.2),
                     transforms.randomrotation(5),
                     transforms.totensor(),
                     transforms.normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
                 ])),
        batch_size=40,
        shuffle=True,
        num_workers=10,
    )

    for inputs,labels in train_loader:
        print(inputs)
        print(labels)
        break


def img_transform_test(crop_size):
    normalize = transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
    return transforms.Compose([transforms.normalize()])
Ejemplo n.º 8
0

class ToTensor(object): #Transforms from cv2 array data to tensor, always needed to do 
	def __init__(self):
		self.output_size = ""#output_size

	def __call__(self):
		""



data_transform = transforms.Compose([
        Resize(256),
        Crop(128),
        transforms.ToTensor(), # WHy need to convert tot tensor ? 
        transforms.normalize() # Why good idea to normalize data

    ])







# Data Loader

dataset = OttawaDataset(csv_file = "data/ottawa.csv", 
						root_dir = "data/Ottawa-Dataset/", 
						transform= data_transform)
Ejemplo n.º 9
0
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torchvision
from torchvision import transforms
import random
from torch.autograd import Variable

#<------------Trainingdatenvorbereiten----------------------->#

#Bilder vereinheitlichen
normalize = transforms.normalize(

    #Durchschnitt Normalisierungsvektor um die Belichtung etc. zu vereinheitlichen
    mean=[0.485, 0.456, 0.406],

    #Normalverteilung, wie weit diese normal vom Durchschnitt abweichen
    std=[0.229, 0.224, 0.225])

transform = transforms.Compose([

    #Größe anpassen
    transforms.Resize(780),

    #Breite und Höhe gleiche Größe und zentriert
    transforms.CenterCrop(780),

    #als Tensor
    transforms.ToTensor(),
 def _get_test_transform(self):
     transform = torchvision.transforms.Compose([
         transforms.normalize(self.mean, self.std),
         transforms.to_tensor(),
     ])
     return transform
 def _add_normalization(self):
     self._train_transforms.append(
         transforms.normalize(self.mean, self.std))
Ejemplo n.º 12
0

def activation(x):
    """
		Sigmoid activation function

		Arguments
		---------
		x: torch.Tensor
	"""
    return 1 / (1 + torch.exp(-x))


transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
trainset = datasets.MNIST('MNIST_data/',
                          download=True,
                          train=True,
                          transform=transform)
trainloader = torch.utils.data.DataLoader(trainset,
                                          batch_size=64,
                                          shuffle=True)

# Get our data
images, labels = next(iter(trainloader))
# Flatten images
inputs = images.view(images.shape[0], -1)

w1 = torch.randn(784, 256)