Пример использования SVM-HOG для поиска кругов и треугольников

Для примера возьмем несколько изображений кругов и треугольников на белом фоне.

data

И первую попавшуюся фотографию с нарисованным кругом и треугольником

DSCF2803

Запускаем Сlassifier Tool For OpenCV выбираем папки, для начало целью будут круги, устанавливаем WinSize 32/32, а detivAperature 1. Проводим обучение и получаем классификатор. На тестовом изображении получаем результат

testПовторяем тоже самое но меняем местами треугольники и круги но положительно результата не получается. В чем же дело. Причины тут две:

  • Для обучения классификатор нужно образцов порядка 5000-10000
  • В негативных образцах должны быть разнообразные изображения не содержащие искомые, а не однотипные

Видео создания классификатора

Создания HOG-SVM классификатора

11 responses to “Пример использования SVM-HOG для поиска кругов и треугольников

  1. Не получается запустить процесс обучения. Выходит ошибка «не удается загрузить Dll ‘OpenCvSharpExtern: не найден указанный модуль’ «

    • Проверьте есть ли в папке OpenCvSharpExtern.dll (размер 402КБ) если он есть то уставите Microsoft Visual C++ Redistributable лучше все версий начиная с 2008, качать сайта майкрософта.

      • Этот файл есть, до этого тоже были ошибки с библиотеками opencv_core245 и тд., я их заменил а с ‘OpenCvSharpExtern’ проблема. Есть полностью установленная visual studio 2008.

  2. Может подлитесь своей программой, или исходниками, что бы можно было перекомпилить на своей машине??

  3. исходники не полностью выложены, многих файлов не хватает. Может зальете версию которой сами пользуетесь.

    • Странно. сделал возврат всего проекта, все исходники должны быть заодно выложил новый релиз. пробуйте

      • Релиз не запустился, теже ошибки с dll файлами. А проэкт удалось пересобрать на другом компьютере. Весь функционал проверить еще не успел. Как проверю отпишусь. Спасибо за помощь)

  4. Здравствуйте, в поздних версиях программы появилась вкладка MarkUp в которой можно разметить интересующие нас области на фотографии, в описании сказано что для опознавания нескольких объектов, я понимаю что допустим на одной фото я выделил автомобиль, на другой табличку с номером улицы. Далее сказано что происходит обучение с негативными образцами, так понимаю с теми самыми что указаны в папке negative examples?

    • Не совсем так. В Markup отмечаются искомые объекты (они будут positiv) одного типа (машины или номера или люди), а негативными будут все остальные участки изображения. Далее этот файл используется во вкладке «hog markup», алгоритм там следующий:
      1 вырезаются отмеченные области(pos) и в N раз больше случайных областей не пересекающихся с pos (они будут neg)
      2 на них обучается классификатор
      3 полученным классификатором проводится поиск и все результаты которые отличны от pos (по координатам +- 30%) добавляются в neg
      4 пока результат не станет приемлемым повторяем со 2-го этапа
      Svm-hog может искать объекты только одного типа.

Оставьте комментарий