Главная Мой профиль Регистрация Выход Вход
Приветствую Вас Гость | RSS
Суббота
22.07.2017
01:39
Установка Игр в Ubuntu
Темы
...
 
Форма входа
Главная » Статьи » Ubuntu: Записная книжка

Ubuntu OpenCV - Обучение каскадного классификатора

Ubuntu OpenCV - Обучение каскадного классификатора

Обучение каскадного классификатора с использованием утилит opencv_traincascade и opencv_createsamples на Ubuntu 12.04 (64-bit), утилиты поставляются с пакетом libopencv-core-dev

opencv ubuntu traincascade
Создаем папку в которой и будем производить обучение классификатора, к примеру CascadeTraining, в домашней директории. В ней создадим еще несколько папочек:

CascadeTraining
Positive - для хранения коллекции позитивных изображений, т.е. изображений на которых присутствует искомый объект.
Positive
 Делаем множество снимков интересующего нас объекта, на различных расстояниях и под разными углами, обрезаем все лишнее по краям и закидываем в эту папку. Чем сложнее объект и большая разница между изображениями объекта с различных точек зрения, тем большее количество снимков Вы должны заготовить. Вообще, даже для самого простого предмета, к примеру плоского логотипа, нужно хотя бы пару сотен снимков, для опознавания сложных объектов требуется несколько тысяч положительных снимков. Правило просто - чем больше снимков оригинала объекта, предоставленных для обучения классификатора, тем лучше результат. Из этих изображений, с помощью утилиты opencv_createsamples, будем создавать множество положительных и тестовых образцов (файл с расширением *.vec), необходимых в процессе обучения. Для работы opencv_createsamples нужно создать текстовый файл positives.dat, описывающий нашу коллекцию позитивных картинок. Формат будет следующим (как пример в моем случае):
Positive/name_image.png N x y w h
, где каждая строка файла описывает отдельное изображение
name_image - имя файла 
N - количество объектов на изображении, у нас на каждом изображении - один объект ((N=1)
x, y - координаты левого верхнего угла разметки объекта, в нашем случае x, y = 0 0
w, h - ширина и высота разметки, у нас это ширина и высота картинки
positives.dat
Negative - для хранения негативных изображений, т.е изображений с отсутствием искомого объекта, это могут быть любые наборы изображений помещений, природы, объекты технического или биологического происхождения и т.д., главное - на них должен отсутствовать интересующий нас объект.
Negative
 Негативные образы могут быть разных размеров, но не меньше размера окна обучения, их количество должно быть больше позитивных изображений, хотя бы в два раза. Негативные образы также перечисляются в специальном текстовом файле - negatives.txt:
negatives.txt
Training - папка в которой будут сохраняться промежуточные этапы тренировки и как конечный результат - обученный классификатор cascade.xml(в начле пустая)
И так, все необходимые нам изображений мы подготовили, теперь подготовим файлы positives.dat и negatives_txt. Если изображений не очень много, их можно расписать и в ручную, в любом текстовом редакторе (но это очень упрощенный случай), в реальности, даже для простейшего классификатора, необходимых образов оказывается достаточно для ручной утомительной работы, поэтому для создания файлов negatives.txt и positives.dat  напишем скрипт(image_txt_dat.sh):
#!/bin/bash
cd $HOME/CascadeTraining
find Negative -name '*.jpg' > negatives.txt
for file in Positive/*.png
do
posdata=`identify -format "Positive/%f 1 0 0 %w %h" $file`
echo $posdata >> positives.dat
done

image_txt_dat.sh
При его запуске и получим необходимые нам файлы
negatives.txt positives.dat
Создадим файл позитивных образов samples_out.vec
Команда в терминале:
$ opencv_createsamples \
-info /home/user/CascadeTraining/positives.dat -num 32 -vec \
/home/user/CascadeTraining/samples_out.vec -w 60 -h 80

, где
-num - количество положительных образов для генерации (у меня 32 картинки в папке Positive)
-w, -h - ширина и высота (в пикселях) выходных примеров (позитивные изображения у меня прямоугольные, взял средне-пропорционально 60x80)
opencv_createsamples имеет еще множество параметров, в формат данной статьи я их не включил (можно обсудить отдельно).
После выполнения команды в папке CascadeTraining "волшебным образом" появится файл положительных образов - samples_out.vec

Приступим к тренировке классификатора командой в терминале:
$ opencv_traincascade -data /home/user/CascadeTraining/Training \
-vec /home/user/CascadeTraining/samples_out.vec \
-bg /home/user/CascadeTraining/negatives.txt \
-numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 \
-numPos 32 -numNeg 106 -w 24 -h 24 -mode ALL \
-precalcValBufSize 1024 -precalcIdxBufSize 1024

, где
-data - папка сохранения обученного классификатора (/home/user/CascadeTraining/Training)
-vec - файл с позитивными образами (/home/user/CascadeTraining/samples_out.vec)
-bg - файл описывающий негативные образы (/home/user/CascadeTraining/negatives.txt)
-numStages - количество этапов каскада для обучения (10~20)
-minHitRate, -maxFalseAlarmRate - утрированно, это желаемый диапазон точности (оставьте как есть 0.999, 0.5)
-numPos, -numNeg - количество позитивных/негативных образов
-precalcValBufSize -precalcIdxBufSize - я просто разделил свою оперативку пополам

После окончания процесса обучения, готовый к применению обученный каскад cascade.xml будет помещен в папку Training. В ходе обучения в этой же папке создаются резервные файлы после каждого этапа обучения, т.к. процесс обучения может затянуться надолго, то в случае прерывания (погас свет, уехали в отпуск или просто надоело) вы можете продолжить обучение каскадного классификатора с того места на котором прервались.
Training cascade.xml

Обученый каскадный классификатор


Источник: http://ubuntu-wine.ru
Категория: Ubuntu: Записная книжка | Добавил: Soliton (19.10.2013) | Автор: Airvikar W
Просмотров: 4456 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Программы
 
 
 
Статистика
Яндекс.Метрика

Рейтинг@Mail.ru
Мои баннеры
 


Dmoz
Категории раздела
Wine на практике [27]
Ubuntu: Записная книжка [14]
Игры в Ubuntu [11]
Игры установленные в Ubuntu с помощью приложения Wine.

 Copyright MyCorp © 2017
Сделать бесплатный сайт с uCoz