В каком аспекте измерять производительность детектора объектов?

Я на крючке, чтобы измерить результаты предсказания детектора объектов. Из некоторых руководств я узнал, что при тестировании обученного детектора объектов для каждого объекта на тестовом изображении предоставляется следующая информация:

    <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>

Тогда я поверю, что мой детектор объектов сделал что-то не так? Или они допускают некоторую небольшую дельту, так что если ограничивающая рамка имеет небольшой дрейф, то это приемлемо. Но если «этикетка» совершенно неверна, то это точно неправильно?

Для меня это как «черный ящик», и было бы здорово, если бы кто-нибудь пролил на это свет. Спасибо.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для задачи обнаружения объектов. Обычная метрика производительности — средняя средняя точность (mAP).

1) Приведенная выше информация содержит класс обнаруженных объектов, а также ограничивающую рамку. Они оба необходимы для вычисления mAP. Здесь — хороший блог о том, как рассчитывается mAP. Ключевое понятие в вычислении mAP называется Пересечение над объединением (IoU), которое указывает, насколько обнаруженная ограничивающая рамка перекрывается с рамкой истинности. Обычно обнаруженная ограничивающая рамка должна иметь IoU как минимум выше порогового значения (например, 0,5), чтобы считаться правильно определяющим местоположение объекта. На основе порога IoU блок обнаружения может быть помечен как «Истинно положительный», «TN», «FP» и «FN», чтобы можно было рассчитать дополнительные показатели точности.

2) Задача обнаружения потерь при обнаружении объектов состоит из двух частей. Потеря для классификации и потеря для регрессии ограничивающей рамки, и общая потеря обычно представляет собой взвешенную сумму этих двух. (Таким образом, они могут быть настроены, чтобы сосредоточиться на регрессии или классификации ограничительной рамки)

В приведенном вами примере результат обнаружения правильно классифицировал объект, но ограничительная рамка не совсем точна, в этом случае потеря классификации равна 0, а потеря регрессии ограничительной рамки - нет. Таким образом, модель в некоторой степени знает, что результат прогнозирования все еще не идеален, и ей придется немного учиться, чтобы давать более качественные прогнозы. В случае неправильной этикетки происходит только потеря классификации.

Фактический расчет потерь также связан с IoU. Для модели будет предопределен IoU, чтобы выбрать, какие прогнозируемые ограничивающие рамки будут выбраны для участия в вычислении потерь. Это необходимо, потому что обычно вокруг одного и того же объекта будет складываться много предсказуемых блоков, поэтому лучше выбрать один или несколько из них, а не все сразу.

Спасибо большое. Это именно то, что я ищу. Я даже нашел здесь прототип реализации вычисления AP: github.com/rafaelpadilla/Object-Detection-Metrics

lllllllllllll 21.06.2019 18:23

Если вы ищете более подробную информацию о том, как вычисляется mAP, вы найдете в этом github другую реализацию показателей mAP https://github.com/cocodataset/cocoapi.

CDuvert 03.07.2019 17:21

Другие вопросы по теме