Обучение за каскаден класификатор
Работата с каскаден класификатор включва два етапа: обучение и откриване. Можете да разгледате разпознаването, например на разпознаването на лица. И тук е описано как да се обучи класификаторът.
OpenCV има две приложения за обучение на каскади: opencv_haartraining и opencv_traincascade (нова версия, написана на C ++). Но основната разлика между двете е, че opencv_traincascade поддържа и двете Haar [Пол Виола, Майкъл Джоунс. Бързо откриване на обекти с помощта на усилена каскада от прости функции. Конференция по компютърно зрение и разпознаване на образци (CVPR), 2001, стр. 511-518.] И LBP [Shengcai Liao, Xiangxin Zhu, Zhen Lei, Lun Zhang и Stan Z. Li. Изучаване на многобройни блокови локални двоични модели за разпознаване на лица. Международна конференция по биометрия (ICB), 2007, стр. 828-837.] Характеристики. LBP от гледна точка както на обучението, така и на откриването е няколко пъти по-бързо от Haar. Що се отнася до надеждността на разпознаването, всичко зависи от извадката за обучение. LBP може да бъде обучен да приближава характеристиките на Хаар.
opencv_traincascade и opencv_haartraining магазин обучени класификатори в различни формати. Новият интерфейс за откриване (клас CascadeClassifier в модула objdetect) поддържа и двата формата. opencv_traincascade може да запази каскадно обучение в стария формат. Но opencv_traincascade и opencv_haartraining не могат да заредят класификатора в различен формат за по-нататъшно обучение след почивката.
Приложението opencv_traincascade може да използва TBB за многопоточност. За да го използвате в многоядрен режим, OpenCV трябва да бъде компилиран с TBB.
Други помощни програми, използвани за обучение:
1.opencv_createsamples се използва за подготовка на обучителен набор от положителни и тестови проби във формат, който се поддържа както от приложенията opencv_haartraining и opencv_traincascade. Резултатът е файл с разширение * .vec, това е двоичен формат, който съдържа изображение.
2.opencv_performance може да се използва за оценка на качеството на класификаторите, но само за обучени opencv_haartraining. Той използва колекцията от маркирани изображения, изпълнява класификатора и отчита т. Нар. Производителност, т.е. броя на намерените обекти, броя на пропуснатите обекти, броя на фалшивите положителни резултати и друга информация.
За обучение трябва да събирате изображения. Има два вида изображения: отрицателни и положителни. Отрицателните изображения съответстват на отсъствието на обект в изображението. Положителните изображения съответстват на изображението на откритите обекти. Набор от отрицателни изображения трябва да се подготви ръчно, докато набор от положителни изображения се създава с помощта на помощната програма opencv_createsamples.
Отрицателните изображения трябва да бъдат взети от произволно изображение. Тези изображения не трябва да съдържат открити обекти. Отрицателните изображения са изброени в специален файл. Това е текстов файл, където всеки ред съдържа името на файла с изображение (спрямо файловата директория) с отрицателно изображение. Този файл трябва да бъде създаден ръчно. Обърнете внимание, че отрицателните примери се наричат също фонови образци или образци на фона на изображението. Описаните изображения могат да бъдат с различни размери. Но всяко изображение трябва да е по-голямо от размера на учебния прозорец. Пример за описания файл:
Структура на директорията:
Положителните изображения се създават с помощната програма opencv_createsamples. Те могат да бъдат създадени от едно изображение с обект или от колекция от предварително маркирани изображения.
Имайте предвид, че се нуждаете от голям набор от положителни изображения, преди да ги прехвърлите в споменатата програма. Например, може да се нуждаете само от едно положително лице за абсолютно същите обекти, като логото на OpenCV, но определено се нуждаете от стотици или дори хиляди изображения с положително лице.
Нека едно изображение да бъде фирменото лого. Тогава от даден образен обект се създават голям брой положителни изображения, чрез произволни завъртания, промени в интензивността на логото, както и чрез поставяне на логото на произволен фон. Броят и обхватът на случайността могат да бъдат променени с помощта на аргументи от командния ред на помощната програма opencv_createsamples
Аргументи: