Сравнение предобработки изображений в pytorch и tensorflow

Знакомлюсь с тф, стоит задача переписать код с pytorch на tensorflow для resnet101. Использую метод tf.keras.applications.resnet.preprocess_input, но внешний вид полученных изображений как-то меня смущает - не уверен, так ли они должны выглядеть.

Раньше на pytorch использовал следующий такой алгоритм препроцессинга:

import torchvision as tv
data_transforms = tv.transforms.Compose([
    tv.transforms.Resize((224, 224)),
    tv.transforms.ToTensor(),
    tv.transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])
img = Image.open(img_paths[0])
img.convert('RGB')
img = data_transforms(img)

Для tensorflow мой код выглядит вот так:

img = tf.io.read_file(img_paths[0])
img = tf.image.decode_jpeg(img, channels=3)
img = tf.image.resize(img, (224, 224))
img = tf.keras.applications.resnet.preprocess_input(img)

В документации к resnet.preprocess_input https://www.tensorflow.org/api_docs/python/tf/keras/applications/resnet/preprocess_input сказано: "The images are converted from RGB to BGR, then each color channel is zero-centered with respect to the ImageNet dataset, without scaling", по-идее, как раз то, что нужно. Ниже можно посмотреть на преобразованное таким tf-методом обычное фото Колизея, выведенное с помощью plt.imshow(np.uint8(img)). С ним все хорошо?

В связи с чем два вопроса: равносильны ли вышеуказанные способы предобработки на tf и pytorch? И правильно ли вообще я преобрабатываю фото для resnet101?

введите сюда описание изображения


Ответы (0 шт):