TIDE (набор инструментов для определения ошибки обнаружения)

Хотите улучшить производительность вашей модели обнаружения объектов?

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

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

Чтобы выполнить обнаружение объектов, вам нужен только набор обучающих данных. Существуют некоторые предварительно обученные модели с открытым исходным кодом, такие как API обнаружения объектов Tensorflow,Detectron2 и т. д. Вам просто нужно загрузить эти предварительно обученные модели и переобучить их, используя свой собственный набор данных.

Теперь перейдем к оценке модели. После обучения вашей модели вам необходимо проверить производительность вашей модели. Есть некоторые показатели производительности, такие как AP, значение карты, с помощью которого вы можете получить точность своей модели.

После всего этого обучения и оценки модели вы можете разочароваться, увидев цифры AP и карты, так как они далеки от ваших ожиданий.

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

Чтобы увеличить ценность карты вашей модели, вы наверняка захотите узнать, где мы можем ее улучшить дополнительно. Вот тут-то и появляется TIDE. TIDE поможет вам точно определить тип ошибки, над устранением которой следует сосредоточиться, чтобы ваша модель работала лучше.

TIDE — это общий инструментарий для выявления ошибок обнаружения и сегментации. Это метод измерения вклада каждой ошибки таким образом, чтобы изолировать ее влияние на общую производительность модели.

  • Где мы можем использовать TIDE?

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

  • Различные типы ошибок

Ошибка классификации: объект локализован правильно, но неправильно классифицирован.

Ошибка локализации: объект классифицирован правильно, но локализация объекта неверна.

Ошибка как классификации, так и локализации: объект неправильно классифицирован, а локализация объекта также неверна.

Обнаружение повторяющихся ошибок. Для одной и той же основной истины модель дает две ограничивающие рамки.

Фоновая ошибка: ограничивающая рамка обнаруживается моделью, но нет никакого истинного значения.

Пропущенная ошибка GT: есть наземная правда, но модель полностью не попала в ограничивающую рамку обнаружения.

  • Внедрение TIDE для набора данных COCO
# Download the Mask R-CNN results to test on. Only for demonstration purposes.
import urllib.request # For downloading the sample Mask R-CNN annotations

bbox_file = 'mask_rcnn_bbox.json'   
mask_file = 'mask_rcnn_mask.json'
# Import the TIDE evaluation toolkit
from tidecv import TIDE

# Import the datasets we want to use
import tidecv.datasets as datasets

# Load the dataset
# This will automatically download COCO's 2017 annotations for you. You can specify your own COCO-style dataset too!
# See datasets.py for a list of all the supported datasets.
gt = datasets.COCO()
# Load the results in COCO format
bbox_results = datasets.COCOResult(bbox_file) # These files were downloaded above.
mask_results = datasets.COCOResult(mask_file) # Replace them with your own in practice.
# Create a TIDE object to use for evaluation 
tide = TIDE()
# Run the evaluations on the standard COCO metrics 
tide.evaluate_range(gt, bbox_results, mode=TIDE.BOX )
tide.evaluate_range(gt, mask_results, mode=TIDE.MASK )
# Summarize the evaluations run so far in the console
tide.summarize()

Вы можете обратиться к этому репозиторию github для реализации TIDE.

TIDE выдаст вывод для набора данных COCO следующим образом:

# Plot summaries for the evaluations run so far
tide.plot()

tide.plot() даст визуализацию сводки ошибок.

  • Применения TIDE
  1. Взаимное сравнение моделей: мы можем очень легко сравнивать разные модели с помощью TIDE.
  2. Перекрестное сравнение данных
  3. Сравнение по шкале

Ссылки

  1. Дэниел Боля, Шон Фоули, Джеймс Хейс и Джуди Хоффман; TIDE: общий набор инструментов для выявления ошибок обнаружения объектов, ECCV 2020.
  2. Тушар Кольхе; Как повысить точность обнаружения объектов за счет понимания данных, https://blog.gofynd.com/boost-object-detection-model-accuracy-552586d698c
  3. Улучшенная карта для обнаружения объектов https://towardsdatascience.com/a-better-map-for-object-detection-32662767d424

Я надеюсь, что этот контент поможет вам.

Читать мой предыдущий блог

Извлечение текста из неструктурированных данных с помощью простого оптического распознавания текста

Спасибо !!