Я развернул модель обнаружения объектов в Google ML, Я могу сделать онлайн-прогноз , но он СБОЙ , чтобы сделать пакетное прогнозирование , с ошибкой нижев журналах стекадрайвера:
Исключительная ситуация при запуске графика: утверждение не выполнено: [Невозможно декодировать байты в формате JPEG, PNG, GIF или BMP] [[Узел: map / while / decode_image / cond_jpeg / cond_png/ cond_gif / Assert_1 / Assert = Assert [T = [DT_STRING], резюмировать = 3, _device = "/ job: localhost / replica: 0 / task: 0 / device: CPU: 0"] (map / while / decode_image / cond_jpeg/ cond_png / cond_gif / is_bmp, map / while / decode_image / cond_jpeg / cond_png / cond_gif / Assert_1 / Assert / data_0)]] *
Я пробовал обе команды gcloud и python api, но не повезло.Файл request.json для онлайн-прогноза.
{"inputs": {"b64": "/9j/4SurRXhpZgAATU0AKgAAAAgACgEPAAIAAAAHAAAAhgEQAAIAAAAFAAAAjgEaAAUAAAABAAAAlAEbAAUAAAABAAAAnAEoAAMAAAABAAIAAAExAAA2gITAAMAAAABAAEAAIdpAAQAAAABAAAA7oglAAQAAAABAAAC0gAAAyhYaWFvbWkAAE1.....}}
Это уже кодируется b64.Он отлично работает с онлайн-прогнозированием:
gcloud ml-engine predict --model object_detector --version v2 --json-instances request.json
НО для пакетного прогнозирования не получается, ниже две строки для файла batch_request.json
{'instances': [{"inputs": {"b64": "/9j/4SurRXhpZgAATU0AKgAAAAgACgEPAAIAHAAAAhgEQAAIAAAAFAAAAjgEaAAUAAAABAAAAlAEbAAUAAAABAAAAnAEoAAMAAAABAAIAAAExAAIAAAA1AAAApAEyAAIAAAAUA...}}]}
{'instances': [{"inputs": {"b64": "/9j/4SurRXhpZgAATU0AKgAAAAgACgEPAAIAAAAAAhgEQAAIAAAAFAAAAjgEaAAUAAAABAAAAlAEbAAUAAAABAAAAnAEoAAMAAAABAAIAAAExAAIAAAA1AAAApAEyAAIAAAAUA...}}]}
тело запроса Python API, выполненного для пакетного прогнозирования:
{'jobId': 'mycloud_machine_object_detector_115252',
'predictionInput': {'dataFormat': 'TEXT',
'inputPaths': 'gs://my-bucket/object-detection/batch_request.json',
'outputPath': 'gs://my-bucket/object-detection/',
'region': 'us-central1',
'versionName': 'projects/mycloud_machine/models/object_detector/versions/v2'}}
Я использовал код Python из Google Docs для выполнения пакетного запроса.
project_id = 'projects/{}'.format(project_name)
ml = discovery.build('ml', 'v1', credentials=credentials)
request = ml.projects().jobs().create(parent=project_id,
body=body_fn())
try:
response = request.execute()
print('Job requested.')
# The state returned will almost always be QUEUED.
print('state : {}'.format(response['state']))
except errors.HttpError as err:
# Something went wrong, print out some information.
print('There was an error getting the prediction results.' +
'Check the details:')
print(err._get_reason())