как уменьшить размер ввода для обученной модели mask-RCNN при выполнении прогнозирования на облачной платформе Google

Я пытаюсь использовать прогнозирование Google AI Platform для распознавания объектов с помощью Mask RCNN. Проведя около двух недель, я смог:

  1. узнайте, как тренироваться в Google Cloud
  2. преобразовать модель из h5 в формат SavedModel, необходимый для платформы AI
  3. создать модели платформы AI и развернуть там обученные модели.

Теперь, когда я пытаюсь выполнить прогноз, он сказал, что мой размер ввода превышает 1,5 МБ, что является максимальным размером ввода. Когда я проверил его, код, преобразующий изображение (размером 65 КБ) в формат, необходимый для прогнозирования, делает входной файл размером 57 МБ.

Я понятия не имею, как файл изображения размером 64 КБ можно преобразовать в файл json размером 57 МБ при формовании. И я хотел знать, как я могу это уменьшить? Не уверен, что делаю что-то не так.

Я попытался выполнить локальное предсказание, используя локальное предсказание gcloud, и могу получить ответ с файлом размером 57 МБ. Итак, это означает, что файл правильный.

Я попытался установить максимальный размер изображения 400X400, и это уменьшило размер файла с 57 МБ до примерно 7 МБ. который по-прежнему очень высок. Я не могу продолжать сокращать его, так как это приводит к потере информации.

1 ответ

Согласно документации онлайн-прогнозов

Двоичные данные не могут быть отформатированы как строки в кодировке UTF-8, которые поддерживает JSON. Если у вас есть двоичные данные во входных данных, вы должны использовать кодировку base64 для их представления.

Вам нужно иметь input_image тензор называется input_image_bytes и вы отправите ему такие данные:

{'input_image_bytes': {'b64': base64.b64encode(jpeg_data).decode()}}

Если вам нужна помощь в корректировке входных данных вашей модели, вы должны увидеть def _encoded_image_string_tensor_input_placeholder()в exporter.py вызывается из export_inference_graph.py

Другие вопросы по тегам