«

»

May 03

Практическое введение в компьютерное зрение

как научить компьютер читать

как научить компьютер читать

Компьютерное зрение?!

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

Компьютерное зрение (иногда его величают машинным) – это набор технологий и алгоритмов из уймы связанных и не очень областей объединенных одной целью – научить бездушный компьютер обозревать окружающую действительность с некоторой долей оразумения. Для того чтобы компьютер смог распознать на фотографии любимую бабушку Агафью Петровну, вам необходимо освоить всего навсего: методы машинного обучения, основы обработки изображений, принципы распараллеливания вычислений, немного математики – линейную алгебру, геометрия, дифуры и тервер (для верности можно добавить к списку оптику, физику и теорию обработки сигналов). Да, самое время опускать руки (и разминать голову).

На практике, вот это все разом необходимо далеко не всегда, так как зачастую небольшие упрощения позволяют махом отбросить большую часть сложностей (или добавить еще). Однако, для того чтобы осознанно использовать алгоритмы компьютерного зрения для конкретных практических задач – крайне желательно ориентироваться в плюсах-минусах методов и быть в курсе “state of the art” – последних исследований.

компьютерное зрение - сплав многих наук

компьютерное зрение – сплав многих наук

Эдакий массивный кус знаний не так-то просто переварить, а потому, в этой статье я попытался сгруппировать набор ссылок на всякие полезности для планомерного изучения темы. Данные заметки ни в коем случае на претендуют на всеобъемлемость представленной информации, однако могут послужить кратким справочником и отправной точкой для детального изучения, именно с точки зрения наискорейшего практического применения.

Вся информация разбита на несколько статей-лекций, где вся информация ужата на полтораста строк по каждой теме. Да, именно так будем давить на лень. Для того, чтобы вкратце обозначить основные принципы, актуальные сейчас методы компьютерного зрения и располезные ссылки – этого более чем достаточно. Желающим более фундаментальных и эпичных по объемам манускриптов – милости просим в конец данной статьи, в подраздел используемые материалы (в каждой статье ссылки тоже водятся в изобилии, но, как правило, они сугубо по упомянутой теме).

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

Компьютерное зрение – практическое введение:

01 – изображение в компьютерном зрении
02 – (пред)обработка изображений
03 – features – локальные особенности – за что зацепиться взгляду
04 – поиск преобразования между особыми точками и немного моделирования
05 – машинное обучение для классификации изображений

Использованные материалы

Видео-лекции

на русском:
Видео-лекции спецкурсов ВМК МГУ “Введение в компьютерное зрение” и “Дополнительные главы компьютерного зрения”, за авторством Антона Конушина (Anton Konushin):
http://www.lektorium.tv/course/?id=22847 – первая часть на лекториуме.
http://www.youtube.com/playlist?list=PLbwKcm5vdiSYTm87ntDsYrksE4OfngSzY – все части на ютубе.
все прекрасно смотрится на удвоенной скорости.
http://moodle.graphicon.ru/course/view.php?id=4 – Вспомогательные материалы по курсам.
http://www.slideshare.net/ktoshik – презенташки к лекциям можно найти там.
UPDATE 23.11.2013
http://habrahabr.ru/company/yandex/blog/203136/– лекции Яндекса по компьютерному зрению
https://sites.google.com/site/cvnnsu/materialy-lekcij – материалы спец-курса “Компьютерное зрение” ННГУ им Н.И. Лобачевского

на английском:
Курс “Введения в компьютерное зрение” университета Флориды от профессора Dr. Mubarak Shahтынц. Ооочень разжевано.
Курс “Цифровая обработка изображений” Харагпурского университета (Индия) – детально и математично разжеваны основные методы низкоуровневой обработки – http://freevideolectures.com/Course/2316/Digital-Image-Processing-IIT-Kharagpur
Нейронные сети –
http://nptel.iitm.ac.in/video.php?subjectId=117105084
Математические основы компьютерного зрения на курсере от Prof. Malikтут.
Видео по использованию OpenCV для конкретных задач – http://www.youtube.com/user/18F4550videos

Литература:
Компьютерное зрение Шапиро, Стокман – основательная, относительно современная и единственная, мне известная, годная книга по данной теме на русском.

Фундаментальные труды, доступные для свободного скачивания:

http://szeliski.org/Book/Computer Vision: Algorithms and Applications – Richard Szeliski, Microsoft Research

http://www.computervisionmodels.com/Computer Vision: Models, Learning, and Inference Simon J.D. Prince

http://programmingcomputervision.com/Programming Computer Vision with Python by Jan Erik Solem

_Официально_, доступных для скачивания не видел, но тоже заслуживают внимания:
Digital Image Processing – Rafael C. Gonzalez Richard E. Woods
Computer Vision: A Modern Approach – Forsyth
Introduction to Machine Learning – Alpaydin

Библиотеки содержащие алгоритмы компьютерного зрения

http://opencv.org/ – первое, что приходит на ум в качестве общедоступного инструментария для погружения в предметную область. Часть алгоритмов перенесена на GPU. С учетом наличия готовых рецептов использования (книги на амазоне\в интернетах – Learning OpenCV, Mastering OpenCV) – идеальна для новичков.
http://www.vlfeat.org/ – алгоритмы компьютерного зрения на чистом C, есть интерфейсы для матлаба.
http://www.simplecv.org/ – библиотека на c/c++ построенная поверх OpenCV, основная цель проекта – предоставить упрощенный интерфейс ко всем алгоритмам. Есть готовое пособие для тех, кто совсем не в теме – “Practical Computer Vision with SimpleCV”.
http://intopii.com/ – большущий фреймворк на c++ для машинного обучения и анализа изображений, есть javacript’овый апи.
ViSP – c++ библиотека с алгоритмами компьютерного зрения (преимущественно в области отслеживания-треккинга и наблюдение)
SHARK – Machine learning library – C++ библиотека алгоритмов машинного обучения, выгодно отличается от альтернатив наличием больше нигде не реализованных алгоритмов
OpenVIDIA : Parallel GPU Computer Vision – алгоритмы компьютерного зрения на GPU (CUDA)
http://scikit-learn.org – методы машинного обучения на питоне
http://cs.unc.edu/~ccwu/siftgpu/ – имплементация алгоритма SIFT на gpu.
MATLAB (toolbox + sample) – наверное, самый простой (и затратный) способ попробовать алгоритмы компьютерного зрения:
http://www.mathworks.com/products/image/
http://www.mathworks.com/products/computer-vision/

Материалы по теме:

http://courses.graphicon.ru/ – учебные материалы (на русском) по курсам Обработки изображений и Компьютерного зрения
презентации по библиотеке OpenCV
Курс лекций по компьютерному зрению от курсеры – https://www.coursera.org/course/computervision (на момент публикации не активен)
Запись выступлений с конференции по компьютерному зрению 2012 года Франция

Материалы англоязычных курсов от ведущих вузов по компьютерному зрению:
CSE/EE486 Computer Vision I
CS395T: Visual Recognition
6.870 Grounding Object Recognition and Scene Understanding
(гуглить по этим названиям и искать полезные крупицы знания)
Washington CSE 576 (Graduate Computer Vision)
Trevor Darrell’s CS 280 Computer Vision class at Berkeley
Antonio Torralba’s 6.869 Advances in Computer Vision class at MIT
Michael Black’s CS 143 Introduction to Computer Vision class at Brown
Kristen Grauman’s CS 378 Computer Vision class at UT Austin
Alyosha Efros’ 15-463 Computational Photography
16-721 Learning-Based Methods in Vision classes at Carnegie Mellon
Pascal Fua’s CS-442 Introduction to Computer Vision class at EPFL

http://visionserver.lems.brown.edu/engn2910x/lectures.php – лекции в pdf формате

http://homepages.inf.ed.ac.uk/rbf/CVonline/ – структурированная и необъятная информация по компьютерному зрению

Библиографии по компьютерному зрению:
http://forums.udacity.com/questions/1033058/free-book-computer-vision-models-learning-and-inference
http://www.compvision.ru/wiki/
http://www.computervisiononline.com/books

http://www.cvpapers.com/rr.html – пространный список библиотек, с реализованными методами компьютерного зрения (computer vision algorithm implementation)
http://www.kernel-machines.org/software – список библиотек с алгоритмами машинного обучения, применимых для задач компьютерного зрения

4 comments

Skip to comment form

  1. Iryna

    Здравствуйте!
    Спасибо вам большое за отличную подборку материала.
    Постоянное обновление и дополнение еще к тому же.
    Очень не легко найти материал по этим темам бывает. у меня есть что-то похожее на немецком языке.
    но не думаЮ, что это здесь уместно.
    Но если надо напишу.

    1. admin

      С учетом того, сколько заготовок для статей пылится недооформленными в черновиках, мне прям совестно читать про “постоянное обновление материала” 🙂
      Если не сложно – валяйте на немецком – добавлю в пост.

  2. cv-user

    Eсть такая программа Find Object, основанная на OpenCV.
    А как правильно перевести это название, с учетом механизмов её работы ?
    Поиск объекта, отслеживание о., распознавание о., обнаружение .. ?

    1. admin

      с учетом механизмов работы я бы перевел как примеры использования различных классификаторов из опенсв 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>