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

count0

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

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

  • Посещение

Репутация

0 Новичек

О count0

  • Звание
    Новичок
  1. А в новой версии opencv нет реализации hmm? Нашёл реализации LBPH и SVM, там вообще модель в 3 строки инициализируется, в 2 - сохраняется-загружается. Но HMM показывает самые лучшие результаты. Гоняю сейчас на выборке в 300 человек, по 3 фото. И модель строится долговато, минуты 3. Ей бы загрузку-сохранение допилить - будет красота.
  2. Где-то в коде загрузки, или сохранения модели закрался косячек. Сохранять сохраняет, грузит, но потом при ComputeLikeHood вываливается в segfault после 1го сравнения. Причем значение выдает правильное, как при обычном обучении. Сообщение об ошибке в opencv_legacy, а в какой функции - не говорит. Куда копать - пока не знаю. Опытным путем установлено, что ошибка возникает тут: cvEstimateObsProb( info, &tmplEhmm ); // Here!! Однако, если эту строку закомментировать, она всё равно вывалится. Значит, cvEViterbi( info, &tmplEhmm ); работает некорректно. Что-то в загруженной модели не так. Накосячить я мог только в одном месте - размере vecSize, который передается HMM_Save при сохранении. Пробовал значения vecSizeM = NO_DCT_COEFF_X * NO_DCT_COEFF_Y - 1; Без -1. Просто от балды. Не работает. Кто-нибудь делал загрузку и сохранение модели?
  3. Господа, пример с HMM грешит утечками, как чиновник взятками. Часть вроде поправил, сейчас бьюсь с этим куском: // Рассчитываем, сколько нужно произвести ДКП (DCT) noObs.width = ( img->width - dctSize.width + stepSize.width ) / stepSize.width; noObs.height = ( img->height - dctSize.height + stepSize.height ) / stepSize.height; info = cvCreateObsInfo( noObs, obsVecLen ); <<--- Большая, жирная утечка. По мегабайту-двум за 1 выполнение. assert( info != 0 ); И далее: if( SUPPRESS_INTESITY ) { float *observations = new float[ noObs.height * noObs.width * ( obsVecLen + 1 ) ]; cvImgToObs_DCT( img, observations, dctSize, noDCTCoeff, stepSize ); ExtractDCT( observations, info->obs, noObs.height * noObs.width, obsVecLen ); <<--- Маленькая утечка, по 0.5 Мб за проход. if ( observations ) { delete( observations); } } else { cvImgToObs_DCT( img, info->obs, dctSize, noDCTCoeff, stepSize ); } cvEstimateObsProb( info, &tmplEhmm ); Добавил в конце функции распознавания (после return) cvReleaseObsInfo(&info); delete info; Не помогло особо. Есть мысли? Версия опенцв 1я вроде. ----------------------- P. S. Вроде нашёл как правильно память чистить. В конце Compute...: float temp; temp=cvEViterbi( info, &tmplEhmm ); cvReleaseObsInfo(&info); delete info; return temp; Теперь память не утекает.
  4. Топикстартер, а логи кто выкладывать будет? dmesg, cat /var/log/syslog ? Что пишет в момент слетания камеры. Пришли бы на ночь поставили, и смотрели по удаленке. У меня похожая Logitech снимала в 1280 круглосуточно в паре с ZoneMinder на openSUSE 11.4, если память не изменяет. "Ни единого разрыва". Может ядро хреновое, поставьте постарее. В убунтах оно через раз. То сеть отвалится, то ещё какая железяка на ноуте. Хотя вроде 14.04, стабильный релиз... Поэтому без нужды его вообще не обновляю.
×