Jump to content
Compvision.ru
Smorodov

Находим в кадре лица, человеческие фигуры, и т.д. и т.п

Recommended Posts

FaceDetect.jpg

проект здесь: FaceDetect.rar

дополнительные классификаторы (нос, глаза, рот, тело):HaarClassifiers.rar

здесь еще куча каскадов: Каскады хаара

  • Like 3

Share this post


Link to post
Share on other sites

Здравствуйте! У меня следующий вопрос:

Как обучить каскад Хаара находить сложные предметы (например, автомат, вертолет и т.п.)?

Пробовал, как написано в мануале - не получается.

Кто-нибудь пробовал сам обучать каскады?

Share this post


Link to post
Share on other sites
Здравствуйте! У меня следующий вопрос:

Как обучить каскад Хаара находить сложные предметы (например, автомат, вертолет и т.п.)?

Пробовал, как написано в мануале - не получается.

Кто-нибудь пробовал сам обучать каскады?

Я не пробовал, но встречал информацию по этому поводу в отдельной PDF (что-то вроде ObjectDetectionHowTo) и в O'Reilly Learning OpenCV

Если нужно детектировать достаточно особенные объекты, можно попробовать SURF

Share this post


Link to post
Share on other sites

Хочется классифицировать объекты, находящиеся на неподвижной картинке - человек, автомобиль, автомат, человек рядом с автомобилем, человек с автоматом. человек на автомобиле с автоматом и т.д. Т.е. получить текстовый дескриптор для изображения. Думал, что построив необходимые каскады, смогу (время обработки в данном случае не учитываем) получить такой дескриптор.

Share this post


Link to post
Share on other sites

Вышеуказаные документы читал (насколько позволяет знание языка) - на практике реализовать проблемно. Думал, может кто пробовал под свои задачи обучать, какие тонкости при этом

Share this post


Link to post
Share on other sites

Ага, похоже вы занимаетесь Automatic Image Annotation :(

Есть, как минимум, один проект подобного рода на OpenCV Annotator, к сожалению без исходников.

А почему вы используете Виола-Джонс? Этот алгоритм, похоже не самый популярный в данной задаче...

Share this post


Link to post
Share on other sites
Ага, похоже вы занимаетесь Automatic Image Annotation :(

Есть, как минимум, один проект подобного рода на OpenCV Annotator, к сожалению без исходников.

А почему вы используете Виола-Джонс? Этот алгоритм, похоже не самый популярный в данной задаче...

Может отсюда что нибудь сгодится?

Distinctive Image Features from Scale-Invariant Keypoints

Вроде у них по образцу на примерах очень неплохо работает.

ijcv04.jpg

Share this post


Link to post
Share on other sites
Может отсюда что нибудь сгодится?

Distinctive Image Features from Scale-Invariant Keypoints

Вроде у них по образцу на примерах очень неплохо работает.

Дык, SURF -- штука аналогичная SIFT, но не запатентованная. И работает быстрее.

Share this post


Link to post
Share on other sites

Начинать нужно было с простейшей задачи - выявить на изображениии лицо.

Насколько я понимаю, SURF (SIFT) позволяет найти эталон на изображении. А если все объекты относятся к одному классу (например, самолет) и имеют сходные внешние контуры (хвост, фюзеляж, крылья), но ключевые точки для каждого будут разными (или я не прав), то эти методы не сработают (не делать же для каждой модели самолета свой эталон). А алгоритм Виола-Джонса, если я правильно понимаю, позволяет получить именно некий нечеткий эталон для определенного класса объектов. Поэтому продолжил копать в этом направлении. Или я не прав? Тема для меня новая абсолютно

Вот что у меня примерно получается (пока еще не конечный результат):

post-80-1243800968_thumb.jpg

Share this post


Link to post
Share on other sites
Начинать нужно было с простейшей задачи - выявить на изображениии лицо.

Насколько я понимаю, SURF (SIFT) позволяет найти эталон на изображении. А если все объекты относятся к одному классу (например, самолет) и имеют сходные внешние контуры (хвост, фюзеляж, крылья), но ключевые точки для каждого будут разными (или я не прав), то эти методы не сработают (не делать же для каждой модели самолета свой эталон). А алгоритм Виола-Джонса, если я правильно понимаю, позволяет получить именно некий нечеткий эталон для определенного класса объектов. Поэтому продолжил копать в этом направлении. Или я не прав? Тема для меня новая абсолютно

Да, с SIFT/SURF всё правильно, он точно поможет найти уже существующие в базе объекты, с классификацией это, на самом деле, не особо связано.

Гугл подсказывает, часто используют SVM и HMM (не знаю, с какими фичами), в OpenCV они есть.

Получается вроде здорово ^_^b

Share this post


Link to post
Share on other sites
Да, с SIFT/SURF всё правильно, он точно поможет найти уже существующие в базе объекты, с классификацией это, на самом деле, не особо связано.

Гугл подсказывает, часто используют SVM и HMM (не знаю, с какими фичами), в OpenCV они есть.

Получается вроде здорово ^_^b

Это я самые сливки показал! Проблема в том, чтобы уменьшить вероятности ошибок первого и второго рода при классификации, что достигается хорошим обучением каскада. Вот над алгоритмом получения "хорошого" каскада и бъюсь. И не совсем понятно, как быть с инвариантностью вейвлета к вращению (в мануале написано, что такой механизм есть). Может, кто знает?

Share this post


Link to post
Share on other sites
Это я самые сливки показал! Проблема в том, чтобы уменьшить вероятности ошибок первого и второго рода при классификации, что достигается хорошим обучением каскада. Вот над алгоритмом получения "хорошого" каскада и бъюсь. И не совсем понятно, как быть с инвариантностью вейвлета к вращению (в мануале написано, что такой механизм есть). Может, кто знает?

Кстати, можно поподробнее про SVM (и скрытые марковские модели) в opencv? Что-то в хелпе их вроде не видел...

Share this post


Link to post
Share on other sites
Кстати, можно поподробнее про SVM (и скрытые марковские модели) в opencv? Что-то в хелпе их вроде не видел...

По SVM/HMM смотрите /usr/include/opencv/ml.h (или где у вас заголовочные файлы opencv). Внятных примеров по этому поводу не встречал >_>

В хелпе есть -- в разделе MachineLearning.

С вейвлетами инвариантность к вращению обычно достигается (по крайней мере, так с вейвлетами Габора) за счет применения повернутого ядра :(

Мало игрался с Виола-Джонс, не знаю как там это делается.

Share this post


Link to post
Share on other sites

здесь кто-нибудь работал с кодом Фримана??? у меня задача определение контура человека, вот решил попробовать через код Фримана

Share this post


Link to post
Share on other sites
здесь кто-нибудь работал с кодом Фримана??? у меня задача определение контура человека, вот решил попробовать через код Фримана

OpenCV, по моему, и представляет контуры кодом Фримана. Для того чтобы определить похожесть контуров, можно воспользоваться моментами Ху, или использовать функцию cvMatchShapes см. пример в аттаче.

ContourMatching.png

Пример: ContourMatching.rar

ЗЫ: Людей лучше искать Хааром (см. выше).

Share this post


Link to post
Share on other sites

а можете дать ссылки где поподробней можно почитать про алгоритм Хаара?

Share this post


Link to post
Share on other sites
а можете дать ссылки где поподробней можно почитать про алгоритм Хаара?

Тут материальчик от Intel: OpenCV Object Detection: Theory and Practice

И это посмотрите:

Виола-Джонс

Faces Presentation

Share this post


Link to post
Share on other sites
Тут материальчик от Intel: OpenCV Object Detection: Theory and Practice

И это посмотрите:

Виола-Джонс

Faces Presentation

Доброго времени суток, господа.

Все-таки скачал AnnotattorAnnotator (на тот момент он не был доступен для скачивания). Использует он Виола-Джонса. Значит, надежда на этот подход все-таки есть!

З.Ы.: Хедеры OpenCV в процессе - сейчас в отпуске, надеюсь доделать.

post-80-1245262455_thumb.jpg

Share this post


Link to post
Share on other sites

А как создаются классификаторы? и для рук и ног существуют класификаторы?)

Share this post


Link to post
Share on other sites
А как создаются классификаторы? и для рук и ног существуют класификаторы?)

Для OpenCV я сделал перевод их руководства, он лежит здесь: Обучение классификаторов Хаара

Насчет рук и ног, в примере FaceDetect, в директории с классификаторами лежат каскады для нижней части тела haarcascade_lowerbody и для верхней части тела haarcascade_upperbody, а также для человека в полный рост haarcascade_fullbody.

Share this post


Link to post
Share on other sites

Результат моих экспериментов по определению координат глаз (эксперименты продолжаются)

EyeSearch.jpg

Архив с проектом: FaceDetect2.rar

Share this post


Link to post
Share on other sites

Подскажите пожалуйста где скачать утилиты для тренировки классификаторов Хаара

createsamples и haartraining

Share this post


Link to post
Share on other sites

в библиотеке OpenCV должны быть, в той папке куда саму библиотеку ставил

Share this post


Link to post
Share on other sites

В библиотеки OpenCV есть стандартный классификаторы для поиска палец и ладоней человека ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×