Я настроил 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?