0 / 0 / 0
Регистрация: 17.05.2016
Сообщений: 43
1

Keras. Как превратить изображение в входной вектор для функции prediction?

18.10.2018, 00:11. Показов 4615. Ответов 4
Метки нет (Все метки)

Создал нейросеть, которая должна классифицировать того, кто на изображении: кот или собака.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Conv2D, MaxPooling2D
from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense
import keras
import argparse
 
 
def createParser():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '--fname', help='Полное имя файла, в который будет сериализована нейросеть')
    parser.add_argument('--width', help='Ширина изображения')
    parser.add_argument('--height', help='Высота изображения')
    return parser
 
 
parser = createParser()
nsp = parser.parse_args()
fname = nsp.fname
width = int(nsp.width)
height = int(nsp.height)
 
input_shape = (width, height, 3)
model = Sequential()
 
model.add(Conv2D(32, (3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
 
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
 
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
 
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
 
model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
model.save('D:\\model.net')
В другом скрипте пытаюсь использовать её, но не знаю, как превратить изображение во входной вектор.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Conv2D, MaxPooling2D
from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense
import keras
import argparse
 
 
def createParser():
    parser = argparse.ArgumentParser()
    parser.add_argument('--width')
    parser.add_argument('--height')
    parser.add_argument('--batch', help='Размер мини-выборки')
    parser.add_argument('--net', help='Полное имя файла с нейросетью')
    parser.add_argument('--picname', help='Полное имя изображения')
    return parser
 
 
parser = createParser()
nsp = parser.parse_args()
model = keras.models.load_model(nsp.net)
width = nsp.width
height = nsp.height
batch = nsp.batch
picname = nsp.pickname
 
# prediction = model.predict(??? входной вектор ???)
Что делать?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2018, 00:11
Ответы с готовыми решениями:

Как символьный вектор длины N превратить в вектор из n элементов
Как символьный вектор длины N превратить в вектор из n элементов , каждый из которых состотоит из k...

Превратить вектор векторов в матрицу из 0 и 1
Есть вектор векторов вида: R= { {1}, {2}, {2,3}, {4}, {1,5} };

Превратить вектор цифр в число
Не могу написать этот фрагмент.Дан вектор как пример {5 1 7} надо превратить его в число 517 c...

Указатель как входной параметр функции
#include <iostream> const int Max = 5; int* fill_array(double ar, int limit); void...

4
1288 / 905 / 479
Регистрация: 05.12.2013
Сообщений: 3,039
18.10.2018, 00:31 2
Загрузить изображение с помощью pillow, а потом перевести в нужный формат с помощью numpy
0
0 / 0 / 0
Регистрация: 17.05.2016
Сообщений: 43
18.10.2018, 00:34  [ТС] 3
я плох в питоне и совсем не представляю, как пользоваться numpy. Для загрузки изображения нашёл метод load_img() в keras.preprocessing.image. Знаю как сделать его чёрнобелым (нейросеть тренировалась на чёрнобелых фотографиях), но вот что делать дальше, совсем не понимаю
0
1288 / 905 / 479
Регистрация: 05.12.2013
Сообщений: 3,039
18.10.2018, 01:08 4
Цитата Сообщение от Zaqwsxcde263 Посмотреть сообщение
Для загрузки изображения нашёл метод load_img() в keras.preprocessing.image
Ну раз к keras есть функции для загрузки изображения, там должны быть функции по переводу изображения в нужный формат, найдите пример работы с изображением
1
2 / 1 / 1
Регистрация: 26.08.2018
Сообщений: 22
28.10.2018, 05:29 5
Лучший ответ Сообщение было отмечено Zaqwsxcde263 как решение

Решение

Судя по параметру input_shape = (width, height, 3), который указывает на размерность входящих данных в первом свёрточном слое, то во время использования модели (вызов predict) данные должны иметь такой же размер, узнайте, чему действительно равны высота и ширина трёхканального изображения, после чего трансформируйте каждое входящее используя эти данные.
Python
1
2
3
from PIL import Image
img = Image.open(image_path)
img = img.resize(target_size)
Вот код, который меняет размер изображения по пути image_path на target_size. Если в вашем коде изображение представлено в виде массива, то этим же модулем можно конвертировать его - array_to_img, img_to_array, или же fromarray напрямую.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2018, 05:29
Помогаю со студенческими работами здесь

Массив как входной параметр функции
Привет всем С помощью формул массива высчитываю данных, затем их хочу соединить. Возник вопрос,...

Как превратить в строку контент функции?
Ну, допустим есть ф-ция <?php function f_zak_line($node,$field_zak_adress,$feildName) { ?> ...

Добавьте возможность выполнять расчеты как для вектор-столбца, так и для вектор-строки
Модифицировать программу: 1. Добавьте возможность выполнять расчеты как для вектор-столбца, так и...

Максимизировать функцию, входной параметр которой - вектор
День добрый! Есть задача - максимизировать функцию. Проблема в том, что функция зависит от...

Изображение в матричной форме, превратить в картинку
У меня есть изображение в матричной форме, надо его превратить в картинку и выкинуть на экран. ...

Передать функцию как входной аргумент другой функции
Здравствуйте господа. Помогите пожалуйста, как в Матлабе функция задать как входной аргумент? К...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru