Как обеспечить, чтобы график контрольных точек из загруженной модели соответствовал новым данным обучения для передачи обучения - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь обучить модель прогнозировать ограничивающие рамки на аэрофотоснимках с помощью API обнаружения объектов Tensorflow.

Я раздвоил папку моделей Tensorflow с github и запустил процесс установки, и, похоже, он прошел нормально.

Я использую контрольную точку Faster R-CNN ResNet50, обученную на COCOиз модельного зоопарка, и пытался тренироваться, используя свои собственные аэрофотоснимки, которые я пометил сам и у меня есть один класс.Я преобразовал изображения в tfrecords и создал файл .pbtxt с деталями класса.Я также настроил файл fast_rcnn_resnet50_coco.config, чтобы в нем было правильное количество классов и мест обучения, а также eval tfrecords.

Для запуска процесса обучения из моделей / research / object_detection, которые я использовалзапустите следующую команду:

python model_main.py 
--alsologstostderr 
--model_dir="./training/faster_rcnn_resnet50_coco_2018_01_28" 
--pipeline_config_path="./training/faster_rcnn_resnet50_coco.config"  
--num_train_steps=10 
--eval_training_data=True 
--checkpoint_dir="./faster_rcnn_resnet50_coco_2018_01_28" 
--hparams='num_epochs=2'

У меня было много ошибок на этом пути, и все они, похоже, как-то связаны с путями, в которых находятся мои файлы.Похоже, что все файлы сейчас находятся, но я получаю другую ошибку, которая, я уверен, связана с разделом SecondStageBoxPredictor / ClassPredictor контрольной точки модели.Форма этого весового тензора ClassPredictor (2048, 91), который, как я предполагаю, таков, чтобы модель могла предсказать, в какой из 91 классов COCO это изображение попадает.Поскольку мои тренировочные данные имеют только один класс, похоже, что при достижении этой точки форма (2048, 2) вызывает несоответствие при применении этого шага (см. Ошибки, показанные ниже).Я предположил бы, что, изменяя количество классов в файле конфигурации, это предотвратит такое несоответствие, но я не могу понять, куда мне обратиться, чтобы подтвердить, если и как это происходит.Надеюсь, кто-то может указать мне в правильном направлении!

Трассировка ошибок длиннее, чем эта, но в основном она повторяет то, что я выкладываю ниже.Я могу опубликовать полный след при необходимости.

Traceback (most recent call last):
  File "model_main.py", line 110, in <module>
    tf.app.run()
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\platform\app.py", line 125, in run
    _sys.exit(main(argv))
  File "model_main.py", line 95, in main
    train_steps, name)
  File "C:\Users\SWynd\Dropbox\PhD\Spring 19\EE6363\Project\models\research\object_detection\model_lib.py", line 770, in continuous_eval
    input_fn=input_fn, steps=None, checkpoint_path=ckpt, name=name)
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\estimator\estimator.py", line 478, in evaluate
    return _evaluate()
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\estimator\estimator.py", line 467, in _evaluate
    output_dir=self.eval_dir(name))
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\estimator\estimator.py", line 1591, in _evaluate_run
    config=self._session_config)
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\evaluation.py", line 271, in _evaluate_once
    session_creator=session_creator, hooks=hooks) as session:
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\monitored_session.py", line 921, in __init__
    stop_grace_period_secs=stop_grace_period_secs)
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\monitored_session.py", line 643, in __init__
    self._sess = _RecoverableSession(self._coordinated_creator)
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\monitored_session.py", line 1107, in __init__
    _WrappedSession.__init__(self, self._create_session())
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\monitored_session.py", line 1112, in _create_session
    return self._sess_creator.create_session()
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\monitored_session.py", line 800, in create_session
    self.tf_sess = self._session_creator.create_session()
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\monitored_session.py", line 566, in create_session
    init_fn=self._scaffold.init_fn)
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\session_manager.py", line 288, in prepare_session
    config=config)
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\session_manager.py", line 202, in _restore_checkpoint
    saver.restore(sess, checkpoint_filename_with_path)
  File "C:\Users\SWynd\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\training\saver.py", line 1582, in restore
    err, "a mismatch between the current graph and the graph")
tensorflow.python.framework.errors_impl.InvalidArgumentError: Restoring from checkpoint failed. This is most likely due to a mismatch between the current graph and the graph from the checkpoint. Please ensure that you have not altered the graph expected based on the checkpoint. Original error:

Assign requires shapes of both tensors to match. lhs shape= [4] rhs shape= [360]
         [[node save/Assign_271 (defined at C:\Users\SWynd\Dropbox\PhD\Spring 19\EE6363\Project\models\research\object_detection\model_lib.py:491)  = Assign[T=DT_FLOAT, _class=["loc:@SecondStageBoxPredictor/BoxEncodingPredictor/biases"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](SecondStageBoxPredictor/BoxEncodingPredictor/biases, save/RestoreV2:271)]]
...