Для выполнения задачи, связанной с регрессией, мне нужно обучить мои модели генерировать карты плотности из изображений RGB. Чтобы увеличить свой набор данных, я решил перевернуть все изображения по горизонтали. В связи с этим я также должен перевернуть свои изображения истинной земли, и я сделал это.
dataset_for_augmentation.listDataset(train_list,
shuffle=True,
transform=transforms.Compose([
transforms.RandomHorizontalFlip(p=1),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
]),
target_transform=transforms.Compose([
transforms.RandomHorizontalFlip(p=1),
transforms.ToTensor()
]),
train=True,
resize=4,
batch_size=args.batch_size,
num_workers=args.workers),
Но вот проблема: по какой-то причине функция PyTorch transforms.RandomHorizontFlip принимает только изображения PIL (numpy неразрешено) в качестве ввода. Поэтому я решил преобразовать тип в PIL Image.
img_path = self.lines[index]
img, target = load_data(img_path, self.train, resize=self.resize)
if type(target[0][0]) is np.float64:
target = np.float32(target)
img = Image.fromarray(img)
target = Image.fromarray(target)
if self.transform is not None:
img = self.transform(img)
target = self.target_transform(target)
return img, target
И да, эта операция требует огромного количества времени. Учитывая, что мне нужно, чтобы эта операция выполнялась для тысяч изображений, недопустимо использовать 23 секунды (не более полсекунды) для каждой партии.
2019-11-01 16:29:02,497 - INFO - Epoch: [0][0/152] Time 27.095 (27.095) Data 23.150 (23.150) Loss 93.7401 (93.7401)
Буду признателен за любые предложения по ускорениюмой процесс увеличения