Smorodov 578 Report post Posted February 26, 2011 Думаю это должно помочь: http://courses.graphicon.ru/main/vision/2010/lectures Share this post Link to post Share on other sites
Storm 0 Report post Posted February 26, 2011 Спасибо. Еще такой вопрос: возможна ли такая ситуация, что обучение каскада утилитой 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%, т.е. программа видимо что-то делает. Share this post Link to post Share on other sites
Wildcat 2 Report post Posted March 11, 2011 Пытаюсь обучить каскад хаара с помощью данной утилиты. В качестве исходных данных используется набор картинок с выделенными пешеходами (вручную). По полученным данных создаю 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 - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства. Из-за чего такая может возникать? как исправить? Заранее благодрана Share this post Link to post Share on other sites
Smorodov 578 Report post Posted March 11, 2011 Может быть из-за прав доступа к файлам? Запущено от имени админа? Share this post Link to post Share on other sites
Wildcat 2 Report post Posted March 11, 2011 Да, пользователь под которым запускается утилита имеет права администратора. И падение происходит не сразу как к файлам обращается, а уже в процессе обучения. Вот что выдает программа в окне: 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| +----+----+-+---------+---------+---------+---------+ Share this post Link to post Share on other sites
Smorodov 578 Report post Posted March 11, 2011 Сложно сказать, что ему не нравится. Попробуйте все по шагам как здесь написано сделать: http://note.sonots.com/SciSoftware/haartraining.html Вроде у всех получалось по этому руководству. Share this post Link to post Share on other sites
Headmast 0 Report post Posted March 14, 2011 Min hit rate: 0.995000 Max false alarm rate: 0.5000 чует моё сердце проблема в этих строчках. Можешь забить на падение и сделать каскад из 8 стадий. Думаю результат и так будет приемлемым. Share this post Link to post Share on other sites
Wildcat 2 Report post Posted March 15, 2011 Благодарю за советы. Разобралась в чем была проблема. Я по наивности посчитала, что при создании примеров и обучении если не задать размер, то будет задан какой-то по умолчанию, но в этом была проблема. Когда явно написала размер каскад обучился. Share this post Link to post Share on other sites
LoGin 0 Report post Posted March 23, 2011 Есть рабочий каскад. Пытаюсь оценить его работоспособность в процентном соотношении. Не могу разобраться с синтаксисом утилиты 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. Share this post Link to post Share on other sites
Dreiko 1 Report post Posted March 31, 2011 Здравствуйте.Заранее извиняюсь,если вопрос уже звучал,я вроде порылся в темах,но аналогичного не нашел. Хотелось бы уточнить,что является результатом запуска программы haartraining.Если верить данному сайту ,то результатом является xml файл The haartraing generates a xml file when the process is completely finished (from OpenCV beta5). У меня же результатом работы является папка с txt файлами под каждый уровень классификатора. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted March 31, 2011 Я подозреваю что версия OpenCv у Вас старая (OpenCV beta5 (0.9.7)). Последняя версия 2.2 Share this post Link to post Share on other sites
Dreiko 1 Report post Posted April 3, 2011 Не уверен что проблема именно в этом.Я поставил последнюю версию но эффект тот же.На некоторый момент обучение застопорилось и xml файл не сгенерировалсяюНе подскажете,в чем на ваш взгляд у меня проблема и в каком направлении копать для ее решения? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 3, 2011 Не уверен что проблема именно в этом.Я поставил последнюю версию но эффект тот же.На некоторый момент обучение застопорилось и 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] Share this post Link to post Share on other sites
Wildcat 2 Report post Posted April 7, 2011 Если обучение не закончено, а застопорилось, то xml файл не будет создан. Можно, конечно, его создать, но я не уверена корректно ли будет счить его обученным. Вообще обучение достаточно долгое и, может, стоит еще подождать или поискать ошибку в данных... Share this post Link to post Share on other sites
Wildcat 2 Report post Posted April 7, 2011 Тоже возникла интересная проблема - пытаюсь обучить каскад на лица с поворотами головы. При этом для лиц с левыми поворотами получаются средние результаты, но все же что-то распознается. А вот для лиц с правыми поворотами почти ничего не распознается. В обоих случаях положительных примеров мало, но для лиц с правыми поворотами - больше. Из-за чего такое может происходить? Как бороться? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 7, 2011 Тоже возникла интересная проблема - пытаюсь обучить каскад на лица с поворотами головы. При этом для лиц с левыми поворотами получаются средние результаты, но все же что-то распознается. А вот для лиц с правыми поворотами почти ничего не распознается. В обоих случаях положительных примеров мало, но для лиц с правыми поворотами - больше. Из-за чего такое может происходить? Как бороться? Может из за ключиков симметрии? - sym (default), - nonsym [/code] Определяет, обладает ли целевой объект вертикальной осевой симметрией (по умолчанию - да), наличие симметрии ускоряет процесс обучения. Например, фронтальные изображения лиц обладают осевой симметрией. Или набора используемых элементов [code]- mode <BASIC (default) | CORE | ALL> Определяет набор элементов хаара которые будут использоваться при обучении. BASIC - это только верхне-правые, ALL - полные набор верхне правых и повернутых на 45 градусов элементов. Share this post Link to post Share on other sites
Dreiko 1 Report post Posted April 7, 2011 В том то и проблема,что этим у меня заканчиваются все попытки обучения (которых уже было довольно много)...причем на разных версиях и с разными обучающими выборками...я просто думал что это нормально и проверял результаты с помощью performance,а вот когда начал писать свою программу-задумался.Просто всегда когда она вот так зависает,в предыдущем классификаторе HR и FA удовлетворяют требованиям,заданным при обучении,и я думал что программа таким образом сама останавливает обучение(в каком-то мануале читал про такую возможность).Собственно тогда хотелось бы уточнить,как у вас выглядит завершение обучения(те программа так же как у меня застопоривается или же закрывается и генерирует xml файл) и завершается ли оно у вас само раньше,чем достигнет заданного количества уровней классификатора. Share this post Link to post Share on other sites
Wildcat 2 Report post Posted April 8, 2011 В обучении я ставила ключик -nonsym и использовала ALL... Кстати попробовала отразить картинки и поискать левым классификатором - все равно ничего не находит, наверно надо что-то делать с самими картинками лиц Share this post Link to post Share on other sites
Headmast 0 Report post Posted April 8, 2011 Лично у меня обучение завершается само, если с ошибкой, тогда пишет с какой. При большом количестве файлов, обучение может работать ооочень долго и возникает подозрение, что оно виснет. Share this post Link to post Share on other sites
Wildcat 2 Report post Posted April 8, 2011 Нашла проблему - попробовала изменять параметры -nstages -nsplits, Раньше было 20 и 2, при 3 и 3 находятся лица с правым поворотом, только работает в таком варианте распознаватель гораздо медленнее. Наверно можно еще поиследовать эти параметры и выбрать наилучший вариант... А есть какие-нибудь правила по выбору этих параметров в зависимости от сложности данных и объема выборки, ну и с учетом желаемой скорости работы? Share this post Link to post Share on other sites
Dreiko 1 Report post Posted April 13, 2011 Долго-понятие растяжимое...проблема в том,что обучение похоже зависает на подгрузке позитивных(или возможно негативных) изображений и дальше обучение не идет...В порядке эксперимента продержал обучение в таком состоянии(как изображено на картинке) больше суток-ничего не изменилось.И это при том,что до этого уровня обучение заняло от 4 до 6 часов.В обучении я использовал 9000 позитивных и 5000 негативных примеров.Сталкивался ли кто с аналогичной проблемой? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 14, 2011 Тут говорят нормальное время обучения до 3-7 суток так что 1 день - это очень мало. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 20, 2011 В архиве файл утилита с пояснениями и командным файлом для тренировки каскадов. В архиве есть исходники. Нужно только немного поправить и перекомпилировать для использования последней версии opencv. Там присутствуют exe-шнки, но они хотят cv.dll, это очень ранняя версия, я не нашел. Может быть позже сделаю перевод документации к ней и допишу пояснения. Взято с: http://inflomatik.com/ PDF - ка к программе: http://inflomatik.com/opencv/2003_05_OpenCV_ObjectDetection_HowTo.pdfOpenCV_ObjectDetection_Demo.rar Share this post Link to post Share on other sites
Storm 0 Report post Posted May 2, 2011 Тут говорят нормальное время обучения до 3-7 суток так что 1 день - это очень мало. Это мало для полного обучения каскада, но для хотя бы одной итерации обучения одной секции, суток более чем достаточно, как мне кажется. У меня обучение также стопорилось без каких-либо дополнительных сообщений (и висело так около недели на 3GHz). Я не понял в чём конкретно проблема, обходил увеличением базы изображений, изменением количества секций обучаемого каскада, изменением -minhitrate и -maxfalsealarm. Да, это накладно по времени Сейчас вот подумал, что может помочь уменьшение -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)? Если это какие-то другие ошибки, то какие? Поискал там и тут, не получается найти еще какие-нибудь пояснения. Share this post Link to post Share on other sites
Sht1rlitz 0 Report post Posted August 26, 2011 Приветствую всех! Хочу попросить небольшой совет! Требуется находить такое изображение: 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 Гб. Скажите, очень прошу, в чём изъян моего подхода? Share this post Link to post Share on other sites