Справочник Инженер компьютерного зрения
3 ноября 2023 г.Что такое компьютерное зрение? Вы также можете встретить этот термин на английском: Computer Vision, или CV. Это одна из областей Machine Learning (ML, от англ. — машинное обучение), науки об обучении алгоритмов на основе данных. Машинное обучение помогает распознавать паттерны (повторяющиеся элементы) на основе имеющихся данных и алгоритмов.
Что это значит?
Компьютеры, а точнее, умные алгоритмы и нейронные сети, уже сегодня могут распознавать лица и эмоции людей, расшифровывать печатный и рукописный текст на фотографии, а также «узнавать» с некоторой вероятностью объекты в кадре: например, болезни на КТ-снимках или редких животных, снятых скрытой камерой в заповеднике.
Как и мозг человека, нейронные сети сравнивают новую информацию с теми объектами, которые им уже знакомы. Это чем-то напоминает процесс обучения младенцев. Когда они играют с развивающим конструктором из разных фигурок, то постепенно запоминают, как выглядит кубик, шарик, звёздочка и пирамидка.
Если дать ребёнку новый конструктор с фигурками других цветов и размеров, они всё равно смогут отличить пирамидку от шарика по схожим признакам. А если добавить конус и бублик, то ребёнок быстро запомнит и их особенности.
Важно понимать, что за искусственным интеллектом стоят не какие-то волшебники, а самые настоящие инженеры Data Science и экспериментаторы, которые работают с данными и решают разные прикладные задачи на благо людей.
Кстати, искусственный интеллект и машинное обучение не дают вам точный результат. Любой алгоритм лишь делает прогноз на основе тех данных, которые у него есть. Чем больше этих данных и чем они качественнее, тем лучше будет результат работы модели. Задача любого ML-разработчика или дата саентиста — так подобрать данные и создать такую модель машинного обучения, чтобы получать наиболее точные выводы и прогнозы.
Из чего же состоит работа специалиста по компьютерному зрению?
Так как в этой профпробе речь пойдёт о беспилотных автомобилях, то и пример будет соответствующий.
Есть два мира: мир реальный, в котором автомобиль двигается и «видит» объекты, записывает данные. А есть мир «кабинетный», где инженеры разбирают записанные данные и учат алгоритмы. И больше всего специалисты трудятся именно за компьютерным столом.
Всё начинается с камер. Нужно подобрать объектив и разрешение камеры, понять, нужна ли подсветка ночью, как эти камеры выставить на автомобиле. Затем подключить их и другие сенсоры (радары, лидары и пр.) к программному обеспечению.
Затем нужно совместить данные с камер с геопозицией, скоростью автомобиля и другой информацией, которая сделает машину «умной» и беспилотной.
Потом, в зависимости от задачи, нужно собрать данные. Например, сделать выборку дорожных знаков в городе или заснять все светофоры. Можно собирать датасеты днём, ночью, с разных камер и т.д.
Дальше CV-инженер приступает к исследовательской работе. Он изучает полученные данные, изучает опыт коллег и пробует написать код модели, которую потом будет обучать.
После этого инженер приступает к разметке данных для обучения алгоритма, проверяет, как работает модель, ищет ошибки и пробует их решить, переписывает модель, проводит новые и новые тесты — пока не будет достигнут хороший результат.
Совершенствование алгоритмов для разных задач, можно сказать, бесконечный процесс. И вся власть над этим процессом находится в руках у инженера машинного обучения.
Ну что, попробуем пройти профпробу?
Задание
В этой виртуальной пробе вы сможете попробовать себя в роли профессионала, который работает в инновационной области беспилотных автомобилей. Data Science, Computer Vision, Machine Learning — это термины, с которыми каждый день сталкивается этот специалист.
Основная задача: с помощью науки о данных создать алгоритм компьютерного зрения.
Вам предстоит разрабатывать и улучшать алгоритмы компьютерного зрения, которые помогут автомобилю «видеть» и анализировать окружающую среду. Вы разберётесь в видах сенсоров, попробуете себя в разметке данных, обучите и протестируете нейросеть, а затем оцените результат на дороге.
Часть 1. Сенсорная система
Сначала вам нужно определить и установить оборудование для беспилотного автомобиля.
Камеры — ключевой и самый дешёвый источник информации для беспилотного автомобиля. Камеры получают самые разные данные даже от одних и тех же объектов в дождь, снег, ясную погоду или ночью. Они видят знаки, дорожную разметку, светофоры и многое другое. Всё это обязательно используется в машинном обучении.
Радары — радиотехнические системы и устройства, позволяющие почти мгновенно, с хорошей точностью получать информацию о расстоянии до объектов и их скорости. Чаще всего располагаются по периметру автомобиля, в угловых точках.
Лидары — это лазерные локаторы, которые испускают волны оптического диапазона и регистрируют лазерные импульсы для создания отображения окружающей среды. Лидары получают данные не картинкой, как камера, а в виде объёмного «облака точек». Сегодня лидары встроены даже в некоторые смартфоны, что позволяет им использовать технологии дополненной реальности.
Основной бортовой компьютер — устройство, которое анализирует данные с датчиков и оценивает текущее состояние автомобиля и обстановки вокруг.
GNSS-приёмник — высокоточный датчик GPS. С точностью до 10 см может показать, где вы находитесь.
Часть 2. Разметка данных
Разметка данных — это процесс добавления тегов в сырые данные, чтобы показать модели машинного обучения целевые атрибуты, которые она должна предсказывать.
Пока звучит сложно, но работает это так: ML-инженер берёт кусочек данных, например, кадр с камеры автомобиля, и указывает, есть ли там какие-то важные для модели объекты и что это за объекты. Модель ещё не знает, как выглядит светофор, а как — знак «Уступи дорогу», и разметка помогает модели запомнить отличия между ними.
Таким образом, размеченные данные выделяют признаки (характеристики) данных, чтобы помочь модели анализировать информацию и идентифицировать паттерны для выполнения точных предсказаний на новых, относительно близких входящих данных.
Как пройти это задание?
Сначала вам необходимо нажать только на те изображения с камер, где есть светофоры и дорожные знаки.
Далее вам предстоит распределить данные по группам: нажимайте на объекты в пунктирных линиях и выбирайте, к какой группе их лучше отнести.
И наконец, чтобы алгоритм компьютерного зрения мог понимать, какой сейчас сигнал у светофора, нужно дать ему очень буквальные примеры. CV-инженер как бы говорит: «Вот, смотри, вот так выглядит зелёный сигнал, а так — красный».
Модель сможет на них «посмотреть», обучиться и в дальнейшем принимать решения в зависимости от цвета сигнала. Аналогичный процесс и для других данных: дорожных знаков, автомобилей и грузовиков, пешеходов и велосипедистов и так далее.
Часть 3. Обучение модели
Ваша модель будет построена на принципе решающих деревьев — так называется целое семейство моделей машинного обучения. Дерево решений представляет собой иерархическую древовидную структуру, состоящую из правила вида «Если …, то ...».
Решающие деревья хорошо описывают процесс принятия решения во многих ситуациях. Например, когда клиент приходит в банк и просит выдать ему кредит, то сотрудник банка начинает проверять условия:
Какой возраст у клиента? Если меньше 18, то отказываем в кредите, если больше, то продолжаем проверять параметры.
Какая зарплата у клиента? Если больше 50 тысяч рублей, то переходим к следующему шагу.
Есть ли у клиента другие кредиты? Если есть, то отказываем.
И так далее.
Или такая ситуация: вы хотите поиграть во дворе в футбол.
На улице солнечно? Если да, то нужно убедиться: достаточно ли тёплая температура воздуха? Вдруг за окном «мороз и солнце, день чудесный»…
Тепло, да? Тогда играть можно, а если нет, то лучше не надо, несмотря на солнце.
Но можно добавить и новую ветку в наше дерево: есть ли у вас тёплая одежда, чтобы не замерзнуть? Если да, то можно играть, а если нет… Ну, вы поняли!
Как пройти это задание?
Перетаскивайте блоки из левой части экрана на схему алгоритма. Обратите внимание: сначала в вашу модель попадают все данные о светофорах разом (входящий поток), а затем они распределяются по веткам в зависимости от условия.
Тестирование модели
Когда модель обучилась на тренировочном датасете, то есть на данных, которые вы разметили и «вложили» в модель, надо дать ей незнакомые (контрольные) данные для проверки качества.
Но тесты редко проходят успешно с первой попытки. Чем больше данных и чем дольше обучается модель, тем выше качество алгоритма.
Посмотрите на четыре изображения с результатами тестирования. На графике в области результата (выделена сиреневым) разница между точностью при обучении и точностью при тестировании должна быть менее 20%.
Это значит, что разница между зелёной и фиолетовой линиями по вертикальной оси должна быть менее 0,2.
Под это условие попадают варианты «Тест 2» и «Тест 3».
Часть 4. Поведение на дороге
Стоит заметить, что инженер компьютерного зрения не занимается написанием алгоритмов для всего беспилотного автомобиля. Его задача — научить камеру и датчики собирать и распознавать полезную информацию об окружающем мире.
Чтобы управлять машиной, нужно учитывать сотни параметров с разных сенсоров и писать программный код совсем другого уровня.
Но беспилотный автомобиль не мог бы существовать без способности видеть мир вокруг и умных алгоритмов, которые вы создаёте. Поэтому последним заданием этой профпробы станет небольшая проверка на логику: как должен вести себя беспилотник на дороге?
Ориентируйтесь на данные, которые получают камера и сенсоры, и выбирайте подходящий вариант ответа.
Если с поведением на дороге и правилами дорожного движения возникают трудности, используйте готовые ответы:
Продолжить движение
Продолжить движение
Плавно остановиться
Ждать, когда загорится зелёный и пешеход закончит переходить дорогу
Ну, вот и всё! Удачи вам в удивительном мире машинного обучения!