Перейти к содержимому
Compvision.ru
ProgerX

Тренировка каскадов Хаара

Recommended Posts

Думаю это должно помочь:

http://courses.graphicon.ru/main/vision/2010/lectures

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо.

Еще такой вопрос: возможна ли такая ситуация, что обучение каскада утилитой haartraining "зайдет в тупик" (например, заданы недостижимые вероятности для данного набора изображений или что-то вроде этого :) )? И, если такое возможно, сообщит ли программа об этом?

Просто обучение вот с такими параметрами


opencv_haartraining \

  -data classifier2\

  -vec vecfile\

  -bg negatives.txt\

  -npos 2032\

  -nneg 7650\

  -nstages 12\

  -nsplits 2\

  -mem 4096\

  -nonsym\

  -minhitrate 0.999900\

  -maxfalsealarm 0.300000\

  -weighttrimming 0.950000\

  -mode ALL\

  -w 12\

  -h 24

выполняется уже порядка недели на достаточно мощной машине, а этап обучения не меняется. Подозреваю, что 0,3 - слишком мало. При этом процессор загружен на 100%, т.е. программа видимо что-то делает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пытаюсь обучить каскад хаара с помощью данной утилиты.

В качестве исходных данных используется набор картинок с выделенными пешеходами (вручную).

По полученным данных создаю info.dat для генерации положительных примеров.

Вот его содержимое (кусочек):

e:\PedestriansPics\frame00001.bmp 2 248 60 15 30 241 40 9 19

e:\PedestriansPics\frame00002.bmp 2 249 60 14 28 241 41 9 19

e:\PedestriansPics\frame00003.bmp 2 247 61 13 27 240 39 12 25

e:\PedestriansPics\frame00004.bmp 2 249 61 14 28 240 39 13 26

e:\PedestriansPics\frame00005.bmp 2 250 62 14 28 238 40 9 18

с помощью утилиты createsamples.exe создаю файл positives.vec - пока все успешно.

В исходных картинках закрашиваю пешеходов черными прямоугольниками и делаю их список - файл с отрицательными примерами.

Запускаю обучение каскада Хаара:

haartraining.exe -vec positives.vec -bg bg.txt -npos 7000 -nneg 3000

он начинает обучаться, но потом выдает ошибку:

haartraining.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства.

Из-за чего такая может возникать? как исправить?

Заранее благодрана :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может быть из-за прав доступа к файлам?

Запущено от имени админа?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, пользователь под которым запускается утилита имеет права администратора.

И падение происходит не сразу как к файлам обращается, а уже в процессе обучения.

Вот что выдает программа в окне:

Data dir name: (NULL)

Vec file name: positives.vec

BG file name: bg.txt

Num pos: 7000

Num neg: 3000

Num stages: 14

Num splits: 1 (stump as weak classifier)

Mem: 200 MB

Symmetric: TRUE

Min hit rate: 0.995000

Max false alarm rate: 0.500000

Weight trimming: 0.950000

Equal weights: FALSE

Mode: BASIC

Width: 24

Height: 24

Max num of precalculated features: 3495

Applied boosting algorithm: GAB

Error (valid only for Discrete and Real AdaBoost): misclass

Max number of splits in tree cascade: 0

Min number of positive samples per cluster: 500

Required leaf false alarm rate: 6.10352e-005

Stage 0 loaded

Stage 1 loaded

Stage 2 loaded

Stage 3 loaded

Stage 4 loaded

Stage 5 loaded

Stage 6 loaded

Stage 7 loaded

Stage 8 loaded

Tree Classifier

Stage

+---+---+---+---+---+---+---+---+---+

| 0| 1| 2| 3| 4| 5| 6| 7| 8|

+---+---+---+---+---+---+---+---+---+

0---1---2---3---4---5---6---7---8

Number of features used : 85848

Parent node: 8

*** 1 cluster ***

POS: 964 1000 0.964000

NEG: 413 0.0128624

BACKGROUND PROCESSING TIME: 0.09

..................................

Precalculation time: 0.19

+----+----+-+---------+---------+---------+---------+

| N |%SMP|F| ST.THR | HR | FA | EXP. ERR|

+----+----+-+---------+---------+---------+---------+

| 1|100%|-|-0.205523| 1.000000| 1.000000| 0.458243|

+----+----+-+---------+---------+---------+---------+

| 2|100%|+|-0.283935| 1.000000| 1.000000| 0.342774|

+----+----+-+---------+---------+---------+---------+

| 3| 88%|-|-0.625260| 1.000000| 1.000000| 0.245461|

+----+----+-+---------+---------+---------+---------+

| 4| 90%|+|-0.805312| 1.000000| 1.000000| 0.245461|

+----+----+-+---------+---------+---------+---------+

| 5| 82%|-|-0.946783| 1.000000| 1.000000| 0.228758|

+----+----+-+---------+---------+---------+---------+

| 6| 81%|+|-0.892359| 1.000000| 0.973366| 0.228758|

+----+----+-+---------+---------+---------+---------+

| 7| 80%|-|-1.087639| 1.000000| 0.973366| 0.214234|

+----+----+-+---------+---------+---------+---------+

| 8| 78%|+|-1.152422| 0.996888| 0.963680| 0.203341|

+----+----+-+---------+---------+---------+---------+

| 9| 78%|-|-1.293953| 0.995851| 0.869249| 0.196805|

+----+----+-+---------+---------+---------+---------+

| 10| 77%|+|-1.325108| 0.995851| 0.866828| 0.195352|

+----+----+-+---------+---------+---------+---------+

| 11| 77%|-|-1.181903| 0.997925| 0.656174| 0.186638|

+----+----+-+---------+---------+---------+---------+

| 12| 77%|+|-1.386390| 0.995851| 0.702179| 0.148874|

+----+----+-+---------+---------+---------+---------+

| 13| 75%|-|-1.439945| 0.995851| 0.687651| 0.145243|

+----+----+-+---------+---------+---------+---------+

| 14| 76%|+|-1.304697| 0.995851| 0.636804| 0.124909|

+----+----+-+---------+---------+---------+---------+

| 15| 76%|-|-1.408380| 0.995851| 0.658596| 0.102397|

+----+----+-+---------+---------+---------+---------+

| 16| 74%|+|-1.347601| 0.995851| 0.605327| 0.111111|

+----+----+-+---------+---------+---------+---------+

| 17| 74%|-|-1.324087| 0.995851| 0.552058| 0.099492|

+----+----+-+---------+---------+---------+---------+

| 18| 73%|+|-1.258324| 0.995851| 0.508475| 0.095134|

+----+----+-+---------+---------+---------+---------+

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сложно сказать, что ему не нравится.

Попробуйте все по шагам как здесь написано сделать:

http://note.sonots.com/SciSoftware/haartraining.html

Вроде у всех получалось по этому руководству.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Min hit rate: 0.995000

Max false alarm rate: 0.5000 чует моё сердце проблема в этих строчках.

Можешь забить на падение и сделать каскад из 8 стадий. Думаю результат и так будет приемлемым.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Благодарю за советы. Разобралась в чем была проблема. Я по наивности посчитала, что при создании примеров и обучении если не задать размер, то будет задан какой-то по умолчанию, но в этом была проблема. Когда явно написала размер каскад обучился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть рабочий каскад. Пытаюсь оценить его работоспособность в процентном соотношении. Не могу разобраться с синтаксисом утилиты performance.


C:\Users\Login>D:\OpenCV2.1\bin\opencv_performance.exe -data D:\img\den2000.xml

-info D:\img\den2000.vec -ni

+================================+======+======+======+

|            File Name           | Hits |Missed| False|

+================================+======+======+======+

|                           Total|     0|     0|     0|

+================================+======+======+======+

Number of stages: 12

Number of weak classifiers: 61

Total time: 0.000000

12

        0       0       -1.#IND00       -1.#IND00

        0       0       -1.#IND00       -1.#IND00

        0       0       -1.#IND00       -1.#IND00

        0       0       -1.#IND00       -1.#IND00

.......................................................

        0       0       -1.#IND00       -1.#IND00

префиксом -info D:\img\den2000.vec я даю адрес выходного файла, который был получен createsamples.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте.Заранее извиняюсь,если вопрос уже звучал,я вроде порылся в темах,но аналогичного не нашел.

Хотелось бы уточнить,что является результатом запуска программы haartraining.Если верить данному сайту ,то результатом является xml файл

The haartraing generates a xml file when the process is completely finished (from OpenCV beta5).

У меня же результатом работы является папка с txt файлами под каждый уровень классификатора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я подозреваю что версия OpenCv у Вас старая (OpenCV beta5 (0.9.7)). Последняя версия 2.2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не уверен что проблема именно в этом.Я поставил последнюю версию но эффект тот же.На некоторый момент обучение застопорилось

qZJXIdP.jpg

и xml файл не сгенерировалсяюНе подскажете,в чем на ваш взгляд у меня проблема и в каком направлении копать для ее решения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не уверен что проблема именно в этом.Я поставил последнюю версию но эффект тот же.На некоторый момент обучение застопорилось

qZJXIdP.jpg

и xml файл не сгенерировалсяюНе подскажете,в чем на ваш взгляд у меня проблема и в каком направлении копать для ее решения?

На сайте:

http://note.sonots.com/SciSoftware/haartraining.html#n43ec47f

есть пункт:

Generate a XML File

Там написано:

По окончании обучения должен сформироваться XML файл.

Чтобы получить XML из промежуточных файлов нужно скомпилировать OpenCV/samples/c/convert_cascade.c

и при помощи этой программы сформировать XML файл.

convert_cascade --size="<sample_width>x<sampe_height>" <haartraining_ouput_dir> <ouput_file>
пример: convert_cascade --size="20x20" haarcascade haarcascade.xml
[/code]

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если обучение не закончено, а застопорилось, то xml файл не будет создан. Можно, конечно, его создать, но я не уверена корректно ли будет счить его обученным.

Вообще обучение достаточно долгое и, может, стоит еще подождать или поискать ошибку в данных...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тоже возникла интересная проблема - пытаюсь обучить каскад на лица с поворотами головы. При этом для лиц с левыми поворотами получаются средние результаты, но все же что-то распознается. А вот для лиц с правыми поворотами почти ничего не распознается. В обоих случаях положительных примеров мало, но для лиц с правыми поворотами - больше. Из-за чего такое может происходить? Как бороться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тоже возникла интересная проблема - пытаюсь обучить каскад на лица с поворотами головы. При этом для лиц с левыми поворотами получаются средние результаты, но все же что-то распознается. А вот для лиц с правыми поворотами почти ничего не распознается. В обоих случаях положительных примеров мало, но для лиц с правыми поворотами - больше. Из-за чего такое может происходить? Как бороться?

Может из за ключиков симметрии?

- sym (default),
- nonsym
[/code] Определяет, обладает ли целевой объект вертикальной осевой симметрией (по умолчанию - да), наличие симметрии ускоряет процесс обучения. Например, фронтальные изображения лиц обладают осевой симметрией. Или набора используемых элементов
[code]- mode <BASIC (default) | CORE | ALL>
Определяет набор элементов хаара которые будут использоваться при обучении.
BASIC - это только верхне-правые,
ALL - полные набор верхне правых и повернутых на 45 градусов элементов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В обучении я ставила ключик -nonsym и использовала ALL...

Кстати попробовала отразить картинки и поискать левым классификатором - все равно ничего не находит, наверно надо что-то делать с самими картинками лиц

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Лично у меня обучение завершается само, если с ошибкой, тогда пишет с какой. При большом количестве файлов, обучение может работать ооочень долго и возникает подозрение, что оно виснет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нашла проблему - попробовала изменять параметры -nstages -nsplits, Раньше было 20 и 2, при 3 и 3 находятся лица с правым поворотом, только работает в таком варианте распознаватель гораздо медленнее. Наверно можно еще поиследовать эти параметры и выбрать наилучший вариант...

А есть какие-нибудь правила по выбору этих параметров в зависимости от сложности данных и объема выборки, ну и с учетом желаемой скорости работы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Долго-понятие растяжимое...проблема в том,что обучение похоже зависает на подгрузке позитивных(или возможно негативных) изображений и дальше обучение не идет...В порядке эксперимента продержал обучение в таком состоянии(как изображено на картинке) больше суток-ничего не изменилось.И это при том,что до этого уровня обучение заняло от 4 до 6 часов.В обучении я использовал 9000 позитивных и 5000 негативных примеров.Сталкивался ли кто с аналогичной проблемой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Тут говорят нормальное время обучения до 3-7 суток так что 1 день - это очень мало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В архиве файл утилита с пояснениями и командным файлом для тренировки каскадов. В архиве есть исходники. Нужно только немного поправить и перекомпилировать для использования последней версии opencv. Там присутствуют exe-шнки, но они хотят cv.dll, это очень ранняя версия, я не нашел.

Может быть позже сделаю перевод документации к ней и допишу пояснения.

Взято с: http://inflomatik.com/

PDF - ка к программе: http://inflomatik.com/opencv/2003_05_OpenCV_ObjectDetection_HowTo.pdf

OpenCV_ObjectDetection_Demo.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тут говорят нормальное время обучения до 3-7 суток так что 1 день - это очень мало.

Это мало для полного обучения каскада, но для хотя бы одной итерации обучения одной секции, суток более чем достаточно, как мне кажется.

У меня обучение также стопорилось без каких-либо дополнительных сообщений (и висело так около недели на 3GHz). Я не понял в чём конкретно проблема, обходил увеличением базы изображений, изменением количества секций обучаемого каскада, изменением -minhitrate и -maxfalsealarm. Да, это накладно по времени dry.gif

Сейчас вот подумал, что может помочь уменьшение -weighttrimming. Потому что загрузка процессора в таких случаях если падает, то незначительно - программа продолжает что-то считать. Возможно, изменяя веса слишком сильно, программа перескакивает искомый минимум функции то в одном, то в другом направлении и получается если не бесконечный, то очень продолжительный цикл.

А может кто-нибудь подскажет, что означает EXP. ERR в выводе haartraining? Вот в этом документе даётся такое пояснение:




+----+----+-+---------+---------+---------+---------+

|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|

+----+----+-+---------+---------+---------+---------+

|   1|100%|-|-0.857040| 1.000000| 1.000000| 0.082075|

+----+----+-+---------+---------+---------+---------+

|   2|100%|+|-1.702127| 1.000000| 1.000000| 0.102168|

+----+----+-+---------+---------+---------+---------+

N	The iteration number of feature selection training.

%SMP	The percentage of original samples left.  

F	+ indicates the feature is flipped. Related to -sym (default) option.  

ST.THR	Stage threshold

HR	Hit rate

FA	False alarm rate. FYI: (HR, FA) = (1.0, 1.0) means the detector simply alarms every time for everything.

EXP.ERR 	Expected (misclassification) error.

Если имеется в виду частота ошибок второго рода, то почему это число не совпадает с (1 - HR)? Если это какие-то другие ошибки, то какие? Поискал там и тут, не получается найти еще какие-нибудь пояснения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приветствую всех! Хочу попросить небольшой совет! :)

Требуется находить такое изображение:

i1ep6CQn.jpg

1) В качестве "негативных" изображений использую фото волн, песка в градациях белого с более-менее постоянной яркостью.

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

2) Позитивные генерятся из единственного эталона с параметрами -w 77 -h 25 -maxxangle 0 -maxyangle 0 -maxzangle 0.175.

3) Обучение использует параметры: -nstages 14 -mode ALL -w 77 -h 25 -nonsym -minhitrate 0.9 -maxfalsealarm 0.5 -mem 1024

Соотношение pos:neg = 1:2

Good enough proportion is positive:negative = 1:2
.

Загвоздка в том, что даже при количестве 25 к 50 процесс стопорится не дойдя до 8 этапа. Ошибок не выдаёт. Комп Core2Duo 2.4 + 4 Гб.

Скажите, очень прошу, в чём изъян моего подхода?

post-4538-0-27025900-1314346937_thumb.jp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×