Что такое loss_cls и loss_bbox и почему они всегда равны нулю на тренировках - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь обучить пользовательскому набору данных с использованием faster_rcnn с использованием реализации Pytorch Detectron здесь .Я внес изменения в набор данных и конфигурацию в соответствии с рекомендациями в репозитории.

Процесс обучения выполнен успешно, но значения loss_cls и loss_bbox равны 0 с самого начала, и хотяобучение завершено, окончательный результат не может быть использован для оценки или вывода.Я хотел бы знать, что эти два значения и как заставить эти ценности измениться во время обучения.Точная модель, которую я здесь использую: e2e_faster_rcnn_R-50-FPN_1x

Любая помощь по этому вопросу будет принята.Я использую Ubuntu 16.04 с Python 3.6 на Anaconda, CUDA 9, cuDNN 7.

1 Ответ

0 голосов
/ 04 марта 2019

Каковы две потери?

При обучении многообъектного детектора у вас обычно есть (как минимум) два типа потерь:
1. loss_bbox потеря, которая измеряет, насколько "плотно"«ограничивающий прямоугольник, который модель предсказывает вокруг истинного объекта (обычно это потеря регрессии, L1, smoothL1 и т. д.).
2. loss_cls потеря, которая измеряет правильность классификации каждого прогнозируемого ограничивающего прямоугольника: каждый прямоугольник может содержать класс объекта или «фон».Эта потеря обычно является кросс-энтропийной потерей.

Почему потери всегда равны нулю?

При обучении детектора модель предсказывает довольно много (~ 1К) возможных блоков на изображение.Большинство из них пустые (то есть относится к классу "background").Функция потерь связывает каждый из прогнозируемых блоков с аннотацией наземных истинных блоков изображения.
Если прогнозируемый прямоугольник имеет существенное перекрытие с блоком наземных истинных значений, то loss_bbox и loss_cls вычисляются, чтобы увидеть, насколько хорошоМодель способна предсказать блок истинной земли.
С другой стороны, если прогнозируемый блок не перекрывается с каким-либо блоком наземной истинности, то для класса «background» вычисляется только loss_cls.
Однако,если есть только частичное частичное совпадение с основной правдой, предсказанная ячейка «отбрасывается» и потери не вычисляются.Я подозреваю, что по какой-то причине это относится к вашей тренировке.
Я предлагаю вам проверить параметры, которые определяют связь между предсказанными в штучной упаковке и наземными аннотациями правды.Более того, посмотрите на параметры ваших «якорей»: эти параметры определяют масштаб и пропорции предсказанных блоков.

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