В этом сообщении показано, как экспортировать модель Keras и обслуживать ее с помощью Tensorflow Serving с входными данными в виде изображений base64.
(обязательное условие) Построить и обучить модель Keras
Этот шаг довольно прост. У нас уже должна быть определена и обучена наша модель. Для краткости в этом примере мы будем использовать предварительно обученную модель Xception.
Сериализация шагов предварительной обработки
Чтобы обслуживающий API мог напрямую принимать файлы необработанных изображений в качестве входных данных вместо массивов RGB, нам нужно сериализовать все необходимые шаги, включая
- декодирование входных изображений, закодированных в строке base64
- преобразовать его в тензор
- изменение размера
- применение шагов предварительной обработки изображения, необходимых модели
теперь мы можем создать объект serving_input_receiver
, который позаботится о декодировании пакета строковых файлов base64, кодирующих необработанные файлы изображений (см. tf.io.decode_image
), изменяя их размер, а затем применяя keras.applications.xception.preprocess_input
.
Обратите внимание, что аргумент input_name
соответствует model.input_names
. Если ваша модель имеет другое имя для ввода, вам может потребоваться изменить его соответствующим образом.
Экспорт модели для TF Serving
Далее нам нужно создать объект tf.estimator
, который позволит нам экспортировать нашу модель Keras для TF Serving с определенным ранее serving_input_receiver
.
Теперь вы сможете увидеть, как ваша модель Keras экспортируется в указанный каталог.
models └── classification └── xception └── 1586063263 ├── saved_model.pb └── variables ├── variables.data-00000-of-00002 ├── variables.data-00001-of-00002 └── variables.index
, где 1586063263
— временная метка экспорта в эпоху Unix.
Обслуживание экспортированной модели
Как только модель успешно экспортирована, все остальное довольно просто. Пожалуйста, обратитесь к официальной странице обслуживания TF для получения более подробной информации и вариантов.
Тестирование модели обслуживания переходов
Ниже приведен пример кода драйвера для отправки изображения на сервер TF для классификации imagenet.
И отправить запрос.
пример JSON-ответа:
{'predictions': [[0.000263870839, 0.000306949107, 0.000248591678, 0.000319328334, 0.000141894678, 0.000295011501, 0.000241611619, ...]] }
Собираем и собираем все вместе
Образец рабочего кода можно найти здесь.