Потери не уменьшаются при тренировке маски RCNN с нуля (без предварительно подготовленных гирь) - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь обучить нейронную сеть Mask RCNN (в частности, реализацию Matterport, которую можно найти здесь https://github.com/matterport/Mask_RCNN) без использования предварительно обученных предоставленных весов, это с нуля. Набор данных, который я используюОбщие объекты в контексте (можно найти здесь http://cocodataset.org/#home), и моя цель состоит в том, чтобы выполнить сегментацию идентичности.

Я пытался обучить сеть с предварительно обученными весами и, при оценке, метриками Средняя точностьи Среднее Напоминание, где не 0. Однако, когда я пытался тренироваться без загрузки предварительно обученных весов, AP и AR равны 0. Я проверил, и моя сеть обнаруживает некоторые классы (маски и ограничивающие блоки), поэтому я представляю, что проблема в том, чтоони не перекрывают основную истину, поэтому они не считаются совпадающими с ней.

Когда я иду на тензорную доску, чтобы проверить, что происходит с потерями, я вижу, что они явно не сходятся.из вас тренировали сеть без предварительно обученных весов? хотелось бы узнатькоторая должна быть правильной конфигурацией и графиком обучения для достижения точки доступа, близкой к той, которая представлена ​​в их документе (https://arxiv.org/pdf/1703.06870.pdf)

Поскольку я не использую предварительно обученные веса, я попытался увеличитьэпохи для «головы» сети.Это реснет50.Я также пытался снизить скорость обучения.Однако до сих пор ни один из них не дал хорошего результата.

Это расписание поездов по умолчанию, где я пытался увеличить периоды первой стадии до 100, поскольку я не использую предварительно обученные веса

    # Training - Stage 1
    # Adjust epochs and layers as needed
    print("Training network heads")
    model.train(dataset_train, dataset_val,
                learning_rate=config.LEARNING_RATE,
                epochs=40,
                layers='heads')

    # Training - Stage 2
    # Finetune layers from ResNet stage 4 and up
    print("Training Resnet layer 4+")
    model.train(dataset_train, dataset_val,
                learning_rate=config.LEARNING_RATE / 10,
                epochs=100,
                layers='4+')

    # Training - Stage 3
    # Finetune layers from ResNet stage 3 and up
    print("Training Resnet layer 3+")
    model.train(dataset_train, dataset_val,
                learning_rate=config.LEARNING_RATE / 100,
                epochs=200,
                layers='all')

Пример полученных графиков потерь

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