Рубрика «computer vision» - 12

Когда пользуешься сложными алгоритмами для решения задач компьютерного зрения — нужно знать основы. Не знание основ приводит к глупейшим ошибкам к тому, что система выдаёт неверифицируемый результат. Используешь OpenCV, а потом гадаешь: «может если сделать всё специально под мою задачу ручками было бы сильно лучше?». Зачастую заказчик ставит условие «сторонних библиотек использовать нельзя», или когда работа идёт для какого-нибудь микроконтроллера — всё нужно прогать с нуля. Вот тут и приходит облом: в обозримые сроки реально что-то сделать, только зная как работают основы. При этом чтения статей зачастую не хватает. Прочитать статью про распознавание номеров и попробовать самому такое сделать — огромная пропасть. Поэтому лично я стараюсь периодически писать какие-нибудь простенькие программки, включающие в себя максимум новых и неизвестных для меня алгоритмов + тренирующих старые воспоминания. Рассказ — про один из таких примеров, который я написал за пару вечеров. Как мне показалось, вполне симпатичный набор алгоритмов и методов, позволяющий достичь простенького оценочного результата, которого я ни разу не видел.
Что нам стоит сеть построить
Сидя вечером и страдая от того, что нужно сделать что-то полезное, но не хочется, я наткнулся на очередную статью по нейросетям и загорелся. Нужно сделать наконец таки свою нейросеть. Идея банальная: все любят нейросети, примеров с открытым кодом масса. Мне иногда приходилось пользоваться и LeNet и сетями из OpenCV. Но меня всегда настораживало, что их характеристики и механику я знаю только по бумажкам. А между знанием «нейросети обучаются методом обратного распространения» и пониманием того, как это сделать пролегает огромная пропасть. И тогда я решился. Пришло время, чтобы 1-2 вечера посидеть и сделать всё своими руками, разобраться и понять.
Читать полностью »

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

Во-первых, мы закрыли посевной раунд с участием TMT Invsetments и iDealMachine.
TMT — инвестиционная компания со штаб-квартирой в Лондоне, вложившаяся в том числе в ShareThis и приобретенный Yahoo Astrid. Акции TMT торгуются на Лондонской бирже, в команде — сооснователи холдинга РБК: Герман Каплун, Артем Инютин и Александр Моргульчик.
iDealMachine — венчурный фонд и стартап-акселератор, инвестировавший в нас на предпосевной стадии и давший дорогу в мир предпринимательства. В портфеле iDM несколько отличных проектов, например Miiix — платформа для взаимодействия поставщиков и интернет-магазинов (победитель премии «Стартап года»), Prixel — репродукция живописи на 3D-принтере, Smart Museum – интерактивный гид по музееям и xTurion – мобильные роботы для мониторинга.

Во-вторых, в обществах слепых началось тестирование первой версии нашего устройства. Oriense-1 позволяет безопасно перемещаться, предупреждая о препятствиях и подсказывая пути обхода. Помимо голосовых сообщений, для передачи информации используется «аудио 3D-карта» — пространственные звуковые маркеры, которыми помечаются препятствия и другие важные объекты сцены. Это позволяет оперативно воспринимать пространство на слух. Аналогичный принцип используется в аудио-играх для незрячих (Audio Quake, Shades of Doom), да и в целом незрячие ориентируются именно так, «слыша» препятствия. Все препятствия при этом услышать невозможно, и тут то и должно приходить на помощь наше устройство. Сенсорная замена вообще достаточно распространенный подход в устройствах помощи незрячим, самая известная подобная система, vOICe, преобразует изображение с камеры в звуковой образ: высота пикселя передается тоном, а яркость – громкостью. Для восприятия такого образа требуется длительное обучение, а использование предполагает крепкие нервы – послушайте ролик.

Читать полностью »

От переводчика:

Доброго времени суток!
Недавно я искал способы повышения скорости работы детектора Виолы-Джонса и натолкнулся на интересную статью 2013 года «RASW: a Run-time Adaptive Sliding Windowto Improve Viola-Jones Object Detection». В ней представлен эффективный подход к улучшению работы детекторов, основанных на принципе сканирующего окна и каскадных классификаторах. Я не нашел описания данного подхода на русском языке и решил восполнить этот пробел. В данном переводе я опустил описание алгоритма Виолы-Джонса, так как о нём уже много рассказано, в том числе и на хабре habrahabr.ru/post/133826/.
Читать полностью »

Введение

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

В статье, в основном, речь будет идти о том, как я реализовал распознавание жестов, а о видеоплеере я только скажу в общем.
Читать полностью »

В одном из проектов компании Itseez, связанных с компьютерным зрением, мы используем Raspberry Pi для обработки видео потока с веб-камеры, и недавно столкнулись с проблемой записи видео на флеш-карту. Трудность состояла в том, что ресурсы ЦП съедались другими более важными задачами, однако сохранять видео все же было нужно. Причем предпочтений, каким кодеком сжимать и какой формат использовать, не было, лишь бы это никак не сказывалось на fps (количестве кадров в секунду). Перепробовав большое число программных кодеков от RAW до H.264 (использовалась обертка OpenCV над FFmpeg), пришли к выводу, что ничего из этого не выйдет, т.к. при высокой нагрузке fps проседал с 20 до 5 кадров в секунду, при том что картинка – черно-белая с разрешением 320x240. Немного погуглив, выяснили, что в процессоре Raspberry Pi есть аппаратный кодер с поддержкой стандарта H.264 (насколько мне известно, лицензия приобретена только для него). Плюсом ко всему было то, что взаимодействие с кодером реализовано по стандарту OpenMAX, поэтому было решено взяться за написание кода с использованием OpenMAX, и посмотреть, что из этого получится. Получилось, кстати, очень даже недурно!
Читать полностью »

То, что вы хотели знать про оптический поток, но стеснялись спросить
Оптический поток (Optical flow) – технология, использующаяся в различных областях computer vision для определения сдвигов, сегментации, выделения объектов, компрессии видео. Однако если мы захотим его по-быстрому реализовать в своем проекте, прочитав про него на википедии или где-нибудь еще, то, скорее всего, очень быстро наткнемся на то, что он работает очень плохо и сбоит при определении сдвигов уже порядка 1-2 пикселей (по крайней мере так было у меня). Тогда обратимся к готовым реализациям, например, в OpenCV. Там он реализован различными методами и совершенно непонятно, чем аббревиатура PyrLK лучше или хуже обозначения Farneback или чего-нибудь в этом роде, да и придется поразбираться со смыслом параметров, которых в некоторых реализациях очень много. Причем, что интересно, эти алгоритмы как-то работают, в отличие от того, что мы написали сами. В чем же секрет?
Читать полностью »

История проекта уходит корнями в далекий 2006 год.
Тогда в питерский НИИ Робототехники и технической кибернетики (ЦНИИ РТК) обратился активный член общества слепых с предложением создания устройства помощи слепым и слабовидящим.
Один из основателей нынешнего Oriense тогда заведовал отделом телевизионных информационно-измерительных систем, который занимался в том числе зрением роботов и разрабатывал свою стереокамеру. На ней устройство и решили базировать: носимый компьютер обрабатывает информацию от двух камер и двух УЗ-сонаров и выдает подсказки в наушники с помощью голосового синтезатора.

Oriense. Разработка устройств помощи слепым и слабовидящим
Читать полностью »

Seam carving это алгоритм для изменения размера картинки, сохраняющий важный контент и удаляющий менее значимый. Он был описан в статье S. Avidan & A. Shamir. Он дает лучший результат, чем обычное растягивание изображения ввиду того, что не меняет пропорций значимых элементов изображения. Две фотографии ниже демонстрируют работу алгоритма – исходное изображение имеет размер 332x480, в то время как модифицированное seam carving'ом 272x400.
Алгоритм seam carving для изменения размера изображения
Алгоритм seam carving для изменения размера изображения
В данной статье я опишу работу алгоритма используя псевдокод и код Matlab. Оригинал статьи, написанный мной на английском доступен тут, исходный код на гитхабе.
Читать полностью »

Конкурс ImageNet состоялся в октябре 2012 года и был посвящен классификации объектов на фотографиях. В конкурсе требовалось распознавание образов в 1000 категорий.

Команда Хинтона использовала методы deep learning и сверточных нейронных сетей, а также инфраструктуру, созданную в Google под руководством Jeff Dean и Andrew Ng. В марте 2013 года Google инвестировал в стартап Хинтона, основанный при университете Торонто, тем самым получив все права на технологию. В течение шести месяцев был разработан сервис поиска по фотографиям photos.google.com.
Читать полностью »

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js