count0
-
Количество публикаций
4 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем count0
-
-
Где-то в коде загрузки, или сохранения модели закрался косячек.
Сохранять сохраняет, грузит, но потом при 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. Просто от балды. Не работает.Кто-нибудь делал загрузку и сохранение модели?
-
Господа, пример с 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;Теперь память не утекает.
-
Топикстартер, а логи кто выкладывать будет?
dmesg, cat /var/log/syslog ?
Что пишет в момент слетания камеры. Пришли бы на ночь поставили, и смотрели по удаленке.
У меня похожая Logitech снимала в 1280 круглосуточно в паре с ZoneMinder на openSUSE 11.4, если память не изменяет. "Ни единого разрыва". Может ядро хреновое, поставьте постарее. В убунтах оно через раз. То сеть отвалится, то ещё какая железяка на ноуте. Хотя вроде 14.04, стабильный релиз... Поэтому без нужды его вообще не обновляю.
Распознавание лиц HMM (Скрытые марковские модели)
в OpenCV
Опубликовано · Report reply
А в новой версии opencv нет реализации hmm?
Нашёл реализации LBPH и SVM, там вообще модель в 3 строки инициализируется, в 2 - сохраняется-загружается. Но HMM показывает самые лучшие результаты.
Гоняю сейчас на выборке в 300 человек, по 3 фото. И модель строится долговато, минуты 3. Ей бы загрузку-сохранение допилить - будет красота.