Введение в компьютерное зрение

Что такое компьютерное зрение? Почему стоит тратить время и силы на понимание и применение? Как это работает? И в каких приложениях он может быть полезен в деловом мире? Если вам еще предстоит найти простые для понимания ответы на эти вопросы, то этот пост для вас.

Введение в компьютерное зрение

Какие?

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

Получение точных изображений нашей физической среды с помощью цифровых фотоаппаратов уже давно решается с помощью наших современных технологий. И по большей части присвоение значимых меток объектам на этих цифровых изображениях также было решено в последнее десятилетие. Издание 2012 года ILSVRC (ImageNet Large Scale Visual Recognition Challenge) [1] поставило перед исследовательскими группами со всего мира задачу классифицировать 1000 классов объектов из более чем одного миллиона изображений в наборе данных ImageNet. В том году метод глубокого обучения впервые занял первое место в задаче классификации изображений.

Этот метод глубокого обучения, названный AlexNet [2] (в честь первого автора, Алекса Крижевского), был разработан командой из Университета Торонто под названием SuperVision и использовал архитектуру сверточной нейронной сети (CNN) (подробнее об этом позже) для получить пятерку ошибок (то есть процент ошибочных пяти первых предположений из 1000 классов объектов) в 15,315%, по сравнению с ошибкой первой пятерки метода, занявшей второе место, равной 26,172% (при использовании классического подхода машинного обучения). Практики машинного обучения любят повторять снова и снова до тошноты: это сокращение ошибки на 10,857%! Для сравнения, Андрей Карпатый обучился выполнять задачу классификации изображений и получил неофициальную (и неопубликованную) ошибку в 5,1%. В то время самый эффективный метод ILSVRC 2014, GoogLeNet [3], уже улучшился до 6,7% ошибок в топ-5. И, как заметил сам Карпати, его менее преданные и менее подготовленные товарищи по лаборатории работали намного хуже. Ясно, что не у всех людей есть терпение и подготовка для крупномасштабного распознавания образов:

Это все еще было слишком сложно - люди все время пропускали категории и доходили до 13–15% ошибок.

Означает ли это, что компьютеры теперь могут «видеть» так же, как люди? Нет, не обязательно.

В 2015 году исследователи обнаружили, что многие современные модели компьютерного зрения склонны к злонамеренно разработанным высокочастотным паттернам, известным как состязательные атаки [4], которые обманом заставляют модели изменять свои прогнозы незаметно. людям.

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

Почему?

Хорошо, но состязательные атаки, но если оставить в стороне узкоспециализированных исследователей, почему нам нужно заботиться о компьютерном зрении? Ну, по той же причине, которую указал Андрей Карпати - обучение людей мелкозернистому, крупномасштабному визуальному распознаванию требует значительного обучения, самоотверженности и времени. В конце концов, человеческая ошибка все равно будет. Из единственного опыта Карпати в конкуренции с вычислительными методами в ILSVRC, он уже отказался от идеи:

  • Передача задачи на аутсорсинг нескольким людям за деньги (например, оплачиваемым студентам или оплачиваемым этикетировщикам на Amazon Mechanical Turk)
  • Передача задачи на аутсорсинг коллегам-исследователям, не получающим зарплату

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

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

Карпати заявил, что ему потребовалось примерно 1 минуту, чтобы распознать каждое изображение из 1500 изображений в меньшем тестовом наборе. Напротив, современные сверточные нейронные сети могут распознавать объекты на изображениях менее чем за секунду с приличным графическим процессором. Если бы нам пришлось распознать полный тестовый набор из 100 000 изображений? Хотя разработка конвейера компьютерного зрения требует времени на разработку и специальных знаний, компьютеры могут выполнять визуальное распознавание более последовательно, чем люди, без утомления и лучше масштабироваться, когда это необходимо.

Как?

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

Настроенный вручную подход

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

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

Подход к машинному обучению

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

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

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

(Core) Задачи компьютерного зрения

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

  1. Классификация изображений: учитывая изображение с одним объектом, предскажите, какой объект присутствует (полезно для тегов, поиска или индексации изображений по объекту, тегу или другим атрибутам)
  2. Локализация изображения: для изображения с одним объектом спрогнозируйте, какой объект присутствует, и нарисуйте ограничивающую рамку вокруг него (полезно для определения местоположения или отслеживания внешнего вида или движения объекта).
  3. Обнаружение объекта: учитывая изображение с несколькими объектами, предскажите, какие объекты присутствуют, и нарисуйте ограничивающую рамку вокруг каждого экземпляра объекта (полезно для определения местоположения или отслеживания внешнего вида или движения нескольких объектов)
  4. Семантическая сегментация (не показана на рисунке): для изображения с несколькими объектами можно предсказать, какие объекты присутствуют, и какие пиксели принадлежат каждому классу объектов (например, классу кошки) (полезно для анализа формы нескольких классов объектов)
  5. Сегментация экземпляра: для изображения с несколькими объектами предскажите, какие объекты присутствуют, и предскажите, какие пиксели принадлежат каждому экземпляру (например, кошка №1 или кошка №2) класса объектов (полезно для анализа форма нескольких экземпляров объекта)

Доступные наборы данных и модели

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

Конечно, если объекты, которые нужно распознать, не подпадают под «tape_player» и «grey_whale» (возможно, «machine_1» или «door_7»), необходимо будет собрать пользовательские данные и аннотации. Но в большинстве случаев современные модели можно просто переобучить с использованием новых данных, и они по-прежнему будут хорошо работать.

Классификация изображений (одна метка)

Набор данных: ImageNet (например, tape_player, grey_whale)

Образец изображения с аннотациями:

Современная модель (с кодом): FixEfficientNet-L2 (2020), топ-1 точность = 88,5%

Локализация объекта (несколько ограничивающих рамок)

Набор данных: KITTI Cars (например, ограничивающие рамки автомобиля, ориентация)

Образец изображения с аннотациями:

Современная модель (с кодом): Frustum PointNets (2017), AP = 84,00%

Семантическая сегментация (несколько сегментов класса)

Набор данных: PASCAL Context (например, трава, таблица)

Образец изображения с аннотациями:

Современная модель (с кодом): РесНеСт-269 (2020), mIoU = 58,9%

Сегментация экземпляра (несколько сегментов экземпляра)

Набор данных: CityScapes (например, дорога, человек)

Образец изображения с аннотациями:

Современная модель (с кодом): EfficientPS (2019), AP = 39,1%

Возможные бизнес-сценарии использования

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

Промышленные

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

  • Обнаружение дефектов, контроль качества: изучая внешний вид обычных продуктов, система компьютерного зрения может пометить оператора станка, как только он обнаружит вероятный дефект (например, Ai Maker от AiBuild).

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

Медицинское

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

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

  • Дистанционное измерение: опять же, научившись рисовать ограничивающую рамку вокруг интересующего объекта (например, поражения), система компьютерного зрения может определять реальный размер этого объекта для наблюдения за развитием пациента. время (например, Swift Skin and Wound от Swift Medical)

Документы и мультимедиа

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

  • Оптическое распознавание символов (OCR): текст отсканированных документов можно распознать и извлечь для дальнейшей обработки.
  • Система поиска изображений: изображения можно использовать для поиска других изображений (например, для веб-сайта розничной онлайн-торговли, поиска продуктов, визуально похожих или стилистически похожих на продукты, купленные последним).
  • Визуальный ответ на вопрос (VQA): пользователи могут задавать системе компьютерного зрения вопросы о сцене, изображенной на изображении, и получать ответ на человеческом языке - это важно для субтитров видео (например, «Что делает Боб? на земле? »› «Боб спит на земле»)

  • Обобщение видео: система компьютерного зрения может суммировать события в видео и возвращать краткое изложение - это важно для автоматического создания описаний видео (например, «Мужчина перед аудиторией выступает с речью. его прерывает вбегающая собака »)

Розничная торговля и наблюдение

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

  • Распознавание активности человека: систему компьютерного зрения можно обучить определять текущую активность человека в видеопотоке (например, ходьба, сидение), что может быть полезно для количественного определения количества людей, сидящих в толпе или выявление узких мест в толпе
  • Оценка позы человека: систему компьютерного зрения также можно обучить определять положение и ориентацию суставов человека, что может быть полезно для взаимодействий в виртуальной реальности, управления жестами или анализа движений человека для медицинских или спортивные цели

  • Визуальная локализация в помещении: систему компьютерного зрения можно использовать для сопоставления текущего изображения или видеопотока в реальном времени внутренней среды с базой данных известных снимков и определения местоположения текущего пользователя в этой внутренней среде ( например, пользователь делает снимок в университетском городке, и приложение показывает ему, где он находится)

Спутниковые снимки

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

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

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

Практические соображения

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

  1. Данные: вы получаете данные об изображениях от сторонних поставщиков или поставщиков или собираете их самостоятельно? Большая часть цифровых данных непригодна для использования или не анализируется.
  2. Аннотации: вы получаете аннотации от сторонних поставщиков или поставщиков или собираете их самостоятельно?
  3. Постановка проблемы: какую проблему вы пытаетесь решить? Вот где пригодится предметная экспертиза (например, достаточно ли этого, чтобы обнаружить неисправность машины (распознавание изображений) или нам также нужно определить местонахождение дефектных областей (обнаружение объектов)?)
  4. Трансферное обучение: могут ли предварительно обученные модели уже достаточно хорошо справляться со своей работой (если да, то требуется меньше исследований и разработок)?
  5. Вычислительные ресурсы: достаточно ли у вас вычислительной мощности для обучения / вывода (для моделей компьютерного зрения обычно требуются облачные вычисления или мощные локальные графические процессоры)?
  6. Человеческие ресурсы: достаточно ли у вас времени или опыта для реализации моделей (компьютерному зрению обычно нужны инженеры по машинному обучению, специалисты по данным или ученые-исследователи с высшим образованием и достаточным количеством рабочих часов, чтобы посвятить себя работе по проблемам исследования)?
  7. Проблемы с доверием: доверяет ли конечный пользователь / заказчик подходу компьютерного зрения? Должны быть установлены хорошие отношения и внедрены методы объяснимости для обеспечения прозрачности и подотчетности, что, в свою очередь, способствует большему признанию пользователей.

использованная литература

[1] Ольга Русаковски, Цзя Дэн, Хао Су, Джонатан Краузе, Санджив Сатиш, Шон Ма, Чжихенг Хуанг, Андрей Карпати, Адитья Хосла, Майкл Бернштейн, Александр К. Берг и Ли Фей-Фей. ImageNet - крупномасштабная задача визуального распознавания. Https://arxiv.org/abs/1409.0575, 2015.

[2] Алекс Крижевский, Илья Суцкевер и Джеффри Э. Хинтон. Классификация ImageNet с глубокими сверточными нейронными сетями. Конференция по системам обработки нейронной информации (NeurIPS), 2012.

[3] Кристиан Сегеди, Вэй Лю, Янцин Цзя, Пьер Сермане, Скотт Рид, Драгомир Ангелов, Думитру Эрхан, Винсент Ванхаук и Эндрю Рабинович. Углубляясь в свертки. Https://arxiv.org/abs/1409.4842, 2014 г.

[4] Ян Дж. Гудфеллоу, Джонатон Шленс и Кристиан Сегеди. Объяснение и использование состязательных примеров. Https://arxiv.org/abs/1412.6572, 2015.

[5] Линдон Чан, Махди С. Хоссейни, Корвин Роуселл, Константинос Н. Платаниотис и Саввас Дамаскинос. HistoSegNet: семантическая сегментация гистологического типа ткани во всех изображениях слайдов. Международная конференция по компьютерному зрению, 2019.

[6] Яш Гоял, Теджас Хот, Дуглас Саммерс-Стей, Дхрув Батра и Деви Парикх. Создание значения V в VQA: повышение роли понимания изображений в визуальных ответах на вопросы. Https://arxiv.org/abs/1612.00837, 2017.

[7] Хадзиме Тайра, Масатоши Окутоми, Торстен Саттлер, Мирча Чимпои, Марк Поллефейс, Йозеф Сивич, Томас Пайдла, Акихико Тории. InLoc: визуальная локализация в помещении с плотным сопоставлением и синтезом представлений. Конференция по компьютерному зрению и распознаванию образов, 2018.

[8] Бенджамин Келленбергер, Диего Маркос и Девис Туиа. Когда несколько щелчков мышью имеют решающее значение: улучшение обнаружения дикой природы на снимках с БПЛА без наблюдения за дикой природой. Конференция по компьютерному зрению и распознаванию образов, 2019.

[9] Алан Бауэр, Аарон Джордж Бостром, Джошуа Болл, Кристофер Эпплгейт, Тао Ченг, Стивен Лэйкок, Серхио Морено Рохас, Джейкоб Кирван и Цзи Чжоу. Сочетание компьютерного зрения и глубокого обучения для обеспечения ультрамасштабного воздушного фенотипирования и точного земледелия: пример производства салата. Hortic Res 6, 70. https://doi.org/10.1038/s41438-019-0151-5, 2019.