Мы обучили модель Na snet и успешно развернули модель в качестве конечной точки на AWS Sagemaker. При локальной загрузке модели можно делать прогнозы, но я не уверен, в каком формате будут передаваться изображения при вызове конечной точки API.
Для справки, при загрузке с использованием tf.keras.load_model модель модели входные данные выглядят следующим образом:
[<tf.Tensor 'input_2:0' shape=(None, 331, 331, 3) dtype=float32>]
Кроме того, вот функция, используемая для построения модели, содержащая файл pred_signature_def модели
def build(loaded_model, export_dir):
build = builder.SavedModelBuilder(export_dir)
print("INPUT FORMAT:")
print(loaded_model.input)
signature = predict_signature_def(inputs={"inputs": loaded_model.input}, outputs={"score": loaded_model.output})
with K.get_session() as sess:
# Save the meta graph and variables
build.add_meta_graph_and_variables(
sess=sess, tags=[tag_constants.SERVING], signature_def_map={"serving_default": signature})
build.save()
Мы пробовали выполнять вызовы API к конечной точке в следующем формате:
client = boto3.client('runtime.sagemaker',
region_name='us-east-1',
aws_access_key_id='ACCESS_KEY',
aws_secret_access_key='SECRET_KEY')
with open("kitchen.jpg", "rb") as image:
f = image.read()
b = bytearray(f)
response = client.invoke_endpoint(EndpointName='ENDPOINT_NAME_HERE',
Body=b)
Мы пробовали многократно передавать несколько форматов для изображения в теле (bytearray, base64, numpy array). Однако мы продолжаем получать ту же ошибку от AWS:
Received client error (415) from model with message "{"error": "Unsupported Media Type: Unknown"}".
Кто-нибудь знает, каким должен быть правильный формат ввода изображения, или есть какие-либо предложения? Спасибо