Невозможно настроить MobileNet + SSD в API TF OD, используя специально подготовленную модель классификации Mobil eNet (с Keras) - PullRequest
0 голосов
/ 14 февраля 2020

Я настроил MobileNetV2, используя предварительно подготовленную модель Keras, с моим пользовательским набором данных и сохранил вес модели. Я хочу использовать эту модель (в качестве экстрактора функций) для OD, установив веса магистрали Mobil eNet равными весам моей обученной сети в OD API Tensorflow для модели MobileNetV2 + SSD.

Пока что я После некоторых проблем удалось преобразовать модель Keras MobileNetV2 и мои обученные веса (.h5) в файлы .ckpt. Я изменил файл ssd_mobilenet_v2_coco.config так, чтобы fine_tune_checkpoint указывал на мой файл .ckpt, а fine_tune_checkpoint_type был установлен на «классификацию».

Когда я запускаю train.py в OD API, я получаю следующее ошибка:

  File "train.py", line 184, in <module>
    tf.app.run()
  File "/home/mypc/anaconda3/envs/tf-gpu-1.14/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 40, in run
    _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
  File "/home/mypc/anaconda3/envs/tf-gpu-1.14/lib/python3.6/site-packages/absl/app.py", line 299, in run
    _run_main(main, args)
  File "/home/mypc/anaconda3/envs/tf-gpu-1.14/lib/python3.6/site-packages/absl/app.py", line 250, in _run_main
    sys.exit(main(argv))
  File "/home/mypc/anaconda3/envs/tf-gpu-1.14/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 324, in new_func
    return func(*args, **kwargs)
  File "train.py", line 180, in main
    graph_hook_fn=graph_rewriter_fn)
  File "/home/mypc/anaconda3/envs/tf-gpu-1.14/lib/python3.6/site-packages/object_detection-0.1-py3.6.egg/object_detection/legacy/trainer.py", line 398, in train
    init_saver = tf.train.Saver(available_var_map)
  File "/home/mypc/anaconda3/envs/tf-gpu-1.14/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 825, in __init__
    self.build()
  File "/home/mypc/anaconda3/envs/tf-gpu-1.14/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 837, in build
    self._build(self._filename, build_save=True, build_restore=True)
  File "/home/mypc/anaconda3/envs/tf-gpu-1.14/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 862, in _build
    raise ValueError("No variables to save")
ValueError: No variables to save

И до этой ошибки есть много предупреждений (для каждого слоя, я думаю), подобных следующим:

W0214 15:20:53.273966 139761431521088 variables_helper.py:144] Variable [FeatureExtractor/MobilenetV2/layer_19_2_Conv2d_2_3x3_s2_512/BatchNorm/beta/RMSProp_1] is not available in checkpoint

Я предполагаю, что когда я экспортирую Keras модель и веса в виде файла .ckpt, переменные удаляются или превращаются в константы (я новичок в Tensorflow), но OD API требует переменных в контрольных точках для тонкой настройки.

Я не знаю, как мне поступить.

Есть ли способ сохранить мою обученную модель MobileNetV2 (из keras. applications) и ее веса таким образом, чтобы я мог использовать ее в качестве контрольной точки тонкой настройки "классификации" в API обнаружения объектов TF?

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