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

Распознавание лиц

Recommended Posts

peopledetect из OpenCV использует дескрипторы HOG с классификатором SVM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, это я знаю, жалко что до сих мучаюсь не могу научить их ни на что кроме людей)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А есть ли ещё примеры слежения за объектом в примерах или в инете, кроме lkdemo?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хорошая статья, только с адресом проблема. Я нашел здесь.

Еще ссылку подкину: http://www.cs.washington.edu/homes/kemelmi/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хаар долго работает. Разрешение если только уменьшать... Что плохо скажется на качестве. Первые тем 10 в поиске обыскал =\

Upd: Скорость работы распознавание Хаара будет зависеть только от ЦП? Если на i7 запустить такую штуку, то за сколько она сможет найти лицо? Ориентировочно... (У меня проц старенький уже - 4.9 винда оценивает, и при сжатии 1.1 ему требуется 2 секунды)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Виола-Джонес должен быстро искать. Примерно так высота изображения умножить на ширину умножить на 2 умножить на время обработки одного пикселя думаю не должно привишать ~100-150 тактов вот это всё поделить на частоту процессора. Если код раскидать по ядрам, то ещё поделить на число ядер.

У меня для одного ядра с частотой 2.5 ГГц получилось примерно 0.1-0.15 секунд. А да если там качество регулируется, то время пойдёт в верх.

Алгоритм на видео карту хорошо ложится.

Ускорить можно если обрабатывать не всю картинку, а сделать детектор движения и использовать для поиска только изменившуюся часть изображения.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно предварительно по цвету найти области. И проверить их, а не все изображение.

А GPU - шный вариант Хаара не пробовали?

И еще, там есть опция FIND_BIGGEST_OBJECT, находит один самый большой объект. Существенно ускоряет процесс.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно предварительно по цвету найти области. И проверить их, а не все изображение.

А GPU - шный вариант Хаара не пробовали?

И еще, там есть опция FIND_BIGGEST_OBJECT, находит один самый большой объект. Существенно ускоряет процесс.

А можно ссылко на эту функцию? И FIND_BIGGEST_OBJECT надо в flags писать?

p.s. Искал на willowgarage и itseez =\

Pavia00, а Вы алгоритм сами писали? Можно ссылку на материал, которым руководствовались?

Upd:

FIND_BIGGEST_OBJECT кардинально меняет ситуацию) Если количество лиц на кадре не меняется (вроде так), то на расчёты требуется чуть ли не в 20 раз меньше времени. За 63мс вместо 1200мс) Еще раз спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем добрый вечер!

Изучая класс cv::CascadeClassifier обнаружил что метод cv::CascadeClassifier::detectMultiScale включает в себя 2 детектора,

1й реализуется через функцию cvHaarDetectObjectsForROC

2й реализован в этом классе (cv::CascadeClassifier)

Когда я загружаю обученные модели, например haarcascade_frontalface_default.xml, обработку ведет старый детектор, то есть вызывается функция cvHaarDetectObjectsForROC и используется контейнер CvHaarClassifierCascade из прошлых версий OpenCV; внутри cv::CascadeClassifier::detectMultiScale есть даже специальное условие "if( isOldFormatCascade() )". Также я подозреваю что в результате обучения классификатора теми exeшниками что идут в комплекте с OpenCV получится каскад в таком же формате (хотя не проверял), и соответственно обработка будет производиться опять же через функцию cvHaarDetectObjectsForROC.

Так вот вопросы:

1. Как можно конвертировать старые каскады, в новый формат чтобы протестировать новый код?

2. Какими утилитами можно обучить новые каскады?

3. Может быть у кого то есть новые каскады?

PS версия OpenCV - 2.3.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На данный момент поддерживается 2 типа классификаторов (Хаара и LBP). LBP работает быстрее. Вот код для тестирования:

facedetect.h


#ifndef FACEDETECT_H

#define FACEDETECT_H

#include <cv.h>


/*\brief Providing static function for testing face detection algoritms

 */

class FaceDetect {

public:

    enum

    {

    HAAR=0,

    LBP=1

    } featureTypes;


    static cv::vector<cv::Rect> detectFaces(cv::Mat input, int featureType=HAAR);

};

#endif /*FACEDETECT_H */

facedetect.cpp

#include  <stdio.h>

#include "FaceDetect.h"


using namespace cv;


/**

 * \brief Function for detecting faces

 * @param input_img - Matrix of the type CV_8U containing an image where faces are detected.

 * @param feature_type=HAAR - feature type (HAAR or LBP for now). 

 * @return - Vector of rectangles where each rectangle contains the detected object.

 * 

 * \note Use LBP Classifier witch is much faster than HAAR

 * 

 */

vector<Rect>FaceDetect::detectFaces(Mat input, int featureType)

{

    CascadeClassifier cascad;

    if(feature_type==LBP)

        cascad.load("storage/lbpcascade_frontalface.xml");

    else

        cascad.load("storage/haarcascade_frontalface_alt2.xml");


   vector<Rect> result;

   double t = (double)getTickCount();

   cascad.detectMultiScale(input,result, 1.2, 3, CV_HAAR_DO_CANNY_PRUNING|CV_HAAR_SCALE_IMAGE|

 CV_HAAR_DO_ROUGH_SEARCH, Size(40,40)); //you can play with options here

t = ((double)getTickCount() - t)/getTickFrequency();

printf("Speed = %f \n Accuracy = %d", t, result.size());

   return result;

}

main.cpp

#include "cv.h"

#include "highgui.h"

#include "FaceDetect.h"


using namespace cv;


int main(int, char**)

{

    Mat img;

    img = imread("photo_with_many_faces.jpg", 1);


    vector<Rect> result1 =FaceDetect::detectFaces(img,  FaceDetect::HAAR);

    vector<Rect> result2 = FaceDetect::detectFaces(img,  FaceDetect::LBP);


    waitKey(0);

    return 0;

}

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте!Я новичок.Мне нужно получить из нескольких фотографий одну с изображением усредненного лица. Подскажите,как это сделать?Может алгоритм какой-нибудь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Раздумываю, стоит ли брать на диплом тему по распознаванию лиц? Допустим есть не большая БД (около 20 лиц), необходимо из видеопотока или статического изображения идентифицировать личность. На сколько реально и сложно это реализовать?

Первое, что приходит в голову это выделить области (глаза, нос, рот) и измерить их относительное расстояние друг от друга. Достаточные признаки для идентификации личности?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

LosFrom2D, есть ГОСТ скопированный с ISO. Идентификация по расстоянию можно только при условии что расстояние между глазами не менее 180 пикселей, Менее можно но качество будет падать.

3 параметра нос глаза рот. Сколько градаций вы получите? Допустим максимум 4 минимум 2. От 2^3=8 до 4^3=64. Таким методом вы сможете отличить очень малое число людей, на 20 может не хватить. Для увеличения качества системы используют другие параметры. Цвет волос, цвет глаз, форму головы итд.

http://protect.gost.ru/v.aspx?control=8&baseC=-1&page=0&month=-1&year=-1&search=&RegNum=1&DocOnPageCount=15&id=120745&pageK=7B46BC9C-241A-48FE-BDF1-06DB1ECBA18C

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

LosFrom2D, есть ГОСТ скопированный с ISO. Идентификация по расстоянию можно только при условии что расстояние между глазами не менее 180 пикселей, Менее можно но качество будет падать.

3 параметра нос глаза рот. Сколько градаций вы получите? Допустим максимум 4 минимум 2. От 2^3=8 до 4^3=64. Таким методом вы сможете отличить очень малое число людей, на 20 может не хватить. Для увеличения качества системы используют другие параметры. Цвет волос, цвет глаз, форму головы итд.

http://protect.gost.ru/v.aspx?control=8&baseC=-1&page=0&month=-1&year=-1&search=&RegNum=1&DocOnPageCount=15&id=120745&pageK=7B46BC9C-241A-48FE-BDF1-06DB1ECBA18C

Ссылка стала нерабочей, можете еще раз гост этот найти? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день/вечер, есть компонент VisionLab (от mitov.com) есть демка,ниже на которой работает идентификатор лица и глаз, пытался переделать под веб камеру,не получается кто работал с компонентама от mitov.com отзовитесь... ICQ 413899100

____________________________________

Куралесю на Delphi RaidStudio2010

FaceDetectDemo.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Люди добрые ) кто знает как с библиотекой fdlib работать? ниже исходник на С++ но там не ясно что чего грузить?

вот сайт fdlib : http://people.kyb.tuebingen.mpg.de/kienzle/fdlib/fdlib.htm

ниже демка и исходник

facedetect.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

(1) void fdlib_detectfaces(byte *imagedata, int imagewidth, int imageheight, int threshold);

(2) int fdlib_getndetections(void);

(3) void fdlib_getdetection(int nr, int *xpos, int *ypos, int *width);

byte *imagedata - массив пикселей серого изображения

int imagewidth, int imageheight - ширина и высота изображения

int threshold - порог детекта

int fdlib_getndetections(void) - выдает количество найденных лиц

int nr - количество детектов

int *xpos и int *ypos - координаты квадрата с лицом (массив целых размером = nr)

int *width - ширина квадрата с лицом

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

(1) void fdlib_detectfaces(byte *imagedata, int imagewidth, int imageheight, int threshold);

(2) int fdlib_getndetections(void);

(3) void fdlib_getdetection(int nr, int *xpos, int *ypos, int *width);

byte *imagedata - массив пикселей серого изображения

int imagewidth, int imageheight - ширина и высота изображения

int threshold - порог детекта

int fdlib_getndetections(void) - выдает количество найденных лиц

int nr - количество детектов

int *xpos и int *ypos - координаты квадрата с лицом (массив целых размером = nr)

int *width - ширина квадрата с лицом

спасибо что расписали что и как, но забыл сказать что нужно в Делфи это реализовать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день. Подскажите пожалуйста, библиотеки на C# реализации различных нейронных сетей. НС нужна для сравнения с базой лиц. Может, кто знает, какая топология для этого лучше подойдет?

Для каждого объекта имеется массив из 10000 дробных чисел, нужно обучить сеть, и получить что-то путное на выходе. Признателен любой помощи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×