Методы поиска дорожного знака. Эксперимент №2

5 (1)

В предыдущей части мы рассмотрели один из методов для детектирования и распознавания дорожных знаков. Однако рассмотренный метод имеет свои плюсы и  недостатки. В этой части мы рассмотрим еще один метод для решения данной задачи а также все подводные камни которые встретились в данном методе.
И так, речь пойдет об обучаем методе на основании метода Виолы-Джонса (Viola-Jones method)
    
Для данного метода нам необходима выборка фотографий с дорожными знаками. Нам необходимо не мене 1000 разных вариантов самого знака. И тут возникает главный вопрос «где взять выборку для обучения?». На просторах интернета есть пару вариантов где можно  посмотреть ее  раз два три

Одна в нашей работе была возможность нарезать самостоятельно такое количество знаков.  И мы смогли получить более 1000 элементов. 
После того как мы получили знаки, нам теперь необходимо сделать так называемую «отрицательную» выборку.  Данная выборка включает в себя фотографии, на которых нету дорожного знака. Хочу обратить внимание, что при создание данной выборки учитывается окружение в котором будет тестироваться алгоритм. Что это означает, если Вы сделаете  негативную выборки из фотографий сделанных в домашней обстановке а алгоритм будет тестироваться на улице, то алгоритм работать не будет. Что является большим минусом.

Позитивная выборка

Для негативной выборки необходимо в несколько раз больше изображений нежели для позитивной. Если У вас 1000 элементов  позитивной выборки то для негативной необходимо не менее 2000. 

 

И так вооружившись фотографиями мы приступили к создание каскада.  Для этого в составе OpenCV есть готовые утилиты для работы.

Создав выборку мы поставили для обучения наш каскад. В данном примеры мы указали что количество положительных элементов 800, хотя по факту 1000. Это указывается для того что бы в процессе у нас не возникло ошибок. Обычно советуют указывать на 20% меньше чем существует. 

opencv_traincascade -data ./cascade/ -vec samples.vec -bg bad.txt -numStages 16 -minHitRate 0.998 -maxFalseAlarmRate 0.5 -numPos 800 -numNeg 1800 -w 20 -h 20 -mode ALL -precalcValBufSize 2048 -precalcIdxBufSize 2048

Поставив на обучения приключения на этом не закончились. В первом разе ей что то не понравилось и она про обучавшись 4 чеса просто повисла. Поставил снова на обучение мы прождали порядка 2ух дней пока он завершил свое обучение. И при этом нам еще повезло, по комментариям в интернете некоторые каскады обучались порядка недели.
В результате обучения мы получили каскад, который мы в дальнейшем будем использовать в программе.  

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

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

Процент обнаружения знака составило более 90%.

Комментарий (0)

Войдите с помощью соцсетей:
или
введите свои данные: