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

Прежде чем мы начнем, есть несколько новых терминов, которые необходимо разбить:

  • Фильтр: определенная область матрицы (например, квадрат 5x5), заданная каждому слою сети. В сверточных слоях они также удваиваются как веса.
  • Функция Softmax: тип функции, которая принимает входную матрицу и сжимает все входные данные, чтобы в сумме они составляли 1, что при этом создает вероятность того, какой объект в его наборе данных содержит изображение.

Интерпретация

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

свертка

Это делается снова и снова с каждой частью изображения (процесс, называемый сверткой) в стольких слоях, сколько необходимо, пока все они не сойдутся в так называемый слой свертки, который берет каждый отдельный слой и накладывает их друг на друга, чтобы получить четкое представление о том, насколько полное изображение представляет каждую функцию. После этого матрица 2d преобразуется в массив чисел 1d, и если значения ближе к значениям скалярных произведений фильтров для определенного объекта, то этот объект получает определенное количество «голосов», которые определяют процент value модель выводит это изображение, содержащее этот объект. Чем больше точечных произведений содержит массив, который ближе к фильтрам определенного объекта, тем выше вероятность того, что изображение содержит этот объект.

Начало V3

Одной из очевидных проблем с этим является размер фильтра. Чтобы CNN была наиболее эффективной, ей нужно знать, нужно ли выполнять свертку в масштабе 1x1, 3x3, 5x5 и т. д., и именно здесь вступает в действие исходная модель. Используя набор данных imagenet Google, он определяет размер фильтра для каждого слой и использует функцию softmax из tensorflow для создания вывода вероятности того, что изображение содержит определенный объект. Набор данных imagenet содержит более 1000 различных изображений, что упрощает обучение модели после импорта начальных слоев v3 и softmax.

Через несколько лет классификаторы изображений будут повсюду, и tensorflow сыграет в этом огромную роль. Достигнута точка, когда практически любая модель может быть столь же эффективной, как те, которые используются Google или Uber, из-за огромного количества обучающих данных. Мы живем во времена, когда данные стали намного более ценными, чем даже 10 лет назад, и с такими инструментами, как CNN и tensorflow, возможностей делать что-то гораздо больше, чем когда-либо прежде.