前提・実現したいこと
画像ペアのデータセットを作成して、バッチサイズずつ画像を取得したいのですが、
以下のエラーがでます。
データセットからカラー画像とグレー画像のペア画像をつくっています。
発生している問題・エラーメッセージ
RuntimeError: stack expects each tensor to be equal size, but got [3, 256, 256] at entry 0 and [1, 256, 256] at entry 46
該当のソースコード
class AlignedDataset(Dataset): def __init__(self, config): self.config = config #生の画像データ self.A_list = self.make_dataset()[0] #グレースケール画像データ self.B_list = self.make_dataset()[1] def __len__(self): return len(self.A_list) def __getitem__(self, index): A_image = self.A_list[index] B_image = self.B_list[index] A = self.transform(image=A_image) B = self.transform(image=B_image) #Aは入力画像なので、 グレースケール #Bはカラー画像 return {'A': B, 'B':A} def make_dataset(self): A=[] B=[] image_list = glob.glob(self.config.dataroot + '*') #データ数が大量すぎるので、減らす。不必要であれば、コメントアウト image_list = image_list[:100] for i in image_list: image = Image.open(i) gray_image = image.convert('L').convert('RGB') A.append(image) B.append(gray_image) return A, B def transform(self, image): transform = transforms.Compose([ transforms.Resize(self.config.load_size), transforms.CenterCrop(self.config.crop_size), transforms.ToTensor(), transforms.Normalize([0.5],[0.5]) ]) return transform(image) class Config(): def __init__(self): self.batch_size = 64 self.load_size=286 self.crop_size =256 self.dataroot='/Users/name/DATASETS/train/' def to_dict(self): parametars ={ 'batch_size':self.batch_size, 'load_size':self.load_size, 'crop_size':self.crop_size, 'dataroot':self.dataroot, } return parametars config = Config() dataset = AlignedDataset(config=config) dataloader = DataLoader( dataset=dataset, batch_size=config.batch_size, shuffle=True ) for i in dataloader: pass >>>エラー
試したこと
torchvision.transforms.Resizeではなく、pillowでresizeしてから、ToTensor(), Normailze()しても同じエラーがでました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。