Как избавиться от дополнительных операций, добавленных в график, при тонкой настройке модели Tensorflow Inception_V3?

Я пытаюсь преобразовать тонко настроенную модель тензорного потока inception_v3 в формат uff, который можно запустить на Jetson TX2 от NVIDIA. Для преобразования в uff некоторые операции поддерживаются, некоторые - нет. Я могу успешно заморозить и преобразовать в модель uff inception_v3 с контрольной точкой imagenet, предоставленной tenorflow. Однако, если я настрою модель, в новый график будут добавлены дополнительные операции, такие как Floor, RandomUniform и т. Д., Которые еще не поддерживаются. Эти слои остаются даже после замораживания модели. Это происходит в тонкой настройке для образца цветов, также представленного на сайте tenorflow.

  1. Я хочу понять, почему на графике добавляются дополнительные операции, в то время как тонкая настройка просто должна модифицировать последний слой, чтобы соответствовать количеству требуемых выходных данных.
  2. Если они добавляются во время тренировки, как я могу от них избавиться? Какие этапы постобработки команда tenorflow выполнила перед выпуском модели inception_v3 для imagenet?

Я могу поделиться файлами pbtxt, если это необходимо. На данный момент детали слоев модели загружены по адресу https://github.com/shrutim90/TF_to_UFF_Issue. Я использую Tensorflow 1.6 с графическим процессором.

Я следую инструкциям по замораживанию или точной настройке модели с: https://github.com/tensorflow/models/tree/master/research/slim. Как описано в приведенной выше ссылке, чтобы воспроизвести проблему, установите библиотеку моделей изображений TF-Slim и выполните следующие действия:

1. python export_inference_graph.py \
  --alsologtostderr \
  --model_name=inception_v3 \
  --output_file=/tmp/inception_v3_inf_graph.pb

2. python freeze_graph.py \
  --input_graph=/tmp/inception_v3_inf_graph.pb \
  --input_checkpoint=/tmp/checkpoints/inception_v3.ckpt \
  --input_binary=true --output_graph=/tmp/frozen_inception_v3.pb \
  --output_node_names=InceptionV3/Predictions/Reshape_1

3. DATASET_DIR=/tmp/flowers
   TRAIN_DIR=/tmp/flowers-models/inception_v3
   CHECKPOINT_PATH=/tmp/my_checkpoints/inception_v3.ckpt
   python train_image_classifier.py --train_dir=$TRAIN_DIR --dataset_dir=$DATASET_DIR --dataset_name=flowers --dataset_split_name=train --model_name=inception_v3 --checkpoint_path=${CHECKPOINT_PATH} --checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits --trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits

4. python freeze_graph.py \
  --input_graph=/tmp/graph.pbtxt \
  --input_checkpoint=/tmp/checkpoints/model.ckpt-2539 \
  --input_binary=false --output_graph=/tmp/frozen_inception_v3_flowers.pb \
  --output_node_names=InceptionV3/Predictions/Reshape_1

Чтобы проверить слои, вы можете проверить файл.pbtxt или использовать утилиту конвертирования в uff от NVIDIA.

1 ответ

Решение

Запустите обучающий скрипт -> export_inference_graph -> freeze_graph . Это избавляет от всех лишних узлов, и модель может быть легко преобразована в UFF.

Другие вопросы по тегам