네트워크를 훈련 할 때 데이터 증가를 사용하여 데이터 세트를 확장하면 pytorch가 일반적으로 사용됩니다.
transforms.Compose([
transforms.RandomSizedCrop(max(resize)),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
변형하는 방법. 변환에는 많은 임의 변환 방법이 있으며 입력 이미지와 레이블 이미지가 동일한 변환을 수행하도록해야하는 경우 문제가 발생합니다.
따라서 모든 변환 방법은 다음과 같이 분해됩니다.
p1 = random.randint(0,1)
p2 = random.randint(0,1)
transform = transforms.Compose([
transforms.ToPILImage(),
transforms.RandomCrop(128),
transforms.RandomHorizontalFlip(p1),
transforms.RandomVerticalFlip(p2)
])
seed = np.random.randint(2147483647) # make a seed with numpy generator
random.seed(seed) # apply this seed to img tranfsorms
x = transform(x)
random.seed(seed) # apply this seed to img tranfsorms
t = transform(t)
입력 (x) 및 레이블 (t)이 동시에 (확률은 1) 또는 동시에 변경되지 않도록 변환의 두 확률 무작위 변환에 각각 적용되는 무작위로 주어진 p1 p2 (0 또는 1) (확률은 0), 확률에 의존하지 않는 randomcrop의 경우, 기능이 적용되기 전에 매번 동일한 종자를 설정하여 임의의 작물 면적이 동일하도록 할 수 있습니다.