Когда пользуешься сложными алгоритмами для решения задач компьютерного зрения — нужно знать основы. Не знание основ приводит к глупейшим ошибкам к тому, что система выдаёт неверифицируемый результат. Используешь OpenCV, а потом гадаешь: «может если сделать всё специально под мою задачу ручками было бы сильно лучше?». Зачастую заказчик ставит условие «сторонних библиотек использовать нельзя», или когда работа идёт для какого-нибудь микроконтроллера — всё нужно прогать с нуля. Вот тут и приходит облом: в обозримые сроки реально что-то сделать, только зная как работают основы. При этом чтения статей зачастую не хватает. Прочитать статью про распознавание номеров и попробовать самому такое сделать — огромная пропасть. Поэтому лично я стараюсь периодически писать какие-нибудь простенькие программки, включающие в себя максимум новых и неизвестных для меня алгоритмов + тренирующих старые воспоминания. Рассказ — про один из таких примеров, который я написал за пару вечеров. Как мне показалось, вполне симпатичный набор алгоритмов и методов, позволяющий достичь простенького оценочного результата, которого я ни разу не видел.
Сидя вечером и страдая от того, что нужно сделать что-то полезное, но не хочется, я наткнулся на очередную статью по нейросетям и загорелся. Нужно сделать наконец таки свою нейросеть. Идея банальная: все любят нейросети, примеров с открытым кодом масса. Мне иногда приходилось пользоваться и LeNet и сетями из OpenCV. Но меня всегда настораживало, что их характеристики и механику я знаю только по бумажкам. А между знанием «нейросети обучаются методом обратного распространения» и пониманием того, как это сделать пролегает огромная пропасть. И тогда я решился. Пришло время, чтобы 1-2 вечера посидеть и сделать всё своими руками, разобраться и понять.
Читать полностью »
Рубрика «computer vision» - 12
Что нам стоит сеть построить
2014-07-14 в 20:51, admin, рубрики: computer vision, machine learning, искусственный интеллект, нейронные сети, нейросеть, обработка изображенийИтоги прошедших месяцев: Seed, Oriense-1, OrPI, OrCC, StartupCup, Технопарк
2014-03-26 в 15:29, admin, рубрики: computer vision, Exynos 4412, odroid, PrimeSense, Raspberry Pi, Блог компании Oriense, обработка изображений, метки: computer vision, Exynos 4412, odroid, PrimeSense, АРМПосле первой нашей публикации минуло немало времени и произошло несколько важных событий. Теперь мы будем писать чаще, а пока подведем некоторые итоги прошедших месяцев.
Во-первых, мы закрыли посевной раунд с участием 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, преобразует изображение с камеры в звуковой образ: высота пикселя передается тоном, а яркость – громкостью. Для восприятия такого образа требуется длительное обучение, а использование предполагает крепкие нервы – послушайте ролик.
RASW: Улучшаем метод Виолы-Джонса
2014-03-16 в 21:33, admin, рубрики: computer vision, opencv, viola jones, АлгоритмыОт переводчика:
Доброго времени суток!
Недавно я искал способы повышения скорости работы детектора Виолы-Джонса и натолкнулся на интересную статью 2013 года «RASW: a Run-time Adaptive Sliding Windowto Improve Viola-Jones Object Detection». В ней представлен эффективный подход к улучшению работы детекторов, основанных на принципе сканирующего окна и каскадных классификаторах. Я не нашел описания данного подхода на русском языке и решил восполнить этот пробел. В данном переводе я опустил описание алгоритма Виолы-Джонса, так как о нём уже много рассказано, в том числе и на хабре habrahabr.ru/post/133826/.
Читать полностью »
Умный видеоплеер или просто распознавание жестов
2014-02-21 в 9:54, admin, рубрики: c++, computer vision, qt, qt quick, Qt Software, обработка изображений, параллельное программирование, метки: c++, computer vision, Qt, qt quick, параллельное программированиеВведение
В этой статье речь пойдёт о распознавании жестов. Я считаю, что эта тема на сегодняшний день очень актуальна, потому что этот способ ввода информации более удобен для человека. В YouTube можно увидеть много роликов про распознавание, отслеживание предметов, в хабре тоже есть статьи по этой теме, так вот, я решил поэкспериментировать и сделать что-то своё, полезное и нужное. Я решил сделать видеоплеер, которым можно управлять жестами, потому что сам иногда очень ленюсь взяться за мышку, найти этот ползунок и перемотать чуть-чуть вперёд или чуть-чуть назад, особенно, когда смотрю фильмы на иностранном языке (там приходится часто перематывать назад).
В статье, в основном, речь будет идти о том, как я реализовал распознавание жестов, а о видеоплеере я только скажу в общем.
Читать полностью »
Raspberry Pi: Кодируем H.264 видео в реальном времени
2013-12-25 в 9:16, admin, рубрики: computer vision, ffmpeg, itseez, Raspberry Pi, Блог компании «Itseez», Компьютерное зрение, Нижний Новгород, обработка видео, Работа с видео, метки: computer vision, ffmpeg, itseez, Raspberry Pi, Компьютерное зрение, Нижний Новгород, обработка видео В одном из проектов компании Itseez, связанных с компьютерным зрением, мы используем Raspberry Pi для обработки видео потока с веб-камеры, и недавно столкнулись с проблемой записи видео на флеш-карту. Трудность состояла в том, что ресурсы ЦП съедались другими более важными задачами, однако сохранять видео все же было нужно. Причем предпочтений, каким кодеком сжимать и какой формат использовать, не было, лишь бы это никак не сказывалось на fps (количестве кадров в секунду). Перепробовав большое число программных кодеков от RAW до H.264 (использовалась обертка OpenCV над FFmpeg), пришли к выводу, что ничего из этого не выйдет, т.к. при высокой нагрузке fps проседал с 20 до 5 кадров в секунду, при том что картинка – черно-белая с разрешением 320x240. Немного погуглив, выяснили, что в процессоре Raspberry Pi есть аппаратный кодер с поддержкой стандарта H.264 (насколько мне известно, лицензия приобретена только для него). Плюсом ко всему было то, что взаимодействие с кодером реализовано по стандарту OpenMAX, поэтому было решено взяться за написание кода с использованием OpenMAX, и посмотреть, что из этого получится. Получилось, кстати, очень даже недурно!
Читать полностью »
То, что вы хотели знать про оптический поток, но стеснялись спросить
2013-11-11 в 6:18, admin, рубрики: computer vision, opencv, optical flow, Алгоритмы, обработка изображений, оптический поток, метки: computer vision, opencv, optical flow, оптический поток
Оптический поток (Optical flow) – технология, использующаяся в различных областях computer vision для определения сдвигов, сегментации, выделения объектов, компрессии видео. Однако если мы захотим его по-быстрому реализовать в своем проекте, прочитав про него на википедии или где-нибудь еще, то, скорее всего, очень быстро наткнемся на то, что он работает очень плохо и сбоит при определении сдвигов уже порядка 1-2 пикселей (по крайней мере так было у меня). Тогда обратимся к готовым реализациям, например, в OpenCV. Там он реализован различными методами и совершенно непонятно, чем аббревиатура PyrLK лучше или хуже обозначения Farneback или чего-нибудь в этом роде, да и придется поразбираться со смыслом параметров, которых в некоторых реализациях очень много. Причем, что интересно, эти алгоритмы как-то работают, в отличие от того, что мы написали сами. В чем же секрет?
Читать полностью »
Oriense. Разработка устройств помощи слепым и слабовидящим
2013-10-27 в 12:47, admin, рубрики: android, computer vision, linux, odroid, Блог компании Oriense, обработка изображений, разработка, метки: android, computer vision, linux, odroid, АРМ История проекта уходит корнями в далекий 2006 год.
Тогда в питерский НИИ Робототехники и технической кибернетики (ЦНИИ РТК) обратился активный член общества слепых с предложением создания устройства помощи слепым и слабовидящим.
Один из основателей нынешнего Oriense тогда заведовал отделом телевизионных информационно-измерительных систем, который занимался в том числе зрением роботов и разрабатывал свою стереокамеру. На ней устройство и решили базировать: носимый компьютер обрабатывает информацию от двух камер и двух УЗ-сонаров и выдает подсказки в наушники с помощью голосового синтезатора.
Алгоритм seam carving для изменения размера изображения
2013-06-17 в 17:43, admin, рубрики: computer vision, image processing, Matlab, Алгоритмы, математика, обработка изображений, метки: computer vision, image processing, Matlab Seam carving это алгоритм для изменения размера картинки, сохраняющий важный контент и удаляющий менее значимый. Он был описан в статье S. Avidan & A. Shamir. Он дает лучший результат, чем обычное растягивание изображения ввиду того, что не меняет пропорций значимых элементов изображения. Две фотографии ниже демонстрируют работу алгоритма – исходное изображение имеет размер 332x480, в то время как модифицированное seam carving'ом 272x400.
В данной статье я опишу работу алгоритма используя псевдокод и код Matlab. Оригинал статьи, написанный мной на английском доступен тут, исходный код на гитхабе.
Читать полностью »
Команда Джеффри Хинтона победила в конкурсе компьютерного зрения ImageNet с двукратным преимуществом
2013-06-14 в 14:09, admin, рубрики: computer vision, machine learning, Алгоритмы, искусственный интеллект, обработка изображений, метки: computer vision, machine learningКонкурс ImageNet состоялся в октябре 2012 года и был посвящен классификации объектов на фотографиях. В конкурсе требовалось распознавание образов в 1000 категорий.
Команда Хинтона использовала методы deep learning и сверточных нейронных сетей, а также инфраструктуру, созданную в Google под руководством Jeff Dean и Andrew Ng. В марте 2013 года Google инвестировал в стартап Хинтона, основанный при университете Торонто, тем самым получив все права на технологию. В течение шести месяцев был разработан сервис поиска по фотографиям photos.google.com.
Читать полностью »
Распознавание образов с OpenCV: Контуры против Haartraining
2013-03-29 в 10:36, admin, рубрики: computer vision, opencv, Алгоритмы, классификация, Песочница, распознавание изображений, распознавание образов, распознавание объектов, метки: computer vision, opencv, каскад., классификация, распознавание изображений, распознавание образов, распознавание объектов Привет! Передо мной встала задача реализовать распознавание дорожных знаков с видео потока. Так как с задачами подобного рода я раньше не сталкивался, то процесс реализации само собой предполагает предварительное долгое «курение» форумов и безжалостные издевательства над чужими примерами. Поэтому решил собрать всё прочитанное в одном месте для будущих поколений, а так же, в ходе повествования, задать Хабру несколько вопросов.
Читать полностью »