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

Распознавание знака пешеходного перехода

Recommended Posts

Здравствуйте, пытаюсь научить каскадный классификатор распознавать знак пешеходного переход. Перепробовал уже множество вариантов, самый лучший пока такой. Это параметры для тренировки каскада:
-minhitrate 0.999
-maxFalseAlarmRate 0.4
Дальше 12 стадии обучаться не хочет, происходит переобучение.

Вот результаты:
тут он нашел знаки, они крупные и четкие

тут нет. изображение в оригинале 2800х2100 px поэтому списывать на то что знак мелкий не стоит 

тут тоже нет
Ниже прилагаю выборку для обучения. Пробовал из негативной выборки убирать другие знаки вообще, результат примерно тот же. Увеличивал выборку до 1500 позитивных и 3000 негативных изображения, на результат тоже особо не повлияло.

Не подскажете, что можно сделать, чтобы улучшить детектирование знака?

выборка.7z

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


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

Можно попробовать сделать детектор на треугольный знак(все треугольные знаки в положительные образцы), а уже потом отфильтровывать нужный вам. Это если нет ошибок в параметрах детекции(минимальное окно, коэффициент и прочее)

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


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

А каким образом потом отфильтровывать среди найденных?
О каком коэффициент идет речь?

Минимальное окно  пробовал 16x16 и 20x20

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


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

А без цвета, это принципиально ?

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


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

Не совсем понял о чем вы. То что картинки черно-белые? Я думал в opencv используется метод Виолы-Джонса в котором работают с черно-белыми изображениями, поэтому использовал именно черное-белые изображения.

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


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

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

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


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

Хотел что-то подобное сделать, но столкнулся с проблемой. Когда подаю классификатору на распознавание просто вырезанный знак, без фона (даже из обучающей выборки давал ему) он его не распознают. То есть нужно всегда чтобы знак на каком-то фоне был, вырезку он вообще не распознает. Не знаете с чем это связано?

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


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

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

Например посмотрите как здесь делают: https://rdmilligan.wordpress.com/2015/03/01/road-sign-detection-using-opencv-orb/ правда тоже Хааром детектировали, а вот дальше извлекали ORB дескрипторы и сравнивали с шаблоном.

Здесь еще проект с исходниками: https://sites.google.com/site/mcvibot2011sep/home 

  • Like 1

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


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

Я как то смотрел https://www.robots.ox.ac.uk/~vgg/practicals/category-detection/index.html

Но там получался результат какой то не очень, даже с  hard negative mining.

  • Like 1

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Smorodov сказал:

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

Например посмотрите как здесь делают: https://rdmilligan.wordpress.com/2015/03/01/road-sign-detection-using-opencv-orb/ правда тоже Хааром детектировали, а вот дальше извлекали ORB дескрипторы и сравнивали с шаблоном.

Здесь еще проект с исходниками: https://sites.google.com/site/mcvibot2011sep/home 

Выборка с изображениями есть в первом посте. Проблема в том, что после обучения я брал изображения из позитивной выборки (уже вырезанное) и пускал по нему каскад, ничего не находилось. Если же например взять исходное изображение, откуда вырезался знак, то на нем все нормально определяется.

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

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


Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, kobaeugenea сказал:

А каким образом потом отфильтровывать среди найденных?
О каком коэффициент идет речь?

Минимальное окно  пробовал 16x16 и 20x20

Имеется в виду  scale_factor.

Про фильтрацию: взять любой дескриптор (hog тот же или просто значения яркости) и прогнать их через нейронную сеть или svm.

Если у вас есть цвет, то можно использовать не яркость, а компоненту цвета или насыщенности или их комбинацию (знак синий а фон серо зеленый).

  • Like 1

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, iskees сказал:

Имеется в виду  scale_factor.

 

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

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


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

поиск идет скользящим окном, размер этого окна начинается с min_size  у вас это 16, после прохода этим окном размер умножается  scale_factor и проход повторяется пока размер окна не достигнит max_size. чем меньше  scale_factor тем точнее поиск, но и медленнее соответственно.

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


Ссылка на сообщение
Поделиться на других сайтах
В 06.02.2017 at 21:28, iskees сказал:

Можно попробовать сделать детектор на треугольный знак(все треугольные знаки в положительные образцы), а уже потом отфильтровывать нужный вам. Это если нет ошибок в параметрах детекции(минимальное окно, коэффициент и прочее)

 

В 07.02.2017 at 05:00, Smorodov сказал:

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

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

Спасибо за разъяснение параметра scale_factor. Не могли бы вы еще объяснить что означает minNeighbors?

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


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

minNeighbors. Число минимальных объектов найденных в данной области. Т.Е. на один знак(область изображения) может откликнутся сразу несколько окон (+- несколько пикселей в сторону, разный масштаб), если этих откликов меньше чем minNeighbors то область отбрасывается. При значении 0 будут возращены все  варианты (на один знак может быть несколько пересекающихся областей). Грубо говоря  чем больше это значение, тем более параноидальным будет поиск и тем чаще он будет пропускать объекты, считая, что это ложное срабатывание.

  • Like 1

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


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

Дорожный знак как только не пытались распозновать, но он очень хитрый зверь.

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

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


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

Поищите HOG+svm классификатор, он прекрасно справляется.

например: http://blog.dlib.net/2014/02/dlib-186-released-make-your-own-object.html

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×