roboforum.ru

Технический форум по робототехнике.

openCV и с#

openCV и с#

Сообщение solin » 30 ноя 2011, 00:23

Доброго времени суток!
необходимо сделать верификацию лиц, нашел метод на http://www.emgu.com/wiki/index.php/ANN_MLP_(Neural_Network)_in_CSharp
код закопипастил, библиотеки подключил, а компилятор выдает исключение на функции
CvInvoke.cvInitMatHeader(_ptr, _array.GetLength(0), _array.GetLength(1), CvToolbox.GetMatrixDepth(typeof(TDepth)), _dataHandle.AddrOfPinnedObject(), 0x7fffffff);

при создании матрицы т.е. первая функция
помогите что это может быть
solin
 
Сообщения: 6
Зарегистрирован: 30 ноя 2011, 00:15

Re: openCV и с#

Сообщение Holmes » 30 ноя 2011, 11:01

Что значит верификацию?
Нахождение лица на кадре? Или узнавание лица (кто это) если есть в базе лиц?
Может просто код другой подкинуть?
Аватара пользователя
Holmes
 
Сообщения: 230
Зарегистрирован: 08 окт 2010, 14:22
Откуда: Москва
прог. языки: Java, Javascript, C
ФИО: Роман

Re: openCV и с#

Сообщение Angel71 » 30 ноя 2011, 15:52

круть :) у сайта технические проблемы и код не посмотреть, а тс вырос в семье телепатов
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: openCV и с#

Сообщение solin » 01 дек 2011, 18:53

Holmes писал(а):Что значит верификацию?
Нахождение лица на кадре? Или узнавание лица (кто это) если есть в базе лиц?
Может просто код другой подкинуть?

верификация - сравнение с базой
какой код и куда подкинуть?

Добавлено спустя 56 секунд:
Angel71 писал(а):круть :) у сайта технические проблемы и код не посмотреть, а тс вырос в семье телепатов

приношу извинения
в момент публикации и на данный момент сайт работал
solin
 
Сообщения: 6
Зарегистрирован: 30 ноя 2011, 00:15

Re: openCV и с#

Сообщение Holmes » 01 дек 2011, 20:58

Что-то я не очень понял при чем тут метод описанный в линке.
Мне кажется здесь больше подойдет другой метод. Есть реализация на делфи (на C# перевести руки еще не дошли).
Приложил модуль. Модуль принимает лица в формате PNG 120x120 пикселей.

И, кстати, хоть бы написали что за исключение, скрин например дали бы. А то тут действительно не телепаты.
Вложения
facedetect.zip
(2.69 КиБ) Скачиваний: 0
Аватара пользователя
Holmes
 
Сообщения: 230
Зарегистрирован: 08 окт 2010, 14:22
Откуда: Москва
прог. языки: Java, Javascript, C
ФИО: Роман

Re: openCV и с#

Сообщение solin » 01 дек 2011, 23:26

методов много(нейросеть один из *), мне надо самый быстрый( хоть и не самый простой и ресурсоёмкий)

к сожалению комментариев не много, как я понял исползуется cvEigen.
при использовании ~ изображения 320 на 320. сравнение 1 эталон на 80 тестируемых получал неудовлетворительную скорость(секунд 40)
какую производительность обеспечивает ваш модуль, какой процент ложных срабатываний?

по поводу исключения... использую EmguCV, исключение : "cvInvoke Выдал исключение". всё.
что примечательно это происходит на первой же функции.

я допускаю что выбрал не самый подходящий метод, если есть методы лучше, буду рад услышать
solin
 
Сообщения: 6
Зарегистрирован: 30 ноя 2011, 00:15

Re: openCV и с#

Сообщение Holmes » 02 дек 2011, 10:16

По тестированию насколько помню было так:
- поиск лица на кадре (от силы 10 мсек)
- преобразование его области к 100х120 (вообще копейки)
- сравнение с базой из 21 лица (3 человека, по 7 изображений на одного)
- итог - 300-400 мсек на ноутбуке с P7350 и 3GB RAM.

Ложные срабатывания 10-15%, но это без фильтра. Прикрутить фильтр руки не дошли (выбирать, например, наибольшее кол-во совпадений из сравнений 5 кадров). Можно попробовать увеличить разрешение.
Как будет на базе из 80 человек сказать не могу, нужно тестировать (ну и базу хорошую надо составить).
Аватара пользователя
Holmes
 
Сообщения: 230
Зарегистрирован: 08 окт 2010, 14:22
Откуда: Москва
прог. языки: Java, Javascript, C
ФИО: Роман

Re: openCV и с#

Сообщение Angel71 » 02 дек 2011, 11:45

solin писал(а):по поводу исключения... использую EmguCV, исключение : "cvInvoke Выдал исключение". всё.
что примечательно это происходит на первой же функции.

:) у них там с кодом точно всё нормально. если так же информативно задавать вопросы и дальше, то максимум стандартный ответ - вы что-то не так установили и настроили. может не внимательно по мануалу ставили. может не те версии либ используете или нужна другая версия опенцв. может не ту версию дотнета в таргете указали или кпу не тот выставили - эни кпу на х86 откомпилится при запуске в х86, соответственно х64 в х64. а в х64 работает далеко не все ф-и дотнета. и на оборот, не всё в режиме х86 может работать в х64 винде, но это очень редко. может вы не все длл закинули в проект. может из-за прав доступа. может вы в папку проекта закинули либы, а при компиляции студия из-за настроек не копирует в выходную папку. и т.д. :pardon: гадать тут бессмысленно.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: openCV и с#

Сообщение solin » 02 дек 2011, 11:55

Holmes писал(а):По тестированию насколько помню было так:
- поиск лица на кадре (от силы 10 мсек)
- преобразование его области к 100х120 (вообще копейки)
- сравнение с базой из 21 лица (3 человека, по 7 изображений на одного)
- итог - 300-400 мсек на ноутбуке с P7350 и 3GB RAM.

Ложные срабатывания 10-15%, но это без фильтра. Прикрутить фильтр руки не дошли (выбирать, например, наибольшее кол-во совпадений из сравнений 5 кадров). Можно попробовать увеличить разрешение.
Как будет на базе из 80 человек сказать не могу, нужно тестировать (ну и базу хорошую надо составить).


неплохие результаты, надо будет попробывать

Добавлено спустя 1 минуту 17 секунд:
Angel71 писал(а):
solin писал(а):по поводу исключения... использую EmguCV, исключение : "cvInvoke Выдал исключение". всё.
что примечательно это происходит на первой же функции.

:) у них там с кодом точно всё нормально. если так же информативно задавать вопросы и дальше, то максимум стандартный ответ - вы что-то не так установили и настроили. может не внимательно по мануалу ставили. может не те версии либ используете или нужна другая версия опенцв. может не ту версию дотнета в таргете указали или кпу не тот выставили - эни кпу на х86 откомпилится при запуске в х86, соответственно х64 в х64. а в х64 работает далеко не все ф-и дотнета. и на оборот, не всё в режиме х86 может работать в х64 винде, но это очень редко. может вы не все длл закинули в проект. может из-за прав доступа. может вы в папку проекта закинули либы, а при компиляции студия из-за настроек не копирует в выходную папку. и т.д. :pardon: гадать тут бессмысленно.

спасибо, чую, что что-то в начале не сделал
solin
 
Сообщения: 6
Зарегистрирован: 30 ноя 2011, 00:15

Re: openCV и с#

Сообщение Holmes » 02 дек 2011, 12:33

2solin, вы бы код свой показали, а то с чем разбираться-то?
Или полностью код дайте я вечером поковыряю.
И, кстати, это первый опыт с Emgu или уже раньше работали?

Если нужно я выложу свой проект, там есть Emgu, поиск лица и контуров. Плюс там же работа с камерой через MJPEGStreamer от AForge (ибо камера подключена к роутеру, это из темы про DIR-320).
Аватара пользователя
Holmes
 
Сообщения: 230
Зарегистрирован: 08 окт 2010, 14:22
Откуда: Москва
прог. языки: Java, Javascript, C
ФИО: Роман

Re: openCV и с#

Сообщение solin » 15 дек 2011, 18:59

Holmes писал(а):2solin, вы бы код свой показали, а то с чем разбираться-то?
Или полностью код дайте я вечером поковыряю.
И, кстати, это первый опыт с Emgu или уже раньше работали?

Если нужно я выложу свой проект, там есть Emgu, поиск лица и контуров. Плюс там же работа с камерой через MJPEGStreamer от AForge (ибо камера подключена к роутеру, это из темы про DIR-320).


с emgu первый раз работаю, лица умею определять имхо везде это понятно изложено
требуется найти или реализовать алгоритм для быстрой сверки лиц с большим(!) количеством эталонов
eigen пробовал, возможно параметры неподходящие, но скорость не порадовала.
посоветуйте в сторону чего копать
solin
 
Сообщения: 6
Зарегистрирован: 30 ноя 2011, 00:15

Re: openCV и с#

Сообщение Angel71 » 15 дек 2011, 22:22

это "сверки лиц с большим(!) количеством эталонов" сколько, если не секрет?
если вы делаете поиск по всем битмапам, то просто тратите много времени в пустую. при сотнях или тысячах изображений уже нехилые объёмы данных выходят, оптимизируйте поиск. классифицируйте, чтобы отсеивать часть изображений. используйте хэш/сигнатуру/отпечаток изображения/... (называйте как хотите) для ускорения поиска. т.е. берёте изображение и создаёте небольшой по объёму набор данных, удобный для быстрого поиска. можно точно так же, как и с отпечатками пальцев использовать вейвлеты. беглый поиск в сети и первая кандидатура - габоровские вейвлеты. в opencv есть некий фильтр габора. предпологаю, что это скорей всего именно то. :oops: в общем я вам всего-лишь идею подсказываю, а там уж сами. и да, как вариант сначала быстрым алгоритмом выбрать небольшую часть изображений (очень удобно будет ввести пороговое число "сходство изображения"), а потом уже можно анализировать изображение более тщательно, хоть десятками тяжеловесных алгоритмов.

Добавлено спустя 14 минут 53 секунды:
незнаю насколько тут информация полезная по сегоднишним меркам, но как вариант http://iai.dn.ua/public/JournalAI_2003_4/Razdel3/07_Murygin.pdf
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: openCV и с#

Сообщение solin » 16 дек 2011, 03:54

спасибо, статью прочту.
много это прибл 1 млн, как бы страшно это не звучало
solin
 
Сообщения: 6
Зарегистрирован: 30 ноя 2011, 00:15

Re: openCV и с#

Сообщение Angel71 » 16 дек 2011, 06:47

не то что бы страшно, приходилось обрабатывать и намного больше - подогнать размер, пережать в другой формат, сделать превью различных размеров, найти похожие, чтоб базу попусту не раздувать. хз, для базы лиц это наверно и очень много. в общем любые телодвижения даже с таким количеством картинок хоть пусть они будут небольшого размера (к примеру 320*240) для кпу это тяжко. :) можно сходить нервно покурить в сторонку или заняться другими делами.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: openCV и с#

Сообщение Holmes » 16 дек 2011, 11:56

solin писал(а):спасибо, статью прочту.
много это прибл 1 млн, как бы страшно это не звучало


Я бы посоветовал обратиться к EDV (http://roboforum.ru/member3938/), может он чем поможет с такими объемами.
Аватара пользователя
Holmes
 
Сообщения: 230
Зарегистрирован: 08 окт 2010, 14:22
Откуда: Москва
прог. языки: Java, Javascript, C
ФИО: Роман


Вернуться в Компьютерное зрение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5