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

Обновлено: 21.11.2024

Эта статья изначально была опубликована на сайте Algorithimia. Компания была приобретена DataRobot в 2021 году. Эта статья может быть не совсем актуальной или относиться к продуктам и предложениям, которых больше не существует. Узнайте больше о DataRobot MLOps здесь.

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

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

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

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

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

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

Классическим применением компьютерного зрения является распознавание рукописного ввода для оцифровки рукописного контента (ниже мы рассмотрим другие варианты использования). Помимо простого распознавания, к другим методам анализа относятся:

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

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

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

Один из основных открытых вопросов как в нейробиологии, так и в машинном обучении: как именно работает наш мозг и как мы можем приблизить это с помощью наших собственных алгоритмов? Реальность такова, что существует очень мало работающих и всеобъемлющих теорий вычислений мозга; поэтому, несмотря на то, что нейронные сети должны «имитировать работу мозга», никто не уверен, что это действительно так. У Джеффа Хокинса есть целая книга на эту тему под названием «Об интеллекте».

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

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

Подумайте об изображении как о гигантской сетке из разных квадратов или пикселей (это изображение представляет собой очень упрощенную версию того, что выглядит как Авраам Линкольн или дементор). Каждый пиксель изображения может быть представлен числом, обычно от 0 до 255. Серия чисел справа — это то, что программа видит при вводе изображения. Для нашего изображения есть 12 столбцов и 16 строк, что означает 192 входных значения для этого изображения.

Когда мы начинаем добавлять цвет, все становится сложнее. Компьютеры обычно считывают цвет как серию из 3 значений — красного, зеленого и синего (RGB) — по той же шкале от 0 до 255. Теперь у каждого пикселя на самом деле есть 3 значения, которые компьютер должен хранить в дополнение к его положению.Если бы мы раскрасили президента Линкольна (или худший страх Гарри Поттера), это привело бы к 12 x 16 x 3 значениям, или 576 числам.

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

  • Каждое значение цвета хранится в 8 битах.
  • 8 бит x 3 цвета на пиксель = 24 бита на пиксель.
  • Изображение нормального размера 1024 x 768 x 24 бита на пиксель = почти 19 Мбит или около 2,36 МБ.

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

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

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

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

Но не только технологические компании используют машинное обучение для обработки изображений. Ford, американский производитель автомобилей, существующий буквально с начала 1900-х годов, вкладывает значительные средства в автономные транспортные средства (AV). Большая часть базовой технологии в AV основана на анализе нескольких видеопотоков, поступающих в автомобиль, и использовании компьютерного зрения для анализа и выбора пути действий.

Еще одна важная область, в которой может помочь компьютерное зрение, — это медицина. Большая часть диагностики — это обработка изображений, например чтение рентгеновских снимков, МРТ и другие виды диагностики. Google работает с медицинскими исследовательскими группами, чтобы изучить, как глубокое обучение может помочь медицинским рабочим процессам, и добился значительного прогресса с точки зрения точности. Перефразируя страницу их исследования:

«В тесном сотрудничестве с врачами и международными системами здравоохранения мы разработали современную систему компьютерного зрения для считывания изображений глазного дна сетчатки при диабетической ретинопатии и определили, что производительность нашего алгоритма не уступает алгоритму, сертифицированному в США. офтальмологи. Недавно мы опубликовали некоторые из наших исследований в Journal of the American Medical Association и резюмировали основные моменты в сообщении в блоге. .

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

Компьютерное зрение и сверточные нейронные сети

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

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

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

Свертка

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

Эта футуристически звучащая аббревиатура расшифровывается как Rectified Linear Unit, которая представляет собой простую функцию для внесения нелинейности в карту объектов. Все отрицательные значения просто заменяются на ноль, удаляя весь черный цвет с изображения. Формальная функция: y = max(0, x).

Объединение

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

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

Если вы запутались в деталях, не беспокойтесь. Просто помните:

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

Компьютерное зрение в DataRobot

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

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

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

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

Ресурсы по компьютерному зрению

Пакеты и фреймворки

OpenCV — «OpenCV был разработан для повышения эффективности вычислений и уделения особого внимания приложениям, работающим в реальном времени. Принятый во всем мире, OpenCV насчитывает более 47 тысяч человек в сообществе пользователей и оценочное количество загрузок, превышающее 14 миллионов. Диапазон использования варьируется от интерактивного искусства до осмотра шахт, сшивания карт в Интернете или с помощью передовой робототехники.

SimpleCV — «SimpleCV — это платформа с открытым исходным кодом для создания приложений компьютерного зрения. С его помощью вы получаете доступ к нескольким мощным библиотекам компьютерного зрения, таким как OpenCV, без необходимости предварительно узнавать о битовой глубине, форматах файлов, цветовых пространствах, управлении буфером, собственных значениях или хранении матриц и растровых изображений.»< /p>

Mahotas — «Mahotas — это библиотека компьютерного зрения и обработки изображений для Python. Она включает в себя множество алгоритмов, реализованных на C++ для повышения скорости при работе с пустыми массивами и с очень чистым интерфейсом Python. В настоящее время Mahotas имеет более 100 функций для обработки изображений и компьютерного зрения, и их число продолжает расти.

Openface — «OpenFace — это Python и Torch реализация распознавания лиц с помощью глубоких нейронных сетей, основанная на статье CVPR 2015 < em>FaceNet: унифицированное встраивание для распознавания лиц и кластеризации Флориана Шроффа, Дмитрия Калениченко и Джеймса Филбина из Google. Torch позволяет запускать сеть на ЦП или с помощью CUDA.

Ilastik — «Ilastik — это простой и удобный инструмент для интерактивной классификации, сегментации и анализа изображений. Он построен как модульная программная платформа, которая в настоящее время имеет рабочие процессы для автоматизированной (контролируемой) классификации на уровне пикселей и объектов, автоматического и полуавтоматического отслеживания объектов, полуавтоматического автоматическая сегментация и подсчет объектов без обнаружения. Для его использования не требуется опыта обработки изображений.

Онлайн-курсы и видео

Введение в компьютерное зрение (Georgia Tech и Udacity) — «Этот курс представляет собой введение в компьютерное зрение, включая основы формирования изображения, геометрию изображения камеры, обнаружение и сопоставление функций, многоракурсную геометрию, включая стерео, оценку движения и отслеживание. и классификация. Мы меньше уделяем внимание аспекту машинного обучения в CV, поскольку на самом деле это теория классификации, которую лучше всего изучать на курсах машинного обучения».

Сверточные нейронные сети (Deeplearning.ai и Coursera) — «Этот курс научит вас создавать сверточные нейронные сети и применять их к данным изображений. Благодаря глубокому обучению компьютерное зрение работает намного лучше, чем всего два года назад, и это позволяет использовать множество интересных приложений, от безопасного автономного вождения до точного распознавания лиц и автоматического считывания рентгенологических изображений».

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

Кроме того, на YouTube есть несколько хороших сериалов. Два самых популярных варианта – это основы компьютерного зрения и краткое введение в компьютерное зрение.

Книги

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

Programming Computer Vision with Python (O’Reilly) – «Если вы хотите получить общее представление о теории и алгоритмах, лежащих в основе компьютерного зрения, это практическое введение – идеальное место для начала. Вы изучите методы распознавания объектов, трехмерной реконструкции, стереоизображения, дополненной реальности и других приложений компьютерного зрения, следуя наглядным примерам, написанным на Python.

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

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

Пулкит Хандельвал, Университет ВИТ.

Если мы хотим, чтобы машины думали, нам нужно научить их видеть.

– Фей Фей Ли, директор Стэнфордской лаборатории искусственного интеллекта и Стэнфордской лаборатории зрения

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

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

Шаг 1 – Проверка биографических данных

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

Что касается реализации, я предпочитаю иметь опыт работы как с MATLAB, так и с Python. Проверьте senddex (канал YouTube), чтобы найти все необходимое для научного программирования на Python. Помните, что Computer Vision — это все о вычислительном программировании.

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

Шаг 2. Цифровая обработка изображений

Посмотрите видео профессора Гильермо Сапиро из Университета Дьюка.Программа очень самодостаточна и включает в себя множество упражнений. Вы можете найти видео на Youtube или дождаться следующего занятия на Coursera, начиная с сентября 2016 г.

См. книгу «Цифровая обработка изображений» Гонсалеса и Вудса. Просмотрите примеры понятий, изложенных в этом курсе по MATLAB.

Шаг 3. Компьютерное зрение

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

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

Шаг 4. Усовершенствованное компьютерное зрение

Выполнение первых трех шагов позволит вам перейти к продвинутому материалу.

Предложение Coursera Discrete Inference in Artificial Vision дает вам вероятностные графические модели и математическую передозировку Computer Vision. Хотя Coursera удалила этот контент с веб-сайта, вы сможете найти его где-нибудь в Интернете. Теперь все выглядит интересно и определенно даст вам представление о том, насколько сложные, но простые модели создаются для систем машинного зрения. Этот курс также должен стать отправной точкой для написания академических работ.

Шаг 5. Внедрение Python и открытого исходного кода

Давайте углубимся в Python.

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

Вы можете найти много хороших блогов и видео, чтобы начать работу с программированием компьютерного зрения с помощью Python. Я бы порекомендовал эту книгу; этого должно быть более чем достаточно. Иди и получай удовольствие! Узнайте, как MATLAB и Python помогают вам реализовывать алгоритмы.

Шаг 6. Машинное обучение и ConvNets

Слишком много сообщений о начале работы с машинным обучением.

С этого момента вам лучше придерживаться Python. Кратко ознакомьтесь с разделом «Создание систем машинного обучения с помощью Python» и «Машинное обучение Python».

С учетом всей этой шумихи вокруг глубокого обучения вы приступаете к текущей исследовательской работе в области компьютерного зрения: использованию ConvNets. Стэнфордский курс CS231n: Convolutional Neural Networks for Visual Recognition — это комплексный курс по этому вопросу. Хотя видео были удалены с официального сайта, вы можете очень легко найти повторную загрузку на Youtube.

Шаг 7. Как узнать больше?

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

Один из хороших подходов – ознакомиться с курсами семинаров для выпускников Сани Фидлер из Университета Торонто и Джеймса Хейса, чтобы получить представление о текущих направлениях исследований в области компьютерного зрения с помощью обширных научных статей.

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

Биография: Пулкит Хандельвал учится на магистра компьютерных наук в Университете Макгилла. Его интересы связаны с компьютерным зрением и машинным обучением.

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

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

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

Компьютерное зрение используется в самых разных отраслях: от энергетики и коммунальных услуг до производства и автомобилестроения, и рынок продолжает расти. Ожидается, что к 2022 году он достигнет 48,6 млрд долларов США. 1

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

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

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

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

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

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

История компьютерного зрения

Ученые и инженеры уже около 60 лет пытаются разработать способы, с помощью которых машины смогут видеть и понимать визуальные данные. Эксперименты начались в 1959 году, когда нейрофизиологи показали кошке набор изображений, пытаясь сопоставить реакцию ее мозга. Они обнаружили, что он сначала реагирует на резкие края или линии, и с научной точки зрения это означает, что обработка изображений начинается с простых форм, таких как прямые края. (2)

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

В 1974 году была представлена ​​технология оптического распознавания символов (OCR), позволяющая распознавать текст, напечатанный любым шрифтом или гарнитурой. (3) Точно так же интеллектуальное распознавание символов (ICR) может расшифровывать рукописный текст с помощью нейронных сетей. (4) С тех пор OCR и ICR нашли свое применение в обработке документов и счетов, распознавании автомобильных номеров, мобильных платежах, машинном переводе и других распространенных приложениях.

В 1982 году нейробиолог Дэвид Марр установил, что зрение работает иерархически, и представил алгоритмы, позволяющие машинам обнаруживать края, углы, кривые и аналогичные базовые формы. Одновременно ученый-компьютерщик Кунихико Фукусима разработал сеть клеток, способных распознавать закономерности. Сеть под названием Неокогнитрон включала сверточные слои нейронной сети.

К 2000 году основное внимание уделялось распознаванию объектов, а к 2001 году появились первые приложения для распознавания лиц в реальном времени. Стандартизация того, как наборы визуальных данных помечаются и аннотируются, появилась в 2000-х годах. В 2010 году стал доступен набор данных ImageNet. Он содержал миллионы помеченных изображений в тысячах классов объектов и обеспечивает основу для CNN и моделей глубокого обучения, используемых сегодня. В 2012 году команда из Университета Торонто представила CNN для участия в конкурсе по распознаванию изображений. Модель под названием AlexNet значительно снизила количество ошибок при распознавании изображений.После этого прорыва количество ошибок снизилось до нескольких процентов. (5)

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

Благодаря достижениям в области искусственного интеллекта и вычислительной мощности технология компьютерного зрения сделала огромный шаг к интеграции в нашу повседневную жизнь. Ожидается, что к 2022 году рынок компьютерного зрения достигнет 48,6 млрд долларов США, что сделает его чрезвычайно многообещающей технологией UX.

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

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

Системы человеческого и компьютерного зрения обрабатывают визуальные данные схожим образом. Изображение предоставлено Мэннингом.

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

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

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

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

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

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

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

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

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

Революция в области глубокого обучения

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

Глубокое обучение вписывается в машинное обучение, подмножество искусственного интеллекта. Изображение предоставлено Nvidia.

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

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

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

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

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

Организация контента

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

В разделе «Для вас» программы «Фото» для iOS вы можете увидеть рекомендуемый контент, созданный приложением, чтобы вы могли просматривать свои любимые моменты. Изображение предоставлено Apple.

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

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

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

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

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

Приложение Ikea Place использует дополненную реальность, чтобы помочь пользователям понять, впишется ли мебель, которую они хотят купить, в их интерьер.Изображение предоставлено Wired.

Автономные автомобили

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

Здоровье

Информация об изображении является ключевым элементом диагностики в медицине, поскольку на нее приходится 90 % всех медицинских данных. Многие диагнозы в области здравоохранения основаны на обработке изображений — рентген, МРТ и маммография, и это лишь некоторые из них. А сегментация изображений доказала свою эффективность при анализе медицинских сканов. Например, алгоритмы компьютерного зрения могут обнаруживать диабетическую ретинопатию — самую быстрорастущую причину слепоты. Компьютерное зрение может обрабатывать изображения задней части глаза (см. ниже) и оценивать их на предмет наличия и тяжести заболевания.

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

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

Применение технологии компьютерного зрения во время биопсии лимфатического узла может помочь обнаружить область опухоли. Изображение предоставлено Google.

Сельское хозяйство

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

Заключение

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

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