Практика применения OpenCV. Машинное обучение и обнаружение объектов на основе ключевых точек

  • Термины: ключевые точки, дескрипторы ключевых точек.
  • Алгоритмы извлечения и описания (description) ключевых точек: SIFT, SURF, FAST, BRIEF, и ORB.
  • Support Vector Machine (SVM).
  • Не чувствительный к изменениям в освещении и беспорядку на сцене детектор объектов на основе ключевых точек использующий машинное обучение для обнаружения множества объектов в режиме реального времени с помощью фрейморка bag-of-visual-words.

Ключевые точки и дескрипторы ключевых точек

Пара подводных камней при обнаружении объектов на основе цвета (или grayscale):
  • Работает хорошо только для одноцветных объектов. Можно сделать backproject a hue histogram of a textured object, but that is likely to include a lot of colors и это вызовет очень большое количество ложных срабатываний;
  • Алгоритм может быть "одурачен" разными объектами одного цвета.
Плюсом обнаружения объектов на основе цвета является скорость. Короче говоря способ хорошо, когда известна среда в которой будет работать приложение, в противном случае способ бесполезен. Например, в среде Robocup всё известно: мяч, поле, линии на поле, ворота. Поэтому в такой среде можно использовать обнаружение объектов по цвету. Повысить качество обнаружения можно добавив некоторые логические проверки: высота мяча и соотношение сторон ворот, т.е. высоты к ширине. Среда известна, все объекты имеют уникальные цвета сплошной заливки. Поэтому обнаружение объектов на основе цвета будет работать хорошо. Однако если разрабатывается система зрения для поисково-спасательного робота, то рабочая среда заранее не известна и поэтому подход к обнаружению объектов на основе цвета работать не будет.

Общие термины

В задачах обнаружения объектов обычно предполагается два множества изображений:
  • Обучающее множество - для того чтобы научить компьютер как выглядит объект. Это может быть достигнуто путем расчета hue histograms или путем расчета ключевых точек и дескрипторов ключевых точек. Очевидно, что желательно чтобы на обучающих изображениях интересующие объекты были ограничены прямоугольниками или чтобы обучающие изображения содержали по большому счету только интересующие объекты.
  • Тестовое множество - use case разрабатываемого приложения.

Как работает метод на основе ключевых точек

Смысл метода состоит в том чтобы "не учить" компьютер характеристикам целого объекта (как например расчет гистограмм flood-filled точек) и искать подобные случаи на других изображениях. Вместо этого найти действительно "важные" точки (ключевые точки) на объекте и также сохранить информацию об их соседях (дескрипторах ключевых точек) в качестве описания объекта. А на тестовых изображениях искать дескрипторы ключевых точек среди ключевых точек на всём изображении и пытаться сопоставить два множества дескрипторов (одно с обучающего объекта, второе с тестового) использую некоторое notion of similarity и смотреть как много дескрипторов совпадают. Для тестовых изображений которые содержат в себе объекты с обучающего изображения будет получаться много совпадений и в них будет прослеживаться закономерная тенденция. На рисунке ниже показано обучающее и тестовое изображение, каждое со своими SIFT ключевыми точками, и также показаны совпадающие дескрипторы между изображениями. Все совпадения следуют тенденции.

Сравнение SIFT ключевых точек и признаков