Я пытаюсь создать загрузчик данных PyTorch с переменным размером изображения. Вот фрагмент моего кода
def get_imgs(path_to_imgs):
imgs = []
for path in path_to_imgs:
imgs.append(cv2.imread(path))
imgs = np.asarray(imgs)
return imgs
Функция выше берет список путей и загружает изображения из пути в список imgs. Кстати, изображения не одинакового размера. Список выглядит так: imgs = [NumPy массив, NumPy массив ....]. Однако, когда я конвертирую список в np.asarray, он превращает список в dtype = object.
Это мой класс загрузчика данных
class Dataset(torch.utils.data.Dataset):
def __init__(self, path_to_imgs, path_to_label):
'Initialization'
self.path_to_imgs = path_to_imgs
self.path_to_label = path_to_label
self.imgs = get_imgs(path_to_imgs)
self.label = get_pts(path_to_label)
self.imgs = torch.Tensor(self.imgs) **Error here
# self.imgs = torch.from_numpy(self.imgs) ** I tried this as well. Same error
self.label = torch.Tensor(self.label)
self.len = len(self.imgs)
def __len__(self):
'Denotes the total number of samples'
return self.len
def __getitem__(self, index):
return self.imgs, self.label
Когда я пытаюсь преобразовать список изображений в tenor ** он не дает следующую ошибку:
не удается преобразовать np.ndarray типа numpy .object_. Поддерживаются только следующие типы: float64, float32, float16, int64, int32, int16, int8, uint8 и bool.
Я смотрел похожие вопросы здесь и здесь , но они не помогли.