Как сделать компьютерное зрение

Добавил пользователь Евгений Кузнецов
Обновлено: 05.09.2024

Кейс: Хабиб vs МакГрегор или Распознавание лиц на Python

Учимся представлять фотографии в виде матриц, обрабатывать их, детектить лица и натравливать на них нейронку.

Чем разработчику заняться в промышленности: компьютерное зрение, машинное обучение, IoT

Разработка — это не только про улучшение жизни за счёт смартфонов и прочих атрибутов обычного человека в городе. Почитайте, какие IT-решения сейчас востребованы в промышленности и как можно своими руками их протестировать.

Шпаргалка по OpenCV — Python

Библиотека компьютерного зрения и машинного обучения с открытым исходным кодом. В неё входят более 2500 алгоритмов, в которых есть как классические, так и современные алгоритмы для компьютерного зрения и машинного обучения. Эта библиотека имеет интерфейсы на различных языках, среди которых есть Python (в этой статье используем его), Java, C++ и Matlab.

На прошлом уроке я рассказал вам, что такое искусственный интеллект и нейронные сети. Но ИИ – это не только нейронные сети. Существует еще очень много разных методов и подходов. Один из них – это компьютерное зрение. Как вы, наверное, догадались, эта технология применятся для того, чтобы найти на изображении определенные объекты, как то осмыслить его. Задача, на самом деле не тривиальная. Но и не такая уж сложная, как кажется на первый взгляд. Чтобы это доказать, разберем простую задачу: «На чёрном фоне есть несколько белый фигур, прямоугольники и треугольники:

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

И так, как будем решать? Очевидно, нам надо каким-то волшебным образом сосчитать углы. У треугольника их три, у прямоугольника – четыре. Таким образом, мы их различим. Но вся проблема в том, что картинка у нас растровая. Поэтому, сначала нам надо перевести ее в какой-нибудь вид, более удобный для того, чтобы сосчитать у фигур углы.

Хорошую идею предлагает в [1] Гонсалес. Суть этой идеи состоит в том, что у фигуры есть центр масс. А каждая точка фигуры задана в полярных координатах относительно этого центра масс. Напомню, что полярные координаты, в отличи от декартовых – это расстояние от центра и угол поворота радиуса-вектора. Лучше всего это иллюстрирует следующая картинка:

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

Данное изображение у нас бинарное. Оно имеет только два цвета – черный и белый. Если мы возьмем произвольную точку, то мы точно можем знать, относиться ли она к фигуре или к фону. Если эта точка относится к фигуре, мы можем проверить, сколько ее соседей так же имеют белый цвет. Если 8 – то эта точка внутри фигуры, если меньше – то эта точка принадлежит контуру. Зная декартовы координаты точки контура и зная координаты центра масс фигуры, мы можем перевести эти координаты в полярные. Вопрос только в том, как определить центр масс фигуры.

Зная координаты всех точек фигуры, ее центр масс вычислить нетрудно. Для этого можно воспользоваться следующими формулами:

где A– количество пикселей, принадлежащих фигуре; I(x,y) – признак принадлежности точки к фигуре, 1 – если принадлежит, 0 – если не принадлежит; m – ширина изображения, n – высота изображения.

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

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

Итак, подытожим. Мы можем решить задачу по распознаванию фигур в идеальном случае, проделав следующие шаги:

1. Найти все белые точки и их принадлежность к отдельной фигуре.

2. Найти контру и цент масс каждой фигуры.

3. Посчитать контур в полярных координатах.

1. Р Гонсалес, Р. Вудс. Цифровая обработка изображений. Перевод с английского под редакцией П. А. Чочина, Техносфера, Москва, 2005, 1071 с.

Не секрет, что ИИ проник во многие сферы жизни. Однако мы до сих пор не всегда понимаем, когда взаимодействуем с ним, и какие методы он использует. Как правило, в инструментах, связанных с фото или видео, применяется компьютерное зрение.

За последние годы компьютерное зрение стало основным драйвером ИИ. Технология широко используется во многих сферах, в том числе производстве, онлайн-торговле, сельском хозяйстве, автомобилестроении и медицине.

По оценкам, к 2022 году мировой рынок компьютерного зрения вырастет до $48,6 млрд. Еще в 2015 году он составлял всего $6,6 млрд.

История компьютерного зрения в целом повторяет историю ИИ: медленный старт, полный технических препятствий, за ним — взрывной рост, подкрепленный огромными объемами данных, после — быстрое распространение, и, наконец, озабоченность по поводу предвзятости и использования технологии. Разберемся, как оно работает, как используется, с какими проблемами справляется и какие ему еще предстоит решить.

Как работает компьютерное зрение

Технология позволяет компьютерам выполнять разнообразные задачи.

  • Сегментация изображений (разделяет картинку на части и изучает каждую) и распознавание образов (находит повторы визуальных стимулов между изображениями).
  • Классификация объектов (сортирует объекты, обнаруженные на изображении), отслеживание объектов (находит и отслеживает движущиеся объекты на видео) и обнаружение объектов (ищет и идентифицирует конкретные объекты на изображении).
  • Распознавание лиц — усовершенствованная форма обнаружения объектов, которая может находить и идентифицировать человеческие лица.

Как упоминалось выше, компьютерное зрение — подраздел машинного обучения, и оно аналогичным образом использует нейросети, чтобы сортировать огромные объемы данных, пока не поймет, на что смотрит.

Конкретный пример использования компьютерного зрения — задача на разделение изображений мороженого и пиццы с пепперони. Система искусственного интеллекта получает множество фотографий с этими продуктами. Затем компьютер пропускает изображения через несколько уровней обработки, из которых состоит нейросеть, чтобы шаг за шагом отличить мороженое от пиццы.

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

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

Развитие компьютерного зрения

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

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

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

  • Появилась технология компьютерного сканирования, которая впервые позволила машинам оцифровывать изображения, а затем — превращать двумерные изображения в трехмерные формы.
  • В 1974 году создан алгоритм распознавания объектов, который мог воспринимать текст
  • К 1982 году уже начало формироваться компьютерное зрение. В том же году один исследователь усовершенствовал иерархию обработки, а другой разработал раннюю версию нейросети.

К началу 2000-х гг. распознавание объектов вызывало особенно большой интерес. В 2010 году был опубликован ImageNet, набор с миллионами размеченных изображений, который дал толчок к развитию компьютерного зрения. Внезапно любой желающий мог получить доступ к огромному количеству готовых к использованию данных.

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

Предвзятость и проблемы компьютерного зрения

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

сэлфи, группа молодых людей с телефоном

Фото в тексте: marvent / Shutterstock

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

Например, известно, что технология распознавания лиц позволяет неверно идентифицировать темнокожих, но ритейлеры все чаще используют ее в магазинах. Полиция США также широко ее применяет, что стало поводов для протестов и законодательного регулирования в нескольких городах и штатах.

Правила в целом являются новой проблемой для компьютерного зрения (и ИИ в целом). Ясно, что их будет больше (особенно если большая часть мира последует по пути Европейского союза), но пока точно неизвестно, как будут выглядеть такие правила. Поэтому исследователям и компаниям пока неясно, на что ориентироваться в данный момент.

Компьютерное зрение также сталкивается с некоторыми техническими проблемами. Его ограничивает оборудование, в том числе камеры и датчики. Кроме того, системы компьютерного зрения очень сложно масштабировать. И, как и все типы ИИ, они требуют огромных вычислительных мощностей (что дорого) и данных.

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


Компьютерное зрение (Computer Vision, CV) — это область машинного обучения и компьютерных наук, помогающая вычислительным машинам понимать мир путем распознавания визуальных образов и обнаружения объектов, как это делают люди.

Технология является одним из подразделов искусственного интеллекта.


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

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

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


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

Где используется компьютерное зрение?

На сегодня методы компьютерного зрения используются во многих областях.

Безопасность

Приложения с компьютерным зрением позволяют в режиме реального времени обрабатывать потоки с камер видеонаблюдения, распознавать объекты, определять вторжение в запретные зоны, автоматически пропускать автомобили по номерному знаку и многое другое.

Распознавание лиц

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

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

Беспилотные автомобили

Набор камер и алгоритмов позволяет робомобилю ориентироваться в пространстве, различать движущиеся и статичные объекты, реагировать на их внезапное появление. На сегодня множество автопроизводителей, среди которых GM, Toyota, BMW и другие активно работают над созданием полностью автономного транспорта.

Значительных успехов добилась компания Tesla, выпустив программы помощи водителю Autopilot и Full Self-Driving. Они позволяют автомобилю контролировать скорость, распознавать светофоры, дорожные знаки, другие автомобили, самостоятельно поворачивать на перекрестках и перестраиваться из полосы в полосу. При этом вмешательство водителя не требуется, однако он должен присутствовать за рулем.

Робототехника

Аналогично беспилотным автомобилям, компьютерное зрение помогает роботам ориентироваться в пространстве, определять объекты и препятствия, а также взаимодействовать с предметами и людьми.

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

Дополненная реальность

AR-технологии активно используют алгоритмы компьютерного зрения для распознавания объектов реального мира. Это позволяет определять поверхности и их размеры, чтобы 3D-модели могли правильно на них расположиться.

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

Распознавание движений и жестов

Алгоритмы компьютерного зрения также нашли применение в кинопроизводстве, создании видеоигр, распознавании паттернов поведения посетителей магазина, анализе активности спортсменов и прочее.

Восстановление и обработка изображений

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

Какие проблемы в области компьютерного зрения?

На сегодня разработчики алгоритмов компьютерного зрения сталкиваются с рядом трудностей. Одна из них — это малое количество исходных данных.

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

Например, разработчику алгоритма распознавания видов посевных культур на сельскохозяйственных полях не всегда удается самостоятельно собрать необходимые фото-, видеоматериалы для обучения высокоточного алгоритма. Ему приходится пользоваться данными из открытых источников или полученными от третьих лиц.

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

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

В апреле 2021 года ученые из Массачусетского технологического института выяснили, что 5,8% изображений одного из самых популярных тестовых наборов данных ImageNet подписаны неправильно. Среди самых распространенных ошибок — неправильные подписи объектов: на фотографиях гриб может быть отмечен как ложка, а лягушка — кошкой.

Решить эту проблему могут граничные вычисления, или edge computing. Это парадигма, согласно которой обработка данных происходит непосредственно в местах их сбора. Производить соответствующие вычисления можно как на одноплатных компьютерах вроде Raspberry Pi или Nvidia Jetson, так и видеокамерах, оборудованных вычислительным процессором и ИИ-алгоритмами.

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

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

Какие тренды в области компьютерного зрения?

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

Например, проект This Person Does not Exist использует GAN для генерирования фотореалистичных изображений людей, которых на самом деле не существует. По схожему принципу работают и другие проекты: алгоритм по созданию ненастоящих котов This Cat Does not Exist, или кроссовок — This Sneaker Does not Exist.

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

Стартапы из области генерирования данных уже успешно реализовывают данную концепцию. В октябре 2021 года Gretel.ai привлекла $50 млн на поддержку платформы для генерации синтетических датасетов. В июле 2021 года Британская компания Mindtech получила $3,25 млн на развитие сервиса для обучения алгоритмов компьютерного зрения с помощью сгенерированных данных.

Другим важным направлением в области является моделирование 3D-сцен. Для реализации данной задумки разрабатываются специальные алгоритмы, которые, используя серию фотографий с разных ракурсов, способны воссоздать сцену в трехмерном пространстве.

Эту технологию активно используют в строительстве, робототехнике, анимации, дизайне интерьеров и военном деле.

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

Какова роль компьютерного зрения в метавселенной?

Для метавселенной компьютерное зрение может оказаться одной из главных технологий: начиная от задач в области виртуальной и дополненной реальностей и заканчивая распознаванием объектов, людей и пространств.

Компания Meta (ранее Facebook) во время мероприятия, посвященного ребрендингу, показала реалистичные аватары, среду для их существования, а также нейроинтерфейс, позволяющий ими управлять. При их создании использовались, в том числе и технологии компьютерного зрения.

На конференции Ignite 2021 корпорация Microsoft продемонстрировала свое видение метавселенной. Компания представила инструмент для совместной работы Mesh for Teams для VR-гарнитур, смартфонов, планшетов и ПК.

На осенней конференции GTC 2021 производитель чипов NVIDIA анонсировал платформу Omniverse Avatar для создания интерактивных трехмерных персонажей. Она объединяет компьютерное зрение, обработку естественного языка и рекомендательные системы.

Какие угрозы несет компьютерное зрение?

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

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

Мошенники могут использовать дипфейки для создания фальшивых порнографических видео, выступлений политиков и других знаменитостей.

В 2017 году пользователь Reddit с ником DeepFake опубликовал несколько поддельных видеороликов для взрослых с использованием лиц таких знаменитостей, как Галь Гадот, Скарлетт Йоханссон, Тейлор Свифт и Кэти Перри.

В том же году дипфейки стали чаще использовать для подмены политиков: в интернете появились ролики, где лицо президента Аргентины Маурисио Макри заменили на Адольфа Гитлера, а канцлера Германии Ангелы Меркель — на Дональда Трампа.

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

В 2019 году темнокожий житель Нью-Джерси провел в тюрьме 10 суток из-за ошибки распознавания лиц. С подобными проблемами сталкивались и другие афроамериканцы в других городах США.

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

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

Читайте также: