Заморозить модель для вывода с именем_сервера_данных для ssd mobilenet v1 coco
Я хочу скомпилировать график TensorFlow в график Movidius. Я использовал модель зоопарка ssd_mobilenet_v1_coco
модель для обучения на моем собственном наборе данных.
Потом я побежал
python object_detection/export_inference_graph.py \
--input_type=image_tensor \
--pipeline_config_path=/home/redtwo/nsir/ssd_mobilenet_v1_coco.config \
--trained_checkpoint_prefix=/home/redtwo/nsir/train/model.ckpt-3362 \
--output_directory=/home/redtwo/nsir/output
который порождает меня frozen_interference_graph.pb
& saved_model/saved_model.pb
Теперь, чтобы преобразовать эту сохраненную модель в график Movidius. Есть команды
Экспорт файла GraphDef
python3 ../tensorflow/tensorflow/python/tools/freeze_graph.py \
--input_graph=inception_v3.pb \
--input_binary=true \
--input_checkpoint=inception_v3.ckpt \
--output_graph=inception_v3_frozen.pb \
--output_node_name=InceptionV3/Predictions/Reshape_1
Заморозить модель для вывода
python3 ../tensorflow/tensorflow/python/tools/freeze_graph.py \
--input_graph=inception_v3.pb \
--input_binary=true \
--input_checkpoint=inception_v3.ckpt \
--output_graph=inception_v3_frozen.pb \
--output_node_name=InceptionV3/Predictions/Reshape_1
который наконец можно подать на NCS Intel Movidius SDK
mvNCCompile -s 12 inception_v3_frozen.pb -in=input -on=InceptionV3/Predictions/Reshape_1
Все это дано на веб-сайте Intel Movidius здесь: https://movidius.github.io/ncsdk/tf_modelzoo.html
Моя модель уже была обучена, т.е. output/frozen_inference_graph
, Почему я снова замораживаю это, используя /slim/export_inference_graph.py
или это output/saved_model/saved_model.py
это будет входить в slim/export_inference_graph.py
??
Все, что я хочу, это output_node_name = Inceptionv3 / Predictions / Reshape_1. Как получить эту структуру каталогов output_name_name и что-нибудь внутри нее? Я не знаю, что все это содержит
какой выходной узел я должен использовать для модели зоопарка ssd_mobilenet_v1_coco
модель (обучена на моем собственном наборе данных)
python freeze_graph.py \
--input_graph=/path/to/graph.pbtxt \
--input_checkpoint=/path/to/model.ckpt-22480 \
--input_binary=false \
--output_graph=/path/to/frozen_graph.pb \
--output_node_names="the nodes that you want to output e.g. InceptionV3/Predictions/Reshape_1 for Inception V3 "
Вещи, которые я понимаю и не понимаю: input_checkpoint: ✓ [контрольные точки, созданные во время обучения] output_graph: ✓ [путь к выводимому замороженному графику] out_node_names: X
Я не понимаю out_node_names
параметр и что следует внутри этого, учитывая его ssd_mobilnet
не inception_v3
Системная информация
- Какой каталог верхнего уровня модели вы используете:
- Написал ли я собственный код (вместо использования стандартного сценария, предоставленного в TensorFlow):
- Платформа и распространение ОС (например, Linux Ubuntu 16.04): Linux Ubuntu 16.04
- TensorFlow установлен из (источника или двоичного файла ): TensorFlow установлен с pip
- Версия TensorFlow (используйте команду ниже): 1.13.1
- Базельская версия (если компилируется из исходного кода):
- Версия CUDA/cuDNN: V10.1.168/7.*
- Модель и память графического процессора: 2080Ti 11Gb
- Точная команда для воспроизведения:
1 ответ
График в сохраненной_модели / сохраненной_модели.pb - это определение графа (архитектура графа) предварительно обученной модели inception_v3 без весов, загруженных в граф. Frozen_interference_graph.pb - это график, замороженный с указанными вами контрольными точками и принимающий выходные узлы по умолчанию модели inception_v3. Для получения имен выходных узлов можно использовать инструмент summarise_graph
Вы можете использовать приведенные ниже команды для использования инструмента summarise_graph, если Bazel установлен
bazel build tenorflow/tools/graph_transforms:sumrize_graph
bazel-bin / tenorflow/tools/graph_transforms/sumrize_graph \ --in_graph=/tmp/inception_v3_inf_graph.pb
Если база не установлена, выходные узлы можно получить с помощью тензорной доски или любых других инструментов визуализации графа, таких как Netron.
Дополнительный файл freeze_graph.py может использоваться для замораживания графика, указывающего выходные узлы (т. Е. В случае, когда дополнительные входные узлы добавляются в inceptionV3). Frozen_interference_graph.pb также подходит для вывода.