Использование ключей экземпляра для пакетного прогнозирования с Tensorflow

Я пытаюсь понять, как делать пакетное прогнозирование с помощью Google Cloud. В частности, я хочу выполнить обнаружение объектов, переходя от ckpt тензорного потока с более быстрым RCNN к графической / сохраненной модели.

Моя проблема в том, что мне нужно восстановить какой-то идентификатор для моих входных изображений, возможно, индекс или имя файла. Я не совсем уверен, как это сделать в моей ситуации, поскольку в этой ссылке упоминается использование ключей экземпляра, и только соответствующие примеры Я обнаружил, что ключи экземпляра используют JSON в качестве формата ввода. Поскольку я должен использовать TFRecords для ввода в мою сохраненную модель, это может быть проблемой. Я также проконсультировался с руководство по прогнозам, но все равно запутался.

Короче говоря, есть ли у кого-нибудь советы относительно того, какие файлы мне следует редактировать (export_inference_graph.py?), Чтобы сохранить какие-то индексы / порядок моих входных изображений для пакетного прогнозирования? Я использую API обнаружения объектов для справки. Спасибо!


person Chris Collins    schedule 13.06.2018    source источник


Ответы (1)


Пакетное прогнозирование само по себе не поддерживает ключи экземпляра. Вы должны изменить граф вывода, чтобы выводить что-то из ввода в качестве ключей. Это означает, что вам нужно найти способ включить ключи во входные данные, такие как идентификатор изображения или индекс. Один из способов сделать это - изменить ввод с TFrecord на json и добавить идентификатор в качестве ключей. Например, ваш ввод сейчас будет таким:

{"ключ": 1, "изображение": {"b64": "base64encodedstringabce"} {"ключ": 2, "изображение": {"b64": "base64encodedstringfg1d"}

Это, конечно, сделало бы ваш вклад намного больше. Другой способ заключается в том, что если вы используете tf.Example proto в своем TFRecord, вы можете добавить дополнительную функцию. Его значением будет сквозное поле от входа к выходу.

Вот способ изменить вывод, чтобы передать функцию от ввода к выводу. https://github.com/GoogleCloudPlatform/cloudml-samples/pull/158

person yxshi    schedule 14.06.2018
comment
Спасибо за быстрый ответ. Чтобы уточнить, судя по разделу Прогнозирование ввода в руководстве здесь, у меня есть только один входной тензор, с которым я могу работать. Таким образом, кажется, что мне нужно изменить количество входных тензоров на два, чтобы обрабатывать либо json, либо tfrecord с ключом; вы знаете, как бы я сделал это для графа вывода обнаружения объектов? - person Chris Collins; 15.06.2018
comment
Да ты прав. Не уверен, что означает граф вывода обнаружения объектов. Это струнный тензор? Если так, просто следуйте моему ответу. В противном случае вы посмотрите на PR, показанный выше. - person yxshi; 24.06.2018
comment
Сохраненная модель / замороженный график API обнаружения объектов снова имеет только один (строковый?) Входной тензор, как указано здесь. Ваш пример, похоже, включает в себя много материалов csv, которые, я не уверен, имеют отношение к тому, что я делаю. По сути, поскольку это работает прямо сейчас, моя модель принимает только партию моих входных изображений в кодировке base64 и никакой другой информации (т.е. без ключей); Если бы вы могли объяснить, как ваше решение могло бы трансформироваться в это, я был бы благодарен. - person Chris Collins; 28.06.2018
comment
Я сам не пробовал, но предполагаю, что вы можете внести изменения в github.com/tensorflow/models/blob/master/research/ точно так же, как упомянутый мной PR. По сути, вы меняете график вывода, чтобы добавить дополнительный тензор передачи. - person yxshi; 19.07.2018
comment
Хорошо, забыл упомянуть, что я нашел способ сделать это через чей-то блокнот на github. Тем не менее, спасибо за вашу помощь! - person Chris Collins; 23.07.2018
comment
@ChrisCollins Было бы здорово, если бы вы могли опубликовать решение и для других, наткнувшихся на эту проблему? - person Hassan Kamal; 10.08.2018
comment
@ChrisCollins тот же запрос: не могли бы вы опубликовать свое решение? - person Patrick; 08.11.2020
comment
Приносим свои извинения за отложенный ответ - я в основном переназначил работу из этого скрипта, и у меня не было проблем github.com/priya-dwivedi/Deep-Learning/blob/master/ - person Chris Collins; 11.11.2020