как уменьшить размер ввода для обученной модели mask-RCNN при выполнении прогнозирования на облачной платформе Google
Я пытаюсь использовать прогнозирование Google AI Platform для распознавания объектов с помощью Mask RCNN. Проведя около двух недель, я смог:
- узнайте, как тренироваться в Google Cloud
- преобразовать модель из h5 в формат SavedModel, необходимый для платформы AI
- создать модели платформы 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