Сравнение данных, загруженных с использованием ImageDataGenerator () и cv2.imread () - PullRequest
0 голосов
/ 18 апреля 2020

Я новичок в классификации изображений. Я построил модель для классификации собак и кошек и сохранил модель в виде файла h5. Для обучения данные загружались с использованием ImageDataGenerator(). Для тестирования я использовал cv2.imread() для загрузки данных. Для подтверждения я просто загрузил изображение, используя оба этих метода, и проверил вывод. Но массив, который я получил, был противоположен тому, что я получил от ImageDataGenerator(). Я отправляю код и вывод

train_image_generator = ImageDataGenerator()
test_data=train_image_generator.flow_from_directory(batch_size=batch_size,directory='/home/josin/my_projects/test1',shuffle=True,target_size=(150, 150),class_mode='binary')
print(test_data[0][0])`

Вывод для вышеуказанного кода

Найдено 1 изображений, принадлежащих 1 классам

array([[[[203., 164.,  87.]
     [209., 170.,  93.],
     [209., 170.,  93.],
     ...,
     [247., 206., 124.],
     [244., 204., 119.],
     [240., 201., 122.]],
     ...,
     [  2.,   2.,   0.],
     [  2.,   2.,   0.],
     [  2.,   2.,   0.]]]], dtype=float32)`

Код с использованием `cv2 .imread () равен:

img_array = cv2.imread('/home/josin/my_projects/test1/cat/cat.0.jpg')
new_array = cv2.resize(img_array,(150,150))
new_array.reshape(1,150,150,3)`

, а вывод приведенного выше кода равен

array([[[[ 87, 164, 203],
     [ 92, 169, 208],
     [ 93, 170, 209],
     ...,
     [124, 206, 247],
     [119, 203, 245],
     [122, 201, 240]],
     ...,
     [  0,   2,   2],
     [  0,   2,   2],
     [  0,   2,   2]]]], dtype=uint8)

При использовании cv2.imread() получено обратное значение пикселей. Большинство статей и сообщений, которые у меня есть Упомянутое использование cv2.imread(). Правильно ли вводить данные для сохраненной модели? Есть ли другой способ загрузки изображений для обслуживания модели

1 Ответ

2 голосов
/ 18 апреля 2020

cv2.imread упорядочивает каналы изображения следующим образом: b, g, r. Между тем, ImageDataGenerator упорядочивает каналы как r, g, b. Это объясняет inverse эффект, который вы упомянули.

Просто позвоните: img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB), чтобы сделать opencv изображения, расположенные как r, g, b

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...