Учебный план освоения компьютерного зрения за 8 недель
Преобразования лиц в FaceApp? Для компьютерного зрения есть задачи и поинтереснее. С чего начать и как продолжить – поможет наш учебный план.
Данные для компьютерного зрения
Без компьютерного зрения (англ. computer vision) нынче никуда. Посредством технического зрения могут быть автоматизированы рутинные задачи везде, где есть зрительная информация. Средства computer vision во многих областях уже позволяют добиться лучших результатов, чем человек. Не только по продуктивности, но и, например, относительно качества распознавания объектов.
Профессионалы области востребованы на рынке труда, и сами формируют его, организуя свои компании. Повышается разрешение фото- и видеокамер, растет количество визуальных данных, растут и вычислительные возможности. Компьютеры справляются со всё более трудными задачами распознавания, фильтрации, преобразования и генерации изображений.
Представленный учебный план направлен на то, чтобы вы начали использовать известные решения в области компьютерного зрения для претворения в жизнь собственных идей.
Computer vision – это набор технологий, позволяющих распознавать и интерпретировать визуальную картину мира. Данные – это не только изображения и видео (последовательности кадров), но и трёхмерные объекты. Работа с 3D-сценами особенно актуальна для виртуальной и дополненной реальностей, автопилотов.
Популярные задачи компьютерного зрения
Чтобы лучше представлять решаемые с помощью компьютерного зрения проблемы, приведём несколько примеров:
- Сегментация изображений
- Детектирование объектов
- Классификация изображений
- Отслеживание движущихся объектов во времени
- Распознавание лиц
- Оптическое распознавание символов
- Генерация изображений
Данный список, конечно, не исчерпывающий. С другими примерами вы встретитесь, занимаясь с перечисленными ниже материалами.
Стоит понимать, что эволюция технологий компьютерного зрения не всегда была связана с искусственным интеллектом и глубоким обучением. Методы компьютерного зрения развиваются более полувека. Но сейчас computer vision часто воспринимается как одна из составляющих искусственного интеллекта.
Действительно, развитие нейросетей повысило интерес к области компьютерного зрения. Однако традиционные методы позволяют результативно реорганизовать данные до того, как они передаются на входной слой нейронной сети. А многие кейсы эффективно решаются и без применения глубокого обучения. Поэтому не пренебрегайте освоением классических идей компьютерного зрения.
Что нужно знать до того, как приступить к учебному плану
Предварительно необходимый багаж знаний следующий:
- Уверенное владение синтаксисом Python (наша подборка ресурсов, для конкретики подойдёт курс на edX).
- Математический анализ (иллюстративный видеокурс).
- Линейная алгебра (иллюстративный видеокурс).
Относительно математики достаточно такого объёма знаний, чтобы вы понимали шпаргалки по матанализу и алгебре.
Инструменты, которые нужно освоить в первую очередь:
- Python
- Библиотека OpenCV
- Фреймворк глубокого обучения TensorFlow
И у OpenCV, и у TensorFlow есть интерфейсы Python.
Учебный план
Можно выделить 4 уровня видения графических данных:
- Низкоуровневое видение. Предварительная обработка изображений, то есть преобразование одного изображения в другое. Например, изменение яркости или чёрно-белое представление.
- Среднеуровневое видение. Вычленение особенных свойств, признаков. Например, выделение окружностей или других линий. Базовая сегментация.
- Совмещение различных видов одного предмета. Например, множество представлений одного объекта или его выделение из трёхмерной сцены.
- Высокоуровневое видение. Анализ обнаруженных атрибутов. Детектирование и классификация объектов. Современное глубокое обучение.
Очевидно, что там, где одному достаточно и недели, другой справится лишь за месяц. Всё предопределяется свободным временем и опытом. Для удобства образовательные блоки мы будем далее называть неделями. Каждому из перечисленных уровней преобразования данных в учебном плане отвечают две недели обучения.
Неделя 1. Базовые методики работы с изображениями
Первая неделя посвящена техническим основам, что вы наверняка использовали, если работали с графическими редакторами вроде Adobe Photoshop:
- Изменение освещённости: яркость, контраст, гамма, выравнивание гистограммы.
- Модификация цветовой палитры: ч/б-преобразование, оттенки серого, насыщенность, баланс белого.
- Линейная фильтрация: размытие и зернистость, детектирование краёв, конволюция.
- Нелинейная фильтрация: медианный и билатеральный фильтры.
- Дизеринг: квантизация изображений, алгоритм Флойда–Стейнберга.
Достаточные сведения о подобных процедурах можно получить из YouTube-плейлиста "Древние секреты компьютерного зрения". В особенности с первой по пятую лекции. В качестве учебника советуем книгу Ричарда Шелиски "Компьютерное зрение: Алгоритмы и приложения". Пока будет достаточно третьей главы.
Чтобы закрепить полученные знания, попробуйте себя в преобразовании изображений с помощью OpenCV. На сайте есть уйма пошаговых электронных пособий, руководствуясь которыми можно во всём разобраться.
Неделя 2. Отслеживание движения и анализ оптического потока
Под оптическим потоком подразумевается последовательность изображений объектов, получаемая в результате перемещения наблюдателя или предметов относительно сцены. Для процессов обработки движения объектов подойдёт курс по компьютерному зрению на Udacity, в особенности урок 6. В дополнение к нему полезно посмотреть восьмое видео из упомянутого YouTube-списка и лекцию об оптическом потоке и трекинге. Пригодится и учебник Шелиски, разделы 10.5 и 8.4.
В качестве учебного проекта разберитесь с тем, как с помощью OpenCV отслеживать объект в видеофрейме.
Неделя 3. Базовая сегментация
Сегментация предполагает разбиение сцены на совокупность составляющих сегментов (суперпикселей). Алгоритмы сегментации обычно направлены на выделение значимых элементов. Так, преобразование Хафа позволяет найти круги и линии. Настоящим вопросам посвящены две видеолекции. В той же книге о сегментации повествуют разделы 5.2-5.4.
Проект этой недели – вычленение из снимков дороги линий, разделяющих полосы движения. Бесспорно, подобные задачи чрезвычайно важны для компьютерного зрения самоуправляемых электромобилей.
Неделя 4. Фитинг
Нередко необходимо найти такие параметры, что в компактной форме опишут имеющиеся зрительные данные. Это позволяет выделять из оптического потока ограниченное количество информации, с которой можно оперативно работать. Для различных данных требуется специфичный подход к фитингу и свои алгоритмы. Посмотрите видео 6 и 7 из этого YouTube-плейлиста. В книге понадобятся пункты 4.3.2 и 5.1.1.
В качестве задания для самостоятельной работы проанализируйте проблему определения координаты места схождения линий на горизонте перспективы.
Неделя 5. Совмещение изображений, полученных с разных точек осмотра
Что можно сделать при наличии нескольких изображений одного и того же предмета, снятого с разных позиций? К примеру, собрать панораму или трёхмерное представление объекта. Потребуется научиться находить локальный инвариант, преобразовывать и выравнивать изображения, разбираться в гомографии, эпиполярной геометрии и стереометрии.
Если такой набор слов пугает, есть и YouTube-плейлист, и сопроводительное чтение. Для проекта можно взять собственные данные. Например, сфотографировать с разных сторон что-то из кухонной утвари и сделать в OpenCV из альбома плоских изображений 3D-объект.
Неделя 6. Трёхмерные сцены
Итак, умея создавать 3D-объекты из плоских изображений, можно попробовать создать и трёхмерную реальность. Или дополнить имеющуюся. Для этого полезно целиком пройти курс по стереозрению и трекингу на Coursera, а также девятое видео из данного списка.
https://youtu.be/YLS9bWek78k
В качестве проекта попытайтесь реконструировать сцену или сделать трекинг объекта в трехмерном пространстве.
Неделя 7. Распознавание объектов и классификация изображений
Как говорилось выше, в качестве фреймворка для глубокого обучения удобно использовать TensorFlow. Это один из наиболее популярных фреймворков, поэтому вы без труда отыщете достаточно примеров. Для начала работы с изображениями в TensorFlow пройдите этот туториал. Далее, пользуясь ссылками, рассмотрите следующие темы:
- Семантическая сегментация: категоризация объектов, сцен, деятельности
- Обнаружение объектов (non max подавление, скользящие окна, ограничивающие боксы и якоря, подсчёт элементов)
- YOLO и Darknet, нейросети для предложения областей (region proposal networks)
- Контролируемые алгоритмы классификации (обучение с учителем)
- Визуальные атрибуты
- Оптическое распознавание символов
- Детектирование лиц
В качестве проекта создайте в TensorFlow нейросеть, определяющую по изображению марку автомобиля или породу собаки.
Неделя 8. Современное глубокое обучение
Хотя нейросетевые технологии и компьютерное зрение эволюционировали независимыми путями, сейчас глубокое обучение представляется одним из стандартов обработки зрительной информации. Современное состояние вопроса раскрывают лекции Стенфордского курса, а также видео 19-20 этого плейлиста. Если захотите большего, по теме Deep Learning у нас тоже есть учебный план.
Проектом заключительной недели можно взять построение генеративно-состязательной нейросети для детектирования лиц. Или любую другую идею, которая наверняка появится к этому времени. У вас будет уже достаточно знаний, чтобы подступиться к её воплощению.
Мы что-то упустили? Напишите об этом в комментариях ;)