Запуск SavedModel в TensorFlow 2 с входами определенного типа c - PullRequest
1 голос
/ 19 февраля 2020

Я пытаюсь запустить модель обнаружения объекта, которую я подготовил в формате SavedModel в TensorFlow 2.

Модель принимает входные данные в формате JPEG, PNG или GIF в байтовом формате как encoded_image_string_tensor: 0 и выводит типичные параметры_обнаружения: 0 , параметры_обнаружения: 0 и т. д. c.

В TensorFlow 1.15 я могу выполнить следующие операции:

with tf.Session(graph=tf.Graph()) as sess:
    tf.saved_model.loader.load(sess, ["serve"], path_to_model)
    cap = cv2.VideoCapture(camera_id)
    ret, frame = cap.read()
    ret, encoded = cv2.imencode(".jpg", frame)
    inferred = sess.run(["detection_scores:0", "detection_boxes:0"], feed_dict={
        "encoded_image_string_tensor:0": [encoded.tobytes(),]
    })
    # Use the outputs from here 

Я пытался преобразовать этот код для использования новых API TensorFlow 2 вместо библиотек совместимости, но я продолжаю сталкиваться с препятствиями. Вот код, который я пытался использовать с TensorFlow 2:

loaded = tf.saved_model.load(path_to_model)
infer = loaded.signatures["serving_default"]
# `encoded` is the same as the prior example,
# and TF2 is always requesting "image_bytes" and "key" as inputs
prediction = infer(image_bytes=encoded.tobytes(), key="")
"""
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "venv/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 1551, in __call__
    return self._call_impl(args, kwargs)
  File "venv/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 1591, in _call_impl
    return self._call_flat(args, self.captured_inputs, cancellation_manager)
  File "venv/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 1684, in _call_flat
    "Tensor." % (self._func_graph.name, i, str(arg)))
ValueError: All inputs to `ConcreteFunction`s must be Tensors; on invocation of pruned, the 0-th input (b'...') was not a Tensor.
"""

Существует ли функциональный TensorFlow 2.x, эквивалентный коду TensorFlow 1.x, который не использует библиотеки совместимости, или я подходить к этому совершенно неправильно?

Я ссылаюсь на документацию SavedModel от TensorFlow, доступную здесь: https://www.tensorflow.org/guide/saved_model.

1 Ответ

0 голосов
/ 20 февраля 2020

Непосредственной проблемой является:

All inputs to `ConcreteFunction`s must be Tensors...

Таким образом, вместо ввода encoded.tobytes(), возможно, попробуйте ввести tf.convert_to_tensor(encoded.tobytes()).

Кроме того, ознакомьтесь с документацией для tf.io.encode_jpeg , которая, по-видимому, обеспечивает специфичное для изображения c преобразование тензора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...