Сверточные сети или сверточные нейронные сети (CNN) стали доминирующим подходом к машинному обучению для визуального распознавания. Они повсеместно используются в области компьютерного зрения. Я начал работать над задачами обнаружения видеообъектов в начале этого года и был настолько очарован тем, как работает весь процесс. Я решил узнать больше о CNN и поделиться тем, что я нашел. Я бы начал с разговора о том, что меня смутило.
Являются ли CNN такими же, как модели обнаружения объектов?
Доступны несколько CNN, например, AlexNet, VGGNet, GoogLeNet, DarkNet-19 и ResNet. Эти сети в основном используются для задач классификации объектов и оцениваются с помощью некоторых широко используемых эталонных тестов и наборов данных, таких как ImageNet. При классификации изображений или распознавании изображений классификатор классифицирует один объект на изображении, выводит одну категорию для каждого изображения и дает вероятность соответствия классу.
При обнаружении объектов модель должна распознавать несколько объектов на одном изображении и предоставлять координаты, определяющие местоположение объектов. Это показывает, что для обнаружения объектов требуется гораздо больше, чем просто классификация изображений.
CNN имодели обнаружения объектов различаются, разница в том, что первые используются во вторых. Например, AlexNet используется в таких моделях обнаружения объектов, как R-CNN и HyperNet, GoogLeNet в основном используется в модели обнаружения объектов YOLO и DarkNet-19 используется в YOLOv2. VGG-16 используется в моделях обнаружения объектов, таких как Fast R-CNN и Faster R-CNN, а ResNet-101 также используется в Faster R-CNN.
Что такое CNN?
CNN — это тип нейронной сети, а другими типами являются искусственная нейронная сеть (ANN) и рекуррентная нейронная сеть (RNN). CNN состоит из нескольких слоев нейронов (расположенных в двух измерениях), каждый из которых представляет собой нелинейную операцию линейного преобразования выходов предыдущего слоя. Его функции можно разделить на извлечение/обучение признаков и классификацию. Этап выделения признаков предшествует классификации. Feature Learning включает компоненты Convolution, ReLU и Pooling с многочисленными итерациями между ними. Классификация использует компоненты Flattening и Full Connection.
CNN извлекают функции из данных с топологией, подобной сетке, таких как цифровое изображение. Изображение хранится в бинарном виде и делится на матрицу пикселей. Каждый пиксель состоит из цифрового значения одного или нескольких битов. Как правило, цифровое изображение состоит из определенного количества столбцов и строк пикселей, которые указывают яркость каждого цвета изображения. На рисунке мы видим значения пикселей в десятичном формате, но компьютер использует эти значения в двоичном формате (биты, образующие байты).
Компоненты CNN
Сверточная сеть состоит из следующих основных частей: сверточный слой, объединяющий слой и полносвязный слой.
Сверточный слой – это первый уровень CNN, состоящий из фильтров или ядер, которые меньше входного изображения. Сверточный слой принимает тензор изображения в качестве входных данных, применяет определенное количество сверточных фильтров(может быть 25 или 5) к тензору изображения, добавляет смещение и применяет нелинейный функция активации (обычно ReLU) на выходе. Целью сверточных слоев является извлечение шаблонов и информации из изображения. Сверточные фильтры в начале сети отвечают за захват функций низкого уровня, таких как цвет и ориентация градиента. Сверточные фильтры/ядра, расположенные глубже в сети, отвечают за захват функций высокого уровня, таких как края изображения.
Слой объединения отвечает за выполнение ряда операций объединения (максимальное или среднее) над изображением. Объединение слоев реализует операцию уменьшения пространственной размерности, предназначенную для уменьшения количества обучаемых параметров для следующих слоев и позволяя им сосредоточиться на более крупных областях входного шаблона.
Полносвязный слой использует ИНС и отвечает за прием плоского вектора изображения (тензор одномерного изображения) в качестве входных данных и определение оценки вероятности для каждой метки в обучающем наборе данных. Как следует из названия, каждый нейрон в полносвязном слое полностью связан с каждым другим нейроном в предыдущем слое.
Другими необходимыми компонентами CNN являются Dropout, функции активации, заполнения, слои пакетной нормализации и слои Flatten. Функция активации добавляется в сеть где-то между двумя сверточными слоями или в конце сети. Он решает, какая информация должна быть в выводе, а какая нет. Существуют как линейные, так и нелинейные функции активации, выполняющие линейные и нелинейные преобразования. Примеры функций активации включают функции активации ReLU (выпрямленная линейная единица), Softmax, tanh и Sigmoid. Метод Dropout уменьшает переобучение и улучшает ошибки обобщения, случайным образом удаляя выбранные нейроны во время обучения. Техника пакетной нормализации стандартизирует входные данные в сеть, применяемые либо к активации на предыдущем уровне, либо непосредственно к входным данным. Заполнениедобавляет дополнительные пиксели за пределы изображения, чтобы предотвратить потерю информации. Слой Flatten преобразует многомерный вектор в одномерный, чтобы его можно было обработать классификатором для прогнозирования классов.
Если вы где-то это видели и вам интересно, что это такое, карта объектов – это результат применения фильтра к изображению или входным данным фильтра.
Заключение
Была прояснена разница между архитектурами CNN и моделями обнаружения объектов, а также хорошо объяснено множество различных компонентов CNN. Я очень надеюсь, что эта статья помогла вам понять, что такое CNN. В следующих статьях я расскажу, как создать CNN с нуля на Python.
Свяжитесь со мной в LinkedIn и Twitter.