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

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

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

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

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

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

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

Использование сверточных нейронных сетей для локализации.

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

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

CNN может обнаружить (путем предсказания класса) и локализовать (предоставив координаты) только один объект на изображении. Если изображение содержит несколько объектов, вы все равно можете использовать CNN для поиска каждого объекта на изображении, используя одно из двух традиционных решений для обработки изображений:

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

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

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

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

Одноэтапное обнаружение. В зависимости от разрешения сетки прогноз может быть довольно грубым (чем выше разрешение, тем сложнее и медленнее работает сеть глубокого обучения). Одноэтапное обнаружение чрезвычайно быстрое, почти такое же быстрое, как базовая CNN для классификации. Полученные данные необходимо обработать, чтобы сгруппировать ячейки, представляющие один и тот же объект, что может привести к дополнительным ошибкам. Single-Shot Detector (SSD), You Only Look Once (YOLO) и RetinaNet — нейронные архитектуры, основанные на этой концепции. Одноступенчатые детекторы работают быстро, но не очень точно.

Двухэтапное обнаружение. Второй метод — двухэтапное обнаружение. Этот метод использует вторую нейронную сеть для улучшения прогнозов первой. Сеть предложений — это первый этап, и он генерирует прогнозы в сетке. Второй этап уточняет эти идеи и производит окончательное обнаружение и локализацию объекта. R-CNN, Fast R-CNN и Faster R-CNN — это двухэтапные модели обнаружения, которые работают медленнее, чем их одноэтапные аналоги, но дают более точные прогнозы.

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

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

Даже при простой классификации маркировка фотографий в наборе данных является сложной операцией. На этапах обучения и тестирования нейронная сеть должна правильно классифицировать картинку. Сеть выбирает соответствующую метку для каждого изображения во время тегирования, и не все будут видеть представленное изображение одинаковым образом. Набор данных ImageNet был создан с использованием категоризации, предоставленной различными пользователями на краудсорсинговой платформе Amazon Mechanical Turk — ImageNet настолько широко использовала сервис Amazon, что в 2012 году была названа самым важным академическим клиентом Amazon.

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

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

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

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

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

U-NET — это медицинская версия FCN, созданная Олафом Роннебергером, Филиппом Фишером и Томасом Броксом в 2015 году. По сравнению с FCN U-NET имеют преимущества. Компоненты кодирования (также известного как сжатие) и декодирования (также известного как расширение) полностью симметричны. U-NET также используют короткие соединения между уровнями кодировщика и декодера. Эти ярлыки упрощают перенос сведений об объекте из компонентов кодирования в компоненты декодирования U-NET, что приводит к точной и мелкозернистой сегментации.