2016-01-26 4 views
0

В моем проекте мне нужно узнать монеты евро, и кто-то посоветовал мне использовать классификаторы OpenCV и алгоритмы обучения. Поэтому я загрузил 3.1 версию OpenCV, и я пытаюсь запустить ее. Я хотел бы знать некоторые вещи, которые я не понимаю из учебных пособий (из которых я следую this, this из официальной документации OpenCV и this).OpenCV: как использовать opencv_createsamples и opencv_traincascade

Прежде всего, необходимо ли генерировать и рассматривать отрицательные образцы? если да, то какие «объекты» следует рассматривать как негативы? В моем приложении я должен обнаружить и распознать монеты евро, поэтому ... должен ли я создавать негативы из любого другого случайного объекта?

Во-вторых, мое приложение должно признать 2 €, 1 € и 0.50 € монет. Итак, сколько положительных образцов я должен создать с помощью opencv_createsamples? Один для каждой монеты (спереди и сзади) или уникальный для всех трех видов монет? Если бы я хорошо понял, то у меня появятся некоторые .xml-файлы, которые я должен вложить в проект приложения для iOS, так?

И, наконец, будет detectMultiScale() не только обнаружить монету, но и ее вид? Вот почему я думал, что мне понадобится больше, чем файл классификатора, чтобы отличить назад с правой стороны и отличить ценность монеты.

Надеюсь, что я не написал слишком широкий вопрос, спасибо за внимание.

+1

Я думаю, что отрицательные образцы должны. Я не знаком с монетами евро, но маловероятно, что 'detectMultiScale()' может распознавать типы монет, даже вы их обучаете отдельно и используете 3 разных детектора - они просто похожи на формы (раунд?). Для этой задачи вам нужно будет обучить распознавание объектов. –

+0

@QuangHoang благодарит вас за ответ. Да, все монеты евро круглые и очень похожие. Эм, что такое распознавание объектов? Можете ли вы сослаться на хороший учебник? –

+1

Это нечто похожее на распознавание лица. Обычно вам необходимо обучить классификационную машину, будь то PCA, SVM или Neural Network. OpenCV имеет [распознавание лица] (http://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_tutorial.html), который может использоваться с вашим набором данных монет. - Также обратите внимание, что у них есть модуль машинного обучения с более общей реализацией общих классификаторов. –

ответ

0

Относительно отрицательного (или фона) примера рассмотрим, на каком фоне монеты евро будут на изображении, которое ваша программа должна обработать в конце. Например, если они находятся на столе вместе с не-евро, используйте столешницы (без монет) в качестве негативов. Если вы хотите найти их на изображениях, где люди держат их, используйте руки в качестве негативов и т. Д.

Что касается второго вопроса - я также ища совет по этому вопросу. Я думаю, это зависит от сложности функций, которые вам нужно признать, а также от сложности фона. Мне удалось обучить классификатор с 40 положительными кругами, но полностью не смог обучить классификатор, используя 60 (воздушных) изображений коровы.

Что касается третьего вопроса, я думаю (не проверен!), Который зависит от ваших потребностей в узнавании: если вы просто хотите увидеть одну из монет евро, вы будете в курсе, чтобы обучить один классификатор изображениями всех монет из все стороны. Если вы хотите отличить монеты, создайте разные классификаторы с изображениями каждой монеты со всех сторон. Если вам даже нужно отличать фронт от спины, вам нужно будет создать один классификатор для каждой стороны каждой монеты.

0

да, отрицательные образцы являются обязательными и снова да, вы можете иметь изображения случайных объектов, но вам нужно иметь их много, поэтому я предлагаю использование видео для извлечения их кадров или веб-сайта, таких как this

дальше, вы должны иметь положительные образцы для ваших монет. Большее количество положительных монет, более точные результаты будут. Одна вещь, которую вы можете сделать, это взять 2-3 изображения вашей монеты и супер наложить их на свои отрицательные, меняя угол каждый раз, когда вы накладываете. Таким образом, если вы скажете, 500 отрицательных изображений и 2 положительных изображения монеты, у вас будет 1000 положительных изображений после наложения. скрипт opencv_createsamples заботится обо всем этом.

Смежные вопросы