Назад в библиотеку

Что такое компьютерное зрение?

Автор: Ben Dickson
Автор перевода: Акушко Ю.С.
Источник: Ben Dickson, What is computer vision?

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

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

Если бы я попросил вас назвать объекты на картинке ниже, вы, вероятно, составили бы список таких слов, как «скатерть, корзина, трава, мальчик, девочка, мужчина, женщина, бутылка апельсинового сока, помидоры, салат, одноразовые тарелки…» недолго думая. Теперь, если бы я сказал вам описать картинку ниже, вы, вероятно, снова сказали бы: «Это картина семейного пикника» не задумываясь.

Источник: Depositphotos

Источник: Depositphotos

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

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

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

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

Приложения компьютерного зрения

Источник: Depositphotos

Источник: Depositphotos

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

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

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

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

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

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

У компьютерного зрения есть и другие, более тонкие приложения. Например, представьте интеллектуальную домашнюю камеру безопасности, которая постоянно отправляет видео вашего дома в облако и позволяет удаленно просматривать отснятый материал. Используя компьютерное зрение, вы можете настроить облачное приложение, чтобы оно автоматически уведомляло вас, если происходит что-то ненормальное, например, злоумышленник, скрывающийся у вашего дома, или что-то загорелось внутри дома. Это может сэкономить вам много времени, так как вы будете уверены, что на ваш дом постоянно смотрят зоркие глаза. Военные США уже используют компьютерное зрение для анализа и пометки видеоконтента, снятого камерами и дронами (хотя эта практика уже стала источником многих споров).

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

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

Эволюция компьютерного зрения

Источник: Depositphotos

Источник: Depositphotos

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

  1. Создание базы данных: нужно сделать отдельные изображения всех объектов, которые вы хотите отслеживать, в определенном формате.
  2. Аннотирование изображений: для каждого отдельного изображения вам нужно ввести несколько ключевых точек данных, таких как расстояние между глазами, ширина переносицы, расстояние между верхней губой и носом и десятки других измерений, которые определяют уникальные характеристики каждого человека.
  3. Захват новых изображений: затем нужно отснять новые изображения, будь то из фотографий или видеоконтента. А затем вам пришлось бы снова пройти процесс измерения, отмечая ключевые точки на изображении. Также нужно учитывать угол, под которым было сделано изображение.

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

Машинное обучение предоставило другой подход к решению проблем компьютерного зрения. Благодаря машинному обучению разработчикам больше не нужно вручную кодировать каждое правило в своих приложениях машинного зрения. Вместо этого они запрограммировали «функции», небольшие приложения, которые могли обнаруживать определенные закономерности на изображениях. Затем они использовали алгоритм статистического обучения, такой как линейная регрессия, логистическая регрессия, деревья решений или вспомогательные векторные машины (SVM), чтобы обнаруживать закономерности, классифицировать изображения и обнаруживать в них объекты.

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

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

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

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

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

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

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

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

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

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

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

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

Для алгоритма компьютерного зрения изображения по-прежнему представляют собой массивы цветных пикселей, которые можно статистически сопоставить с определенными описаниями. Если вы специально не обучите нейронную сеть на изображениях семейных пикников, она не сможет установить связь между различными объектами, которые она видит на фотографии. Даже при обучении сеть будет иметь только статистическую модель, которая, вероятно, пометит любую картинку с большим количеством травы, несколькими людьми и скатертями как «семейный пикник». Он не знает, что такое пикник в контексте. Соответственно, он может ошибочно классифицировать фотографию бедной семьи с грустным видом и закопченными лицами, которые едят на открытом воздухе, как счастливый семейный пикник. И, вероятно, не удастся сказать, что следующая картинка - это рисунок пикника с животными.

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