• Регистрация
Sancho
Sancho +99.25
н/д

Сверточная нейронная сеть 3 вещи, которые вам нужно знать

28.09.2020

В публикации:

  • Ответим на вопрос - что же такое сверточная нейронная сеть?
  • Что же делает сверточную нейронную сеть такой полезной?
  • Свертончная нейронная сеть отлично работает в задачах обнаружения и распознавания объектов
  • Как работает свертончная нейронная сеть
  • Изучение характерных признаков объекта, слои и классификация
  • Слои классификации
  • Аппаратное ускорение с помощью графических процессоров
  • Использование сверточной нейронной сети в MATLAB
  • Обучение с нуля

Ответим на вопрос - что же такое сверточная нейронная сеть?


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

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

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

Что же делает сверточную нейронную сеть такой полезной?


Использование свертончной нейронной сети в глубоком машинном обучении становится все более популярным благодаря трем важным факторам:

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

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

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


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

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

Подробнее

Создать простую сеть глубокого обучения для классификации

Как работает свертончная нейронная сеть


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

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

Изучение характерных признаков объекта, слои и классификация


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

Есть три наиболее распространенных слоя: свертка, активация или ReLU и объединение.

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

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

Слои классификации


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

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

Последний слой архитектуры сверточной нейронной сети использует слой классификации, такой как softmax, для обеспечения вывода полученной классификации.

Аппаратное ускорение с помощью графических процессоров


Сверточная нейронная сеть обучается на сотнях, тысячах или даже миллионах изображений. При работе с большими объемами данных и сложной сетевой архитектурой графические процессоры могут значительно сократить время обучения модели. После обучения, сверточную нейронную сеть можно использовать в приложениях реального времени, таких как детектирование пешеходов в передовых системах помощи водителю (advanced driver assistance systems  -ADAS).

Использование сверточной нейронной сети в MATLAB


Использование MATLAB® с Deep Learning Toolbox ™ позволяет обучить собственную сверточную нейронную сеть с нуля или использовать предварительно обученную модель для выполнения трансферного обучения.

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

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

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

Обучение с нуля

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

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

Подробнее

Использование предварительно обученных моделей для трансферного обучения

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

С помощью Deep Learning Toolbox вы можете выполнять трансферное обучение с предварительно обученными моделями сверточных нейронных сетей (такими как GoogLeNet, AlexNet, vgg16, vgg19) и моделями из Caffe и TensorFlow-Keras.

 

Подробнее

Предварительно обученные сверточные нейронные сети - Документация

 

Источники

  1. MathWorks

Теги

    28.09.2020

    Комментарии

    • Sancho
      Sancho+99.25
      28.09.2020 13:02

      Благодарим за перевод материала @MasterX!