구현해보기
PyTorch
Model
class SRCNN(nn.Module):
def __init__(self,f1=9,f2=5,f3=5,n1=64,n2=32):
super(SRCNN,self).__init__()
self.conv1 = nn.Conv2d(3,n1,f1,padding=f1//2)
self.conv2 = nn.Conv2d(n1,n2,f2,padding=f2//2)
self.conv3 = nn.Conv2d(n2,3,f3,bias=False,padding=f3//2)
def forward(self,x):
x = F.relu(self.conv1(x))
x = F.relu(self.conv2(x))
x = self.conv3(x)
return xDataset
#학습 데이터셋
class TrainDataset(Dataset):
def __init__(self,path):
self.paths = glob.glob(path)
self.trans = transforms.Compose([transforms.Resize((11,11)),
transforms.Resize((33,33), interpolation=InterpolationMode.BICUBIC),
transforms.ToTensor()])
def __getitem__(self, index):
x = Image.open(self.paths[index])
y = Image.open(self.paths[index])
x = self.trans(x)
y = transforms.ToTensor()(y)
return x,y
def __len__(self):
return len(self.paths)
#테스트 데이터셋
class TestDataset(Dataset):
def __init__(self,path):
self.paths = glob.glob(path)
def __getitem__(self, index):
x = Image.open(self.paths[index])
y = Image.open(self.paths[index])
w = x.width//3 *3
h = x.height//3 *3
x = x.resize([w//3,h//3],resample=Image.BICUBIC)
x = x.resize([w,h],resample=Image.BICUBIC)
x = transforms.ToTensor()(x)
y = transforms.ToTensor()(y.resize([w,h],resample=Image.BICUBIC))
return x,y
def __len__(self):
return len(self.paths)Result





Last updated