Каковы именно потери в Matterport Mask-R-CNN?
Я использую Mask-R-CNN для обучения своих данных с ним. Когда я использую TensorBoard, чтобы увидеть результат, у меня возникают потери, mrcnn_bbox_loss, mrcnn_class_loss, mrcnn_mask_loss, rpn_bbox_loss, rpn_class_loss и все те же 6 потерь для проверки: val_loss, val_mbox
Я хочу знать, что такое каждая потеря.
Также я хочу знать, являются ли первые 6 потерь потерей поезда или каковы они? Если это не потеря поезда, как я могу увидеть потерю поезда?
Мое предположение:
потеря: это все 5 потерь в итоге (но я не знаю, как TensorBoard суммирует их).
mrcnn_bbox_loss: правильный размер ограничивающего прямоугольника или нет?
mrcnn_class_loss: класс правильный? правильно ли назначен пиксель классу?
mrcnn_mask_loss: правильная форма экземпляра или нет? правильно ли назначен пиксель экземпляру?
rpn_bbox_loss: правильный ли размер bbox?
rpn_class_loss: правильный ли класс bbox?
Но я уверен, что это не правильно...
И некоторые потерянные не имеют значения, если у меня есть только 1 класс? Например только фон и 1 другой класс?
Мои данные имеют только фон и еще один класс, и это мой результат на TensorBoard:
Мой прогноз в порядке, но я не знаю, почему некоторые потери от моей проверки растут и падают в конце... Я думал, что это должно быть сначала только вниз, а после перегрузки только вверх. Предсказание, которое я использовал, - зеленая линия на TensorBoard с большинством эпох. Я не уверен, что моя сеть перегружена, поэтому мне интересно, почему некоторые потери в проверке выглядят так, как они выглядят...
1 ответ
В соответствии с комментариями к коду и документацией в индексе пакетов Python эти потери определяются как:
- rpn_class_loss = потеря якоря классификатора RPN
- rpn_bbox_loss = График потерь ограничивающей рамки RPN
- mrcnn_class_loss = потеря для головы классификатора маски R-CNN
- mrcnn_bbox_loss = потеря для уточнения ограничивающей рамки маски R-CNN
- mrcnn_mask_loss = маска двоичной кросс-энтропийной потери для головы маски
Каждый из этих показателей потерь представляет собой сумму всех значений потерь, рассчитанных индивидуально для каждой интересующей области. Общая метрика потерь, приведенная в журнале, является суммой остальных пяти потерь (вы можете проверить их, суммируя их), как определено авторами маски R-CNN.
С точки зрения того, как эти потери рассчитываются согласно исходной статье, их можно описать следующим образом (обратите внимание, что определения являются довольно грубыми для более интуитивного объяснения):
- Значения классификационных потерь в основном зависят от доверительной оценки истинного класса, поэтому классификационные потери отражают то, насколько уверенно модель при прогнозировании меток классов или, другими словами, насколько модель близка к прогнозированию правильного класса. В случае mrcnn_class_loss охватываются все классы объектов, тогда как в случае rpn_class_loss единственная классификация, которая выполняется, - это маркировка якорных блоков как переднего или заднего плана (что является причиной того, что эта потеря имеет тенденцию иметь более низкие значения, как концептуально Есть только два класса, которые могут быть предсказаны).
- Значения потерь ограничивающего прямоугольника отражают расстояние между истинными параметрами бокса, то есть координатами (x,y) местоположения бокса, его шириной и высотой, и прогнозируемыми. Это по своей природе потеря регрессии, и она наказывает большие абсолютные различия (приблизительно экспоненциальным способом для более низких различий и линейно для больших различий - см. Функцию гладких потерь L1 для более глубокого понимания). Следовательно, это в конечном итоге показывает, насколько хороша модель для определения местоположения объектов на изображении, в случае rpn_bbox_loss; и насколько хороша модель для точного прогнозирования области (зон) в изображении, соответствующих различным присутствующим объектам, в случае mrcnn_bbox_loss.
- Потеря маски, как и потеря классификации, наказывает за неправильную двоичную классификацию на пиксель (передний план / фон, относительно истинной метки класса). Он рассчитывается по-разному для каждой интересующей области: маска R-CNN кодирует двоичную маску для каждого класса для каждого из RoI, а потеря маски для конкретного RoI рассчитывается только на основе маски, соответствующей ее истинному классу, которая Предотвращает влияние маскирующих потерь на предсказания классов.
Как вы уже сказали, эти метрики потерь действительно являются потерями обучения, а метрики с префиксом val_ являются потерями валидации. Колебания в потере проверки могут происходить по нескольким различным причинам, и на первый взгляд трудно предположить, основываясь только на ваших графиках. Они могут быть вызваны слишком высокой скоростью обучения (превышение стохастического градиентного спуска при попытке найти минимум) или слишком малым набором проверки (который дает ненадежные значения потерь, поскольку небольшие изменения в выходных данных могут привести к большие потери значения изменения).