«Признание: некоторые разделы предоставленного контента являются неотъемлемыми компонентами задания курса «ID5030 Машинное обучение для инженерных приложений» в ИИТ Мадраса. Эти разделы изначально были написаны мной в качестве ассистента преподавателя курса».

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

Краткое содержание этого поста следующее:

  1. Классификация изображений
  2. Обнаружение объектов
  3. Сегментация изображений
  4. Передача стиля
  5. ГАНы

Классификация изображений

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

Бинарная классификация

Целью классификации двоичных изображений является разделение изображений на две отдельные категории. Например, рассмотрим сценарий анализа медицинских изображений, целью которого может быть определение того, является ли данное изображение признаком нормальной ткани или злокачественной опухоли. В этом контексте «метка=0» может соответствовать нормальному изображению, а «метка=1» означает злокачественное изображение. Термин «бинарная классификация» возник из этой дихотомии.

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

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

Модели глубокого обучения, основанные на CNN, в настоящее время являются самыми современными для решения таких проблем. Блок-схема модели CNN показана на следующем рисунке.

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

Многоклассовая классификация

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

Мы можем присвоить метку 5 собакам, метку 2 — автомобилям, метку 0 — самолетам и метку 9 — грузовикам. Как вы можете заметить, на изображениях может быть несколько объектов, однако метки соответствуют доминирующим объектам.

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

Обнаружение объектов

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

Обнаружение одного объекта

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

В качестве примера на следующем изображении показано расположение ямки (небольшой ямки) на изображении глаза с использованием зеленой ограничивающей рамки:

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

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

Обнаружение нескольких объектов

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

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

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

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

Сегментация изображений

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

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

Сегментация по одному объекту

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

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

вы можете научиться реализовывать архитектуру кодировщика-декодера для сегментации одного объекта с помощью PyTorch. Вы можете получить доступ к блокноту по ссылке — https://colab.research.google.com/drive/1sXZ18grOnls9a_BsNkl2XOerLS5JE1nz?usp=sharing

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

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

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

Передача стиля

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

В качестве примера обратите внимание на следующий рисунок:

Изображение слева преобразуется в изображение справа с использованием изображения стиля (посередине).

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

ГАНы

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

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

Краткое содержание

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

Если эта статья оказалась для вас полезной, нажмите кнопку «хлопнуть».

Признание - Майкл Авенди

На простом английском языке

Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти: