Я хочу делать прогнозы обнаружения объектов в Интернете (или делать выводы) на основе уже существующей модели в движке Google ML. Но я не могу создать запрос json.
Модель быстрее_rcnn_inception_resnet_v2_atrous_coco_2017_11_08 из зоопарка моделей TF. Входы - это изображения, выходы: класс, bb, оценка и т. Д.
Необходимые входные данные (из шоу saved_model_cli)
inputs['inputs'] tensor_info:
dtype: DT_UINT8
shape: (-1, -1, -1, 3)
name: image_tensor:0
Поскольку он ожидает массив uint8, я загружаю изображение в массив numpy
encoded_contents = np.array(image.getdata()).reshape(
(im_height, im_width, 3)).astype(np.uint8)
Измените размер изображения image_np_expanded = np.expand_dims (encoded_contents, axis = 0)
Пытался построить json-запрос
instance = {"input":encoded_contents}
row = json.dumps(instance,sort_keys=True)
Но я не могу это построить, потому что
TypeError(repr(o) + " is not JSON serializable")
TypeError: array([[[164, 191, 220],
[190, 157, 114],
[190, 157, 114]]], dtype=uint8) is not JSON serializable
Если я конвертирую массив numpy в список с помощью метода tolist (), json-файл занимает 3 мегабайта, и ML-движок отклоняет его «message»: «Размер полезной нагрузки запроса превышает предел: 1572864 байта.»,
Я отправлю этот json-файл в ml-engine прогноз в виде файла json.
gcloud ml-engine predict --model=pellaires --version=pellaires14 --json-
instances=request.json > response.yaml