Метка «computer vision»

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

Во-первых, мы закрыли посевной раунд с участием 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, преобразует изображение с камеры в звуковой образ: высота пикселя передается тоном, а яркость – громкостью. Для восприятия такого образа требуется длительное обучение, а использование предполагает крепкие нервы – послушайте ролик.

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

Введение

В этой статье речь пойдёт о распознавании жестов. Я считаю, что эта тема на сегодняшний день очень актуальна, потому что этот способ ввода информации более удобен для человека. В 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.
Читать полностью »

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

Детектирование ладоней и пальцев на изображении
С течением времени изменяются наши представления о способах взаимодействия с компьютером. На смену «классических» клавиатуры и мыши, в нашу жизнь прочно вошли тачпады и сенсорные экраны. Но это не последняя ступень эволюции для средств ввода информации. С появлением устройств дополненной реальности, например таких, как Google Glass, возникает необходимость в интерфейсах способных гармонично вписываться в данную концепцию. Предпосылки к возникновению таких интерфейсов имеются, так, например, появились такие устройства как Intel Creative Camera, Microsoft Kinect или Leap Motion. Основными управляющими элементами в данных устройствах являются руки пользователя. Поэтому, одной из фундаментальных алгоритмических задач, для взаимодействия с подобными устройствами, является детектирование рук и пальцев пользователя и реконструкция их пространственного расположения.
В данной статье речь пойдет о одном из способов решения задачи детектирования ладоней и пальцев.
Читать полностью »

Прошло уже больше года после завершения конкурса "Интернет-математика: Яндекс.Карты", но нас до сих пор спрашивают об алгоритме, который принёс нам победу в этом конкурсе. Узнав о том, что недавно Яндекс объявил о старте очередной "Интернет-математики", мы решили поделиться опытом нашего прошлогоднего участия и описать наш подход. Разработанный алгоритм смог с точностью 99.44% правильно определить лишние изображения в сериях панорамных снимков, например, как здесь:

Конкурс «Интернет математика: Яндекс.Карты» — опыт нашего участия и описание победившего алгоритма

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

Исходный код нашего решения доступен на github (C++ с использованием OpenCV).
Читать полностью »