Лица везде! От простых селфи до интеллектуальных интеллектуальных систем распознавания лиц.

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

Вы когда-нибудь задумывались, что вы можете создать свой собственный Каскад для обнаружения любого объекта по вашему выбору? Объектом может быть что угодно, например фрукт, мяч, ручка, бутылка и т. Д., При условии, что у вас есть несколько положительных изображений того же самого.

Положительные изображения - это изображения, которые содержат наш объект. Например, позитивные изображения банана должны содержать банан на каждом из них на любом фоне. Пример -

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

Для более надежного классификатора / каскада вам понадобится много положительных и отрицательных изображений.

Мы сосредоточимся на создании классификатора / каскада / детектора для автомобиля. Я буду использовать каскад / классификатор / детектор как взаимозаменяемые.

Предварительные требования:

  1. Python (подойдет начальный уровень)
  2. OpenCV (подойдет начальный уровень)

Шаги

  1. Чтобы получить наши положительные изображения, мы будем использовать базу данных изображений для обнаружения автомобилей, которая доступна здесь. Вы можете скачать его и извлечь содержимое в свою папку. После извлечения вы обнаружите, что негативные и позитивные изображения присутствуют в папке TrainImages - 500 негативных изображений, 550 позитивных изображений. Извлеките их оба в отдельные папки, например:

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

pos / pos-0.pgm → Расположение нашего позитивного изображения.

1 → Количество объектов на изображении

0 0 100 40 → Расположение изображения. 0 0 - координаты x и y, а 100 40 - ширина и высота, так что изображение простирается от (0,0) до ширины = 100 и высоты = 40.

Если у вас есть 2 или более объекта, ваше конкретное изображение на cars.info станет

pos / pos-1.pgm 2 0 0100 40 1 1 80 60

Для Объекта 1 от (0,0) до Ширина = 100, Высота = 40

Для Объекта 2 от (1,1) до Ширина = 80, Высота = 60

Я создал файл cars.info, его можно скачать здесь.

3. Чтобы описать все негативные изображения, мы просто собираем их имена в файле bg.txt. Он может быть найден здесь".

4. Теперь создадим файл vec с помощью OpenCV. В командной строке (в корневой папке) выполните команду:

opencv_createsamples -info cars.info -num 550 -w 48 -h 24 -vec cars.vec

num → количество имеющихся у нас объектов.

w, h → ширина и высота обучающих данных, которые мы хотим создать.

Теперь в корневой папке будет создан файл cars.vec.

Если вы столкнулись с ошибкой здесь opencv_createsamples не распознается…, извлеките этот zip в структуру папок вашего проекта.

Чтобы проверить созданный cars.vec на предмет допустимости, запустите команду

opencv_createsamples -vec cars.vec -w 48 -h 24

5. Чтобы обучить каскад, мы создадим каталог с именем data и запустим

opencv_traincascade -data data -vec cars.vec -bg bg.txt -numPos 500 -numNeg 500 -numStages 10-w 48 -h 24 -featureType LBP 

Чем больше numStages, тем лучше наша модель.

6. Теперь в нашей папке данных у нас есть файл cascade.xml, который является нашим последним каскадом и может использоваться для обнаружения автомобилей. Он также содержит поэтапные xml-файлы после каждого этапа.

Протестируйте свой каскад и дайте мне знать результаты.

Пожалуйста, хлопайте в ладоши, если эта история вам помогла.