Smorodov 579 Report post Posted May 3, 2009 проект здесь: FaceDetect.rar дополнительные классификаторы (нос, глаза, рот, тело):HaarClassifiers.rar здесь еще куча каскадов: Каскады хаара 3 Share this post Link to post Share on other sites
andrew smirnov 0 Report post Posted May 31, 2009 Здравствуйте! У меня следующий вопрос: Как обучить каскад Хаара находить сложные предметы (например, автомат, вертолет и т.п.)? Пробовал, как написано в мануале - не получается. Кто-нибудь пробовал сам обучать каскады? Share this post Link to post Share on other sites
Cfr 1 Report post Posted May 31, 2009 Здравствуйте! У меня следующий вопрос: Как обучить каскад Хаара находить сложные предметы (например, автомат, вертолет и т.п.)? Пробовал, как написано в мануале - не получается. Кто-нибудь пробовал сам обучать каскады? Я не пробовал, но встречал информацию по этому поводу в отдельной PDF (что-то вроде ObjectDetectionHowTo) и в O'Reilly Learning OpenCV Если нужно детектировать достаточно особенные объекты, можно попробовать SURF Share this post Link to post Share on other sites
andrew smirnov 0 Report post Posted May 31, 2009 Хочется классифицировать объекты, находящиеся на неподвижной картинке - человек, автомобиль, автомат, человек рядом с автомобилем, человек с автоматом. человек на автомобиле с автоматом и т.д. Т.е. получить текстовый дескриптор для изображения. Думал, что построив необходимые каскады, смогу (время обработки в данном случае не учитываем) получить такой дескриптор. Share this post Link to post Share on other sites
andrew smirnov 0 Report post Posted May 31, 2009 Вышеуказаные документы читал (насколько позволяет знание языка) - на практике реализовать проблемно. Думал, может кто пробовал под свои задачи обучать, какие тонкости при этом Share this post Link to post Share on other sites
Cfr 1 Report post Posted May 31, 2009 Ага, похоже вы занимаетесь Automatic Image Annotation Есть, как минимум, один проект подобного рода на OpenCV Annotator, к сожалению без исходников. А почему вы используете Виола-Джонс? Этот алгоритм, похоже не самый популярный в данной задаче... Share this post Link to post Share on other sites
Smorodov 579 Report post Posted May 31, 2009 Ага, похоже вы занимаетесь Automatic Image Annotation Есть, как минимум, один проект подобного рода на OpenCV Annotator, к сожалению без исходников. А почему вы используете Виола-Джонс? Этот алгоритм, похоже не самый популярный в данной задаче... Может отсюда что нибудь сгодится? Distinctive Image Features from Scale-Invariant Keypoints Вроде у них по образцу на примерах очень неплохо работает. Share this post Link to post Share on other sites
Cfr 1 Report post Posted May 31, 2009 Может отсюда что нибудь сгодится? Distinctive Image Features from Scale-Invariant Keypoints Вроде у них по образцу на примерах очень неплохо работает. Дык, SURF -- штука аналогичная SIFT, но не запатентованная. И работает быстрее. Share this post Link to post Share on other sites
andrew smirnov 0 Report post Posted May 31, 2009 Начинать нужно было с простейшей задачи - выявить на изображениии лицо. Насколько я понимаю, SURF (SIFT) позволяет найти эталон на изображении. А если все объекты относятся к одному классу (например, самолет) и имеют сходные внешние контуры (хвост, фюзеляж, крылья), но ключевые точки для каждого будут разными (или я не прав), то эти методы не сработают (не делать же для каждой модели самолета свой эталон). А алгоритм Виола-Джонса, если я правильно понимаю, позволяет получить именно некий нечеткий эталон для определенного класса объектов. Поэтому продолжил копать в этом направлении. Или я не прав? Тема для меня новая абсолютно Вот что у меня примерно получается (пока еще не конечный результат): Share this post Link to post Share on other sites
Cfr 1 Report post Posted June 1, 2009 Начинать нужно было с простейшей задачи - выявить на изображениии лицо. Насколько я понимаю, SURF (SIFT) позволяет найти эталон на изображении. А если все объекты относятся к одному классу (например, самолет) и имеют сходные внешние контуры (хвост, фюзеляж, крылья), но ключевые точки для каждого будут разными (или я не прав), то эти методы не сработают (не делать же для каждой модели самолета свой эталон). А алгоритм Виола-Джонса, если я правильно понимаю, позволяет получить именно некий нечеткий эталон для определенного класса объектов. Поэтому продолжил копать в этом направлении. Или я не прав? Тема для меня новая абсолютно Да, с SIFT/SURF всё правильно, он точно поможет найти уже существующие в базе объекты, с классификацией это, на самом деле, не особо связано. Гугл подсказывает, часто используют SVM и HMM (не знаю, с какими фичами), в OpenCV они есть. Получается вроде здорово ^_^b Share this post Link to post Share on other sites
andrew smirnov 0 Report post Posted June 1, 2009 Да, с SIFT/SURF всё правильно, он точно поможет найти уже существующие в базе объекты, с классификацией это, на самом деле, не особо связано. Гугл подсказывает, часто используют SVM и HMM (не знаю, с какими фичами), в OpenCV они есть. Получается вроде здорово ^_^b Это я самые сливки показал! Проблема в том, чтобы уменьшить вероятности ошибок первого и второго рода при классификации, что достигается хорошим обучением каскада. Вот над алгоритмом получения "хорошого" каскада и бъюсь. И не совсем понятно, как быть с инвариантностью вейвлета к вращению (в мануале написано, что такой механизм есть). Может, кто знает? Share this post Link to post Share on other sites
andrew smirnov 0 Report post Posted June 1, 2009 Это я самые сливки показал! Проблема в том, чтобы уменьшить вероятности ошибок первого и второго рода при классификации, что достигается хорошим обучением каскада. Вот над алгоритмом получения "хорошого" каскада и бъюсь. И не совсем понятно, как быть с инвариантностью вейвлета к вращению (в мануале написано, что такой механизм есть). Может, кто знает? Кстати, можно поподробнее про SVM (и скрытые марковские модели) в opencv? Что-то в хелпе их вроде не видел... Share this post Link to post Share on other sites
Cfr 1 Report post Posted June 2, 2009 Кстати, можно поподробнее про SVM (и скрытые марковские модели) в opencv? Что-то в хелпе их вроде не видел... По SVM/HMM смотрите /usr/include/opencv/ml.h (или где у вас заголовочные файлы opencv). Внятных примеров по этому поводу не встречал >_> В хелпе есть -- в разделе MachineLearning. С вейвлетами инвариантность к вращению обычно достигается (по крайней мере, так с вейвлетами Габора) за счет применения повернутого ядра Мало игрался с Виола-Джонс, не знаю как там это делается. Share this post Link to post Share on other sites
jek 0 Report post Posted June 5, 2009 здесь кто-нибудь работал с кодом Фримана??? у меня задача определение контура человека, вот решил попробовать через код Фримана Share this post Link to post Share on other sites
Smorodov 579 Report post Posted June 5, 2009 здесь кто-нибудь работал с кодом Фримана??? у меня задача определение контура человека, вот решил попробовать через код Фримана OpenCV, по моему, и представляет контуры кодом Фримана. Для того чтобы определить похожесть контуров, можно воспользоваться моментами Ху, или использовать функцию cvMatchShapes см. пример в аттаче. Пример: ContourMatching.rar ЗЫ: Людей лучше искать Хааром (см. выше). Share this post Link to post Share on other sites
jek 0 Report post Posted June 8, 2009 а можете дать ссылки где поподробней можно почитать про алгоритм Хаара? Share this post Link to post Share on other sites
Smorodov 579 Report post Posted June 8, 2009 а можете дать ссылки где поподробней можно почитать про алгоритм Хаара? Тут материальчик от Intel: OpenCV Object Detection: Theory and Practice И это посмотрите: Виола-Джонс Faces Presentation Share this post Link to post Share on other sites
andrew smirnov 0 Report post Posted June 17, 2009 Тут материальчик от Intel: OpenCV Object Detection: Theory and Practice И это посмотрите: Виола-Джонс Faces Presentation Доброго времени суток, господа. Все-таки скачал AnnotattorAnnotator (на тот момент он не был доступен для скачивания). Использует он Виола-Джонса. Значит, надежда на этот подход все-таки есть! З.Ы.: Хедеры OpenCV в процессе - сейчас в отпуске, надеюсь доделать. Share this post Link to post Share on other sites
jek 0 Report post Posted June 23, 2009 А как создаются классификаторы? и для рук и ног существуют класификаторы?) Share this post Link to post Share on other sites
Smorodov 579 Report post Posted June 24, 2009 А как создаются классификаторы? и для рук и ног существуют класификаторы?) Для OpenCV я сделал перевод их руководства, он лежит здесь: Обучение классификаторов Хаара Насчет рук и ног, в примере FaceDetect, в директории с классификаторами лежат каскады для нижней части тела haarcascade_lowerbody и для верхней части тела haarcascade_upperbody, а также для человека в полный рост haarcascade_fullbody. Share this post Link to post Share on other sites
Smorodov 579 Report post Posted June 27, 2009 Результат моих экспериментов по определению координат глаз (эксперименты продолжаются) Архив с проектом: FaceDetect2.rar Share this post Link to post Share on other sites
Frimen 0 Report post Posted September 8, 2009 Подскажите пожалуйста где скачать утилиты для тренировки классификаторов Хаара createsamples и haartraining Share this post Link to post Share on other sites
jek 0 Report post Posted September 8, 2009 в библиотеке OpenCV должны быть, в той папке куда саму библиотеку ставил Share this post Link to post Share on other sites
Frimen 0 Report post Posted September 8, 2009 В библиотеки OpenCV есть стандартный классификаторы для поиска палец и ладоней человека ? Share this post Link to post Share on other sites