Распознавание лиц на iPhone с использованием OpenCV и LBP - PullRequest
4 голосов
/ 07 февраля 2011

Я успешно работал с алгоритмом Хаара в OpenCV-2.1.0 (cvHaarDetectObjects) для обнаружения лиц на изображениях и видеокадрах из проекта Objective-C для iOS 4.2.Тем не менее, время обработки для видеокадров все еще занимает около 1-2 секунд на iPhone 4 при большинстве условий.Ниже приведен пример кода, который я использую:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"haarcascade_frontalface_alt" ofType:@"xml"];

    CvHaarClassifierCascade* cascade = 
            (CvHaarClassifierCascade*)cvLoad([path cStringUsingEncoding:NSASCIIStringEncoding], 
                                             NULL, NULL, NULL);
    CvMemStorage* storage = cvCreateMemStorage(0);

    CvSeq* faces = cvHaarDetectObjects(small_image, cascade, storage, 1.2, 0, 
                                       0 |CV_HAAR_DO_ROUGH_SEARCH |CV_HAAR_FIND_BIGGEST_OBJECT, cvSize(30, 30));

Я испробовал несколько методов оптимизации, в том числе интеллектуальное применение ROI и использование целых чисел, а не чисел с плавающей запятой.Тем не менее, эти изменения заняли огромное количество времени и принесли лишь незначительную пользу.

Мне было высказано предположение, что использование LBP может значительно сократить время обнаружения лица.Я экспериментировал и искал способы реализации LBP, но безрезультатно.В opencv есть каскадный файл (lbpcascade_frontalface.xml), но я не могу найти никаких предложений о том, как его использовать.

Буду признателен за любую помощь, включая другие методы оптимизации и ссылки Google, которые я мог пропустить при поиске.Точность обнаружения не является критической, если она достаточно эффективна.

Спасибо!

1 Ответ

2 голосов
/ 04 июня 2011

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

Кроме того, ознакомьтесь с этим руководством по производительности.

...