Я на крючке, чтобы измерить результаты предсказания детектора объектов. Из некоторых руководств я узнал, что при тестировании обученного детектора объектов для каждого объекта на тестовом изображении предоставляется следующая информация:
<object>
<name>date</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>451</xmin>
<ymin>182</ymin>
<xmax>695</xmax>
<ymax>359</ymax>
</bndbox>
</object>
Однако мне все еще неясно, 1) как эта информация берется детектором объектов для измерения точности, и 2) как вычисляются «потери» для этого случая. Это что-то вроде строгого сравнения? Например, если для объекта «дата» я получил следующие результаты:
<object>
<name>date</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>461</xmin> <---- different
<ymin>182</ymin>
<xmax>695</xmax>
<ymax>359</ymax>
</bndbox>
</object>
Тогда я поверю, что мой детектор объектов сделал что-то не так? Или они допускают некоторую небольшую дельту, так что если ограничивающая рамка имеет небольшой дрейф, то это приемлемо. Но если «этикетка» совершенно неверна, то это точно неправильно?
Для меня это как «черный ящик», и было бы здорово, если бы кто-нибудь пролил на это свет. Спасибо.
Для задачи обнаружения объектов. Обычная метрика производительности — средняя средняя точность (mAP).
1) Приведенная выше информация содержит класс обнаруженных объектов, а также ограничивающую рамку. Они оба необходимы для вычисления mAP. Здесь — хороший блог о том, как рассчитывается mAP. Ключевое понятие в вычислении mAP называется Пересечение над объединением (IoU), которое указывает, насколько обнаруженная ограничивающая рамка перекрывается с рамкой истинности. Обычно обнаруженная ограничивающая рамка должна иметь IoU как минимум выше порогового значения (например, 0,5), чтобы считаться правильно определяющим местоположение объекта. На основе порога IoU блок обнаружения может быть помечен как «Истинно положительный», «TN», «FP» и «FN», чтобы можно было рассчитать дополнительные показатели точности.
2) Задача обнаружения потерь при обнаружении объектов состоит из двух частей. Потеря для классификации и потеря для регрессии ограничивающей рамки, и общая потеря обычно представляет собой взвешенную сумму этих двух. (Таким образом, они могут быть настроены, чтобы сосредоточиться на регрессии или классификации ограничительной рамки)
В приведенном вами примере результат обнаружения правильно классифицировал объект, но ограничительная рамка не совсем точна, в этом случае потеря классификации равна 0, а потеря регрессии ограничительной рамки - нет. Таким образом, модель в некоторой степени знает, что результат прогнозирования все еще не идеален, и ей придется немного учиться, чтобы давать более качественные прогнозы. В случае неправильной этикетки происходит только потеря классификации.
Фактический расчет потерь также связан с IoU. Для модели будет предопределен IoU, чтобы выбрать, какие прогнозируемые ограничивающие рамки будут выбраны для участия в вычислении потерь. Это необходимо, потому что обычно вокруг одного и того же объекта будет складываться много предсказуемых блоков, поэтому лучше выбрать один или несколько из них, а не все сразу.
Если вы ищете более подробную информацию о том, как вычисляется mAP, вы найдете в этом github другую реализацию показателей mAP https://github.com/cocodataset/cocoapi.
Спасибо большое. Это именно то, что я ищу. Я даже нашел здесь прототип реализации вычисления AP: github.com/rafaelpadilla/Object-Detection-Metrics