Как использовать API обнаружения объектов со старой версией tenorflow v1.3.0? - PullRequest
0 голосов
/ 26 декабря 2018

Мне нужно использовать API обнаружения объектов tenorflow (ssd_mobilenet_v1_coco), но я должен использовать тензор потока 1.3.0 (обязательно из-за среды).

У меня есть модель переподготовки на 1.9.0, но она не совместима с 1.3.0:

Traceback (последний вызов был последним): файл "run_test.py", строка 29, в файле tf.import_graph_def (od_graph_def, name = '') "/opt/carndcapstone/venv/local/lib/python2.7/site-packages/tensorflow/python/framework/importer.py", строка 285, в import_graph_defподнять ValueError ('Нет операции с именем% s в определенных операциях.'% node.op) ValueError: Нет операции с именем NonMaxSuppressionV3 в определенных операциях.

Просто интересно, возможно ли использовать API обнаружения объектов с тензорным потоком1.3.0.Не видел API релиза 1.3.0 на GitHub.Есть ли способ обойти?

Ответы [ 2 ]

0 голосов
/ 22 июля 2019

Вот что я сделал,

Шаг 1: Обучите модель, используя новейшие доступные API обнаружения объектов

Теперь вы обученыckpt и другие файлы

└── training
   ├── checkpoint
   ├── model.ckpt.data-XXXX-of-XXXX
   ├── model.ckpt.index
   └── model.ckpt.meta

Шаг 2: Теперь клонируйте предыдущую фиксацию API обнаружения объектов, совместимую с тензорным потоком 1.3.0 1f34fcafc1454e0d31ab4a6cc022102a54ac0f5b

Шаг 3: создать новую виртуальную среду conda с tf 1.4.0 и установить зависимости для использования API обнаружения объектов во вновь клонированной папке обнаружения объектов

Шаг 4: Активируйте новую среду conda и просто запустите export_inference_graph.py на модели ckpt, обученной на первом шаге.

Сгенерированный замороженный график совместим с Tensorflow 1.3.0 и 1.4.0

Для получения более подробной информации следуйте this

0 голосов
/ 13 января 2019

У меня была такая же проблема.Вот что я сделал.

Для самого процесса обучения я следовал этому учебнику .

Согласно релизам , Tensorflow 1.3.0.вышла 16 августа 2017 года. Поэтому вам нужно будет использовать соответствующую версию Object Detection API .В то время Protocol Buffers v3.4.0 были самыми последними, так что вам нужно использовать их также.

Вы можете получить ValueError: axis = 0 not in [0, 0) (я не знаюЭто не подтверждено, но я подозреваю, что эта ошибка появляется, когда вы создали свои TFRecords с использованием более нового API обнаружения объектов.) На случай, если ссылка не работает, решение состоит в том, чтобы изменить ваш конвейер *.config, например, так:

loss {
  classification_loss {
    weighted_sigmoid {
    anchorwise_output: true  #add this
    }
  }
  localization_loss {
    weighted_smooth_l1 {
    anchorwise_output: true  #add this
    }
  }
  hard_example_miner {
    num_hard_examples: 3000
    iou_threshold: 0.99
    loss_type: CLASSIFICATION
    max_negatives_per_positive: 3
    min_negatives_per_image: 0
  }
  classification_weight: 1.0
  localization_weight: 1.0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...