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

Dreiko

Пользователи
  • Количество публикаций

    10
  • Зарегистрирован

  • Посещение

Репутация

1 Новичек

О Dreiko

  • Звание
    Бывалый
  1. CUDA для Хаара

    У меня теперь тоже заработало. Проблема была в том, что прога не переваривала большие изображения, на маленьких (примерно 600х500) все заработало,хотя и не идеально. На каскадах с параметром обучения split=3 уровень распознавания на распараллеленном примере падает примерно в 2 раза относительно нераспараллеленного.
  2. CUDA для Хаара

    Собственно хотелось бы узнать, тестировал ли кто распараллеленное на Cuda использование каскада классификаторов? У меня, например, возникла следующая трабла: решил побыстрому протестировать уже обученные каскады на предоставляемом с исходниками сэмпле( там достаточно передать в параметрах каскад и картинку или видео).В итоге 3 из 4 каскадов при попытки запуска вылетали со следующей ошибкой: CV Assertion Failed: NcvStat=27, file=.../samples/gpu/cascadeclassifier_nvidia_api.cpp, line=126 NCV Assertion Failed: Error in counting memory pass, file=.../samples/gpu/cascadeclassifier_nvidia_api.cpp, line=312 Заработал только один каскад, да и то фигово...результативность распознавания упала с почти 100% до 3-7%. Печалит даже не столько то, что каскады не подгружаются,а то что результативность запустившихся падает в разы.Вот мне и стало интересно,у всех ли так "хорошо" параллелится?=) И еще,я так помнимаю что на CUDA реализована только работа с каскадом, а обучение нет?
  3. Сори, выходные были напряженные, да и понедельник тоже тяжелый, только появилась свободная минута. Как перейти по left_val и right_val я сам еще не разобрался.Остается надеяться, что кто-нибудь еще подскажет, ну или докуривать самому =) Примитив, описывающийся тремя rects я постарался изобразить на картинке ниже (эх не вышел из меня Малевич =) ) Примера с ним в своих каскадах я не нашел, но описывается в коде он так: haarFeature = cvHaarFeature( "haar_x2_y2", x , y, dx*2, dy*2, -1, x , y , dx , dy, +2, x+dx, y+dy, dx , dy, +2 ); Т.е. в строчке x, y, dx*2, dy*2, -1 мы описываем большой белый квадрат размером с весь примитив прибавляем его сумму,умноженную на (-1) (то бишь вычитаем) Во второй строчке x, y, dx, dy, +2 считаем верхний левый черный квадрат,и прибавляем его сумму, умноженную на 2(1 раз прибавляем за сам квадрат,а второй раз для того,чтобы компенсировать то,что было вычтено при вычитании суммы большого белого квадрата) 3 строка аналогична второй,только для нижнего правого черного квадрата.
  4. Отвечу по порядку про все что сам понял, а потом в ответ тоже пару вопросов задам =) 1) rects(два или три) описывают одну из feature(хз как тут по русски это называют, я зову примитивами для простоты) каждая строчка строится по принципу <координата верхней левой точки прямоугольника по х> <координата верхней левой точки прямоугольника по y> <длина по x> <длина по y> <множитель,на который умножается значение,полученное из данного квадрата> на счет последнего пункта до конца не уверен, но крайне похоже,что так оно и есть. Сами же примитивы объявляются в cvhaartraining.cpp в icvCreateIntHaarFeatures. 2)количество rects в описании зависит от типа примитива:для описания "горизонтального" или "вертикального" (которые делят исследуемую область на 2 равные части) достаточно двух, а для описания "диагонального" примитива необходимо 3 rect'a. (если объяснил не совсем понятно, могу расписать чуть подробнее с рисунком,сейчас просто не совсем удобно это делать) 3)флаг tilted, как видно из его название, отвечает за "повернутость" примитива Просто при обучении мы используем помимо обычных примитивов еще и повернутые на 45 градусов, и этот флаг как раз и отвечает за индикацию "повернутости" примитива в каскаде. 4)путешествие по файлу, по идее, заканчивает, когда мы пробегаем всеми уровнями каскада по всему изображению. А теперь 2 вопроса от меня: 1)как по твоему происходит подсчет значения, сравниваемого с порогом? 2)что ты имел ввиду,когда спрашивал "где искать в файле узел -7.6984202861785889e-01, если это уникальное значение" и зачем его искать?
  5. Спасибо,частично разобрался...Остальное буду сам докуривать=)
  6. Всем привет! Интересует такой вопрос: есть ли где подробное описание структуры каскада классификаторов, который генерируется в xml файл? Т.е. где бы подробно расписывалось, за что отвечают такие поля, как <feature,<rects>, <tilted, <threshold>, <left_node>/<right_node>, <right_val>/<left_val> и по какому принципу они построены, а так же по какому принципу строятся деревья из features. Если такой статьи не существует, буду очень благодарен, если вкратце объясните. *небольшой пример каскада для наглядности <opencv_storage> <k7000 type_id="opencv-haar-classifier"> <size>20 20</size> <stages> <_> <!-- stage 0 --> <trees> <_> <!-- tree 0 --> <_> <!-- root node --> <feature> <rects> <_> 15 1 5 4 -1.</_> <_> 15 1 5 2 2.</_> </rects> <tilted>1</tilted> </feature> <threshold>3.4818891435861588e-02</threshold> <left_node>1</left_node> <right_val>8.3950102329254150e-01</right_val> </_> <_> <!-- node 1 --> <feature> <rects> <_> 1 0 4 1 -1.</_> <_> 1 0 2 1 2.</_> </rects> <tilted>1</tilted> </feature> <threshold>-2.5486640632152557e-02</threshold> <left_val>8.3647841215133667e-01</left_val> <right_val>-7.6984202861785889e-01</right_val> </_> </_>
  7. Тренировка каскадов Хаара

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

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

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

    Здравствуйте.Заранее извиняюсь,если вопрос уже звучал,я вроде порылся в темах,но аналогичного не нашел. Хотелось бы уточнить,что является результатом запуска программы haartraining.Если верить данному сайту ,то результатом является xml файл У меня же результатом работы является папка с txt файлами под каждый уровень классификатора.
×