Как конвертировать.ckpt файл в.pb

Я использую ssd_mobilenets в API обнаружения объектов для обучения своей собственной модели и получения файлов.ckpt. Это хорошо работает на моем компьютере, но теперь я хочу использовать модель на моем телефоне. Итак, мне нужно преобразовать его в файл.pb. Я не знаю, как это сделать, может кто-нибудь помочь? Кстати, график ssd_mobilenets является сложным, я не могу найти, какой вывод модели. Есть ли кто-нибудь, кто знает название выхода?

2 ответа

Используйте export_inference_graph.py, чтобы преобразовать файл контрольных точек модели в файл.pb.

python tensorflow_models/object_detection/export_inference_graph.py \
--input_type image_tensor \
--pipeline_config_path architecture_used_while_training.config \
--trained path_to_saved_ckpt/model.ckpt-NUMBER \
--output_directory model/
  • Это 4-я ячейка кода в object_detection_tutorial.ipynb в этой ссылке - https://github.com/tensorflow/models/blob/master/research/object_detection/object_detection_tutorial.ipynb

    # What model to download.
    MODEL_NAME = 'ssd_mobilenet_v1_coco_2017_11_17'
    MODEL_FILE = MODEL_NAME + '.tar.gz'
    DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/'
    
    # Path to frozen detection graph. This is the actual model that is used for the object detection.
    PATH_TO_CKPT = MODEL_NAME + '/frozen_inference_graph.pb'
    
    # List of the strings that is used to add correct label for each box.
    PATH_TO_LABELS = os.path.join('data', 'mscoco_label_map.pbtxt')
    
    NUM_CLASSES = 90
    
  • Теперь клетка четко говорит .pb имя файла /frozen_inference_graph.pb

  • Итак, у вас уже есть .pb файл, почему вы хотите конвертировать??
  • В любом случае вы можете обратиться по этой ссылке для замораживания графика: https://github.com/jayshah19949596/Tensorboard-Visualization-Freezing-Graph
  • вам нужно использовать tensorflow.python.tools.freeze_graph() функция для преобразования вашего .ckpt подать в .pb файл
  • Ниже строка кода показывает, как вы это делаете

    freeze_graph.freeze_graph(input_graph_path,
                              input_saver_def_path,
                              input_binary,
                              input_checkpoint_path,
                              output_node_names,
                              restore_op_name,
                              filename_tensor_name,
                              output_graph_path,
                              clear_devices,
                              initializer_nodes)
    
    • input_graph_path: путь к .pb файл, где вы будете писать свой график, и это .pb файл не заморожен вы будете использовать tf.train.write_graph() написать график
    • input_saver_def_path: вы можете оставить его пустой строкой
    • input_binary: это логическое значение, оставьте его ложным, чтобы генерируемый файл не был двоичным и читаемым человеком
    • input_checkpoint_path: путь к .ckpt file
    • output_graph_path: путь, куда вы хотите написать pb файл
    • clear_devices: логическое значение... оставьте его ложным
    • output_node_names: явные имена тензорных узлов, которые вы хотите сохранить
    • restore_op_name: строковое значение, которое должно быть "save / restore_all"
    • filename_tensor_name = "save / Const: 0"
    • initializer_nodes = ""
Другие вопросы по тегам