OpenCV для детектирования дорожных знаков
Мы часто сталкиваемся с необходимостью детектирования различных объектов на фотографиях или видео. Довольно эффективно данную проблему можно решить, используя библиотеки OpenCV. В данной статье рассмотрим один из алгоритмов детектирования на примере обнаружения дорожных знаков.
Принцип работы программы заключается в следующем: на вход подается изображение, где предварительно мы ожидаем детектировать дорожный знак. При этом работа с видео такая же, так как в таком случае видео покадрово передается в программу и дальнейший алгоритм не отличается. Обычно все изображения, привычные нашему глазу, находятся в формате RGB. С ним неудобно работать, так как падение тени или свечение солнца будут сильно искажать оттенки цвета. А работа программы основана именно на определении цвета. Поэтому первым шагом будет переход в цветовое пространство HSV. Здесь мы уже будем накладывать цветовой фильтр, который будет разрешать только те цвета, которые встречаются в дорожных знаках. Чтобы в контурах не было разрывов, сгладим разрешенные пиксели. Далее рисуем контуры вокруг разрешенных пикселей. Чтобы не было много лишних, можно поставить ограничения по площади контура, например, в данном случае контур должен находиться в пределе от 400 до 10000 пикселей.
Поэтапно все действия с изображением представлены на фото ниже.
Остается только вырезать дорожные знаки с изображения и сохранить отдельным файлом.
Считаю результат очень хорошим, потому что даже в ночное время, программа отлично отработала и смогла детектировать знак, находящийся на заднем фоне. К примеру, нейросеть, обученная на датасете OpenImageV4, на этом изображении смогла найти только знаки на переднем фоне. При этом, в нашем случае не требуется высоких вычислительных мощностей и ядер CUDA и, соответственно, время работы сильно уменьшается, особенно на маломощных и портативных устройствах. Время работы программы составило меньше секунды.
При этом нейросеть, построенная на архитектуре SSD, работала значительно дольше и распознала два знака как один.
Данный алгоритм можно использовать не только для детектирования дорожных знаков, но и для других целей. Например, детектирование ценников в магазине, документов, книг, табличек, обладающих определенным цветом. Увеличить точность можно, оставляя только четырехугольные предметы, либо вводя другие специфичные конкретным объектам фильтры.
За 6 лет я успела поработать в трех крупных IT-компаниях, несколько раз меняла жилье и переехала из Мюнхена в Берлин. В статье я расскажу про немецкую бюрократию, налоги и почему даже айтишники с высокими зарплатами живут в коммуналках. А еще, как в Германии искать работу и жилье, сколько стоит здесь лечиться и жить, и как вы можете остаться без ви…
Работаю с предпринимателем более 2-х месяцев. На этой неделе встречаюсь с ним на коуч сессии и начинаем работу, в процессе ведения сессии и задавания вопросов захожу в тему Денег.
Исполнительный директор AmCham Russia Роберт Эйджи в разговоре с РБК порассуждал о возвращении американского бизнеса и о его конкуренции с Китаем на российском рынке.
Глава YC предупредил, что разработчикам всё равно необходимы знания в программировании.
Я всю жизнь мечтаю научиться играть на гитаре, петь песни и создавать музыку. Но увы, никак не могу сделать шаг на встречу мечте. Пока не пощупал пару нейронок и не понял, что вроде и так смогу!
Он может состоять примерно из 200 тысяч биткоинов, заявил спецпредставитель по ИИ и криптовалютам Дэвид Сакс.