Я использую pytorch для создания классификатора нейронной сети.
Я где-то читал, что многие python пакеты используют один и тот же c ++ api при чтении изображения, поэтому я подумал, что skimage.io.imread и cv2. imread будет таким же, за исключением порядка каналов. Однако я получил подобное предупреждение в skimage,
/xxx/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:766: UserWarning: Possibly corrupt EXIF data. Expecting to read 1245184 bytes but only got 0. Skipping tag 0
" Skipping tag %s" % (size, len(data), tag)
/xxx/lib/python3.6/site-packages/PIL/TiffImagePlugin.py:785: UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only got 11.
warnings.warn(str(msg))
, но cv2 работает без предупреждений.
Мой код выглядит следующим образом:
...
def __getitem__(self, index):
file = os.path.join(self.root_dir, self.files[index])
image = io.imread(file)
# image = cv2.imread(file)
if self.transform:
image = self.transform(image)
return image
transform = transforms.Compose([
transforms.ToPILImage(),
transforms.Resize((128, 128)),
transforms.RandomHorizontalFlip(),
transforms.ToTensor()
])