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