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

Storm

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

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

  • Посещение

Репутация

0 Новичек

О Storm

  • Звание
    Бывалый

Contact Methods

  • ICQ
    243650138

Profile Information

  • Пол
    Мужской
  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)? Если это какие-то другие ошибки, то какие? Поискал там и тут, не получается найти еще какие-нибудь пояснения.
  2. Собственно первый вопрос: какой метод лучше подойдет для распознавания в кадре людей (в полный рост, с разных ракурсов)? Классификатор Хаара, HOG, или что-то еще?
  3. Тренировка каскадов Хаара

    Спасибо. Еще такой вопрос: возможна ли такая ситуация, что обучение каскада утилитой 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%, т.е. программа видимо что-то делает.
  4. Тренировка каскадов Хаара

    Господа, никто не поделится ссылкой на материал, где можно было бы поподробнее ознакомится с алгоритмом самого обучения каскада? Хочу понять что делает haartrainig с картинками, которые мы ей даем. То, что до сих пор встречалось описывает больше как подготовить изображения, какие указать параметры командной строки, а хотелось бы узнать как само обучение происходит. Как я понимаю, это похоже на обучение нейронной сети?
  5. OpenCV и видеофайлы

    Поставил пакет libffmpeg-devel, cmake после этого показывал, что нашел ffmpeg (там единицы стояли, где раньше были нули). Но make не мог собрать libhighgui.so, жаловался, что у /lib/libbz2.so.1 неправильный формат файла и его не удается прочитать. После этого я решил еще раз поискать уже собранный пакет здесь (почему-то был уверен, что уже искал, но ничего не нашел). На этот раз нашлось достаточно много, поставил opencv-devel. В целом вроде заработало. lkdemo теперь может получать видео и с камеры и из файла, но в терминал валятся чьи-то сообщения при чтении файла вот такие: и повторяются, пока программа работает. При работе с камерой вот такие (выводятся в начале работы один раз):
  6. OpenCV и видеофайлы

    Хорошо, я отпишу, если добьюсь чего-нибудь.
  7. OpenCV и видеофайлы

    А не подскажете где можно посмотреть более подробную и актуальную информацию о том как это сделать? Вот здесь, например, вопрос поднимается, но в той версии OCV используется конфигурационный скрипт. Ни в 2.1, ни в 2.2 мне не удалось его найти, а в руководстве по установке соответствующий параметр cmake не упоминается.
  8. OpenCV и видеофайлы

    Наверняка у кого-нибудь есть опыт использования OpenCV под Linux? Вопрос вот в чем: После установки (с ней вроде все нормально) компилирую пример lkdemo. Картинка с камеры отображается, точки находятся. Исходник предусматривает возможность получать видео не только с камеры, но и из файла, для этого надо имя файла передать аргументом командной строки. Здесь и возникает проблема: Проявляется при OpenCV 2.1 и 2.2. Ранее под Windows с OCV 2.1 чтение из того же файла работало. Формат видео - MJPG. Наткнулся вот на эту страницу. Правильно ли я понял, что проблема связана с ffmpeg? Пакет ffmpeg уже был установлен в системе на момент установки OpenCV. Из параметров при установке OCV указывал только WITH_QT=ON. Может быть еще какие-нибудь пакеты нужны? Дистрибутив openSUSE 11.2.
  9. Да, действительно, fps и size были равны 0. Но программу из первого поста мне так и не удалось заставить работать Однако работает немного другая: // // Программа получает видео с камеры и записывает в avi файл // #include "stdafx.h" #include "cv.h" #include "highgui.h" #include "stdio.h" int main(int argc, char* argv[]) { cvNamedWindow("capture"); // получаем любую подключённую камеру CvCapture *capture = cvCreateCameraCapture(CV_CAP_ANY); assert(capture!=0); const char *filename = "capture.avi"; // частота кадров double fps = 10; // размер картинки CvSize size = cvSize(640, 480); CvVideoWriter *writer = cvCreateVideoWriter(filename, CV_FOURCC('X','V','I','D'), fps, size, 1); assert(writer!=0); IplImage *frame = 0; //int abc = 1; //bool er2 = true; //char ame3 = 'c'; //IplImage *frame1 = 0; bool flag = true; while(flag) { // получаем кадр frame = cvQueryFrame( capture ); cvFlip(frame,frame,0); // сохраняем в файл cvWriteFrame(writer, frame); char c = cvWaitKey(33); switch (c) { case 27: // если нажата ESC - выходим flag = false; break; default: break; } // показываем cvShowImage("capture", frame); } // освобождаем ресурсы cvReleaseCapture( &capture ); cvReleaseVideoWriter(&writer); cvDestroyWindow("capture"); return 0; } Не могу понять: почему если раскомментировать любую из строк //int abc = 1; //bool er2 = true; //char ame3 = 'c'; //IplImage *frame1 = 0; программа начинает падать. Причем если закомментировать cvWriteFrame(writer, frame); исключения уже не появляются. Как объявление переменных, которые нигде потом и не используются, может приводить к таким последствиям?
  10. Здравствуйте. В процессе изучения OpenCV попробовал запустить программу, которая читает один файл и пишет в другой. Её код: #include "stdafx.h" #include "highgui.h" #include "cv.h" int main(int argc, char** argv[]) { CvCapture* capture = cvCreateFileCapture("f.avi"); if( !capture ) { return -1; } IplImage* bgr_frame = cvQueryFrame( capture ); double fps = cvGetCaptureProperty( capture, CV_CAP_PROP_FPS); CvSize size = cvSize((int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT)); CvVideoWriter* writer = cvCreateVideoWriter("1.avi", CV_FOURCC('M','J','P','G'), fps, size); IplImage* logpolar_frame = cvCreateImage( size, IPL_DEPTH_8U, 3); while( (bgr_frame=cvQueryFrame(capture)) != NULL ) { cvLogPolar( bgr_frame, logpolar_frame, cvPoint2D32f(bgr_frame->width/2, bgr_frame->height/2), 40, CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS ); cvWriteFrame( writer, logpolar_frame ); } cvReleaseVideoWriter( &writer ); cvReleaseImage( &logpolar_frame ); cvReleaseCapture( &capture ); return(0); } Компилируется без ошибок. Но на стадии выполнения на инструкции cvWriteFrame( writer, logpolar_frame ) появляется исключение Как по-вашему в чем может быть дело? Кодеки в системе установлены, сомневаюсь, что причина в них, т.к. пример с простым выводом видео в окно работает нормально. Вызов cvLogPolar тоже исключал, cvWriteFrame( writer, bgr_frame ) в этом случае приводит точно к тому же исключению.
×