Обучение HaarCascade: объединение файлов .lst - PullRequest
0 голосов
/ 22 мая 2019

Я работаю над собственным детектором объектов, использующим HaarCascade.Кстати, я застрял в какой-то момент, который я объясню ниже.

Ситуация такова: - Я собрал 100 изображений моего объекта (скажем, яблоки) - Я собрал около 1500 негативов - я создал негатив.txt , файл, который содержит пути к изображениям негативов - я создал positives.txt , файл, который содержит пути,количество объектов, координаты и размеры моих положительных изображений

Теперь это проблема.

Используя opencv_createsamples.exe для увеличения моих данных / изображений, я увидел, что, если я выполню его (с теми же параметрами) для каждого изображения объекта, на выходе будет более или менее 1000 положительных изображений (фон негативов + объект) вместе с .lst file, содержащим пути и координаты объекта внутри негативного изображения.Эти координаты не изменятся (потому что я установил их, когда выполнил opencv_createsamples.exe).

Вопрос: это хорошая идея, изменить параметры, требуемые createsamples, для каждого изображения моего объекта, а затем объединить ихвсе?

Пример того, что я делаю сейчас:

  • opencv_createsample.exe -p1 0,5 -p2 0,6 -p3 0,7
  • дляодин из моих объектов изображения для каждого из моих негативов
  • .lst файл с информацией (то же самое, если выполнить для каждого положительного изображения объекта)

Пример того, что я готовсделать:

  • для каждого моего изображения объекта для каждого из моих негативов
  • opencv_createsample.exe -p1 0,5 -p2 0,6 -p3 0,7 - opencv_createsample.exe -p10,6 -p2 0,7 -p3 0,8 и т. Д. (Со случайными значениями параметров)
  • несколько файлов .lst с различной информацией для каждого изображения объекта
  • объединение всех .lst

Я действительно надеюсь, что объяснил все.

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

Глоссарий:

  • объект = то, что я хочу обнаружить (яблоко)
  • негативное изображение = фоновое изображение, не содержащее объект
  • положительное изображение = обработанное изображение (создает образцы) с отрицательным + объектом

Спасибо всем

ОБНОВЛЕНИЕ

Здесь, после просмотра видео Sentdex на HaarCascade: Обучение обнаружению каскадных объектов Хаара - OpenCV с Python для анализа изображений и видео 20

1 Ответ

0 голосов
/ 04 июня 2019

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

...