|
|
import torch |
|
|
import torchvision |
|
|
import numpy as np |
|
|
from PIL import Image |
|
|
import os |
|
|
from torchvision import transforms |
|
|
import pandas as pd |
|
|
|
|
|
|
|
|
from torch.utils.data import Dataset |
|
|
|
|
|
|
|
|
|
|
|
tfms_normal = transforms.Compose([ |
|
|
transforms.CenterCrop(size=(256,256)), |
|
|
transforms.ToTensor() |
|
|
|
|
|
]) |
|
|
|
|
|
tfms_target = transforms.CenterCrop(size = (256,256)) |
|
|
|
|
|
|
|
|
class Data_provider_SYSU(Dataset): |
|
|
|
|
|
|
|
|
def __init__(self, path): |
|
|
self.data_path = path |
|
|
self.pre_path = os.path.join(path, "time1") |
|
|
self.post_path = os.path.join(path, "time2") |
|
|
self.target_path = os.path.join(path, "label") |
|
|
|
|
|
def __len__(self): |
|
|
return len(os.listdir(self.post_path)) |
|
|
|
|
|
def __getitem__(self, idx): |
|
|
|
|
|
post_list = os.listdir(self.pre_path) |
|
|
pre_list = os.listdir(self.post_path) |
|
|
target_list = os.listdir(self.target_path) |
|
|
|
|
|
post_list.sort() |
|
|
pre_list.sort() |
|
|
target_list.sort() |
|
|
|
|
|
pre_image_path = os.path.join(self.pre_path, pre_list[idx]) |
|
|
post_image_path = os.path.join(self.post_path, post_list[idx]) |
|
|
target_path = os.path.join(self.target_path, target_list[idx]) |
|
|
|
|
|
pre_image = Image.open(pre_image_path) |
|
|
post_image = Image.open(post_image_path) |
|
|
target_image = Image.open(target_path) |
|
|
|
|
|
pre_image = tfms_normal(pre_image) |
|
|
post_image = tfms_normal(post_image) |
|
|
|
|
|
|
|
|
target_image = torch.tensor(np.array(tfms_target(target_image))/255).long() |
|
|
|
|
|
|
|
|
|
|
|
return pre_image, post_image, target_image |
|
|
|
|
|
|
|
|
class Data_provider_levir(Dataset): |
|
|
|
|
|
|
|
|
def __init__(self, path): |
|
|
self.data_path = path |
|
|
self.pre_path = os.path.join(path, "A") |
|
|
self.post_path = os.path.join(path, "B") |
|
|
self.target_path = os.path.join(path, "label") |
|
|
|
|
|
def __len__(self): |
|
|
return len(os.listdir(self.post_path)) |
|
|
|
|
|
def __getitem__(self, idx): |
|
|
|
|
|
pre_list = os.listdir(self.pre_path) |
|
|
post_list = os.listdir(self.post_path) |
|
|
target_list = os.listdir(self.target_path) |
|
|
|
|
|
post_list.sort() |
|
|
pre_list.sort() |
|
|
target_list.sort() |
|
|
|
|
|
pre_image_path = os.path.join(self.pre_path, pre_list[idx]) |
|
|
post_image_path = os.path.join(self.post_path, post_list[idx]) |
|
|
target_path = os.path.join(self.target_path, target_list[idx]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pre_image = Image.open(pre_image_path) |
|
|
post_image = Image.open(post_image_path) |
|
|
target_image = Image.open(target_path) |
|
|
|
|
|
pre_image = tfms_normal(pre_image) |
|
|
post_image = tfms_normal(post_image) |
|
|
|
|
|
|
|
|
target_image = torch.tensor(np.array(target_image)/ 255).long() |
|
|
|
|
|
|
|
|
|
|
|
return pre_image, post_image, target_image |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Data_provider_WHU(Dataset): |
|
|
|
|
|
|
|
|
def __init__(self, path, file): |
|
|
self.data_path = path |
|
|
self.pre_path = os.path.join(path, "A") |
|
|
self.post_path = os.path.join(path, "B") |
|
|
self.target_path = os.path.join(path, "label") |
|
|
self.data_names = np.array(pd.read_csv(file, names=["tt"])) |
|
|
|
|
|
|
|
|
def __len__(self): |
|
|
return len(self.data_names) |
|
|
|
|
|
def __getitem__(self, idx): |
|
|
|
|
|
name = self.data_names[idx].item() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pre_image_path = os.path.join(self.pre_path,name ) |
|
|
post_image_path = os.path.join(self.post_path,name ) |
|
|
target_path = os.path.join(self.target_path, name) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pre_image = Image.open(pre_image_path) |
|
|
post_image = Image.open(post_image_path) |
|
|
target_image = Image.open(target_path) |
|
|
|
|
|
|
|
|
pre_image = tfms_normal(pre_image) |
|
|
post_image = tfms_normal(post_image) |
|
|
|
|
|
target_image = torch.tensor(np.array(tfms_target(target_image)) / 255).long() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return pre_image, post_image, target_image |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|