Первый вопрос, который может у вас возникнуть, - в чем разница между компьютерным зрением и распознаванием изображений. Действительно, компьютерное зрение активно развивалось Google, Amazon и многими разработчиками искусственного интеллекта, и два термина «компьютерное зрение» и «распознавание изображений» могли использоваться как синонимы. Компьютерное зрение (CV) позволяет компьютеру имитировать человеческое зрение и действовать. Например, CV может быть разработан для обнаружения бегущего по дороге ребенка и подачи предупреждающего сигнала водителю. Напротив, распознавание изображений - это анализ пикселей и шаблонов изображения для распознавания изображения как конкретного объекта. Компьютерное зрение означает, что оно может «что-то делать» с распознанными изображениями. Поскольку в этом посте я опишу методы машинного обучения для распознавания изображений, я по-прежнему буду использовать термин «распознавание изображений». В этой статье я делаю краткое введение в данные изображения и объясняю, почему сверточные автоэнкодеры являются предпочтительным методом работы с данными изображения.

Я подумал, что полезно упомянуть три широкие категории данных. К трем категориям данных относятся: (1) некоррелированные данные (в отличие от последовательных данных), (2) последовательные данные (включая данные текстового и голосового потока) и (3) данные изображения. Глубокое обучение имеет три основных варианта для каждой категории данных: (1) стандартная нейронная сеть прямого распространения, (2) RNN / LSTM и (3) сверточная NN (CNN). Для читателей, которые ищут учебные пособия для каждого типа, рекомендуется проверить Объяснение глубокого обучения удобным для регрессии способом для (1) текущей статьи Техническое руководство для RNN / LSTM / GRU на складе. Прогноз цен »» для (2) и Глубокое обучение с PyTorch не мучит, Что такое распознавание изображений? ,« Выявление аномалий с помощью автоэнкодеров стало проще и Сверточные автоэнкодеры для изображений. Подавление шума для (3). Вы можете добавить в закладки сводную статью «Пути обучения Dataman - развивайте свои навыки, двигайте свою карьеру.

Что такое распознавание изображений?

Точно так же, как говорится во фразе «Что видишь, то и получаешь», человеческий мозг облегчает зрение. Людям не требуется никаких усилий, чтобы отличить собаку, кошку или летающую тарелку. Но компьютеру довольно сложно имитировать этот процесс: они кажутся простыми только потому, что Бог устроил наш мозг невероятно способным распознавать изображения. Распространенным примером распознавания изображений является оптическое распознавание символов (OCR). Сканер может идентифицировать символы на изображении, чтобы преобразовать тексты изображения в текстовый файл. Таким же образом можно применить OCR для распознавания текста номерного знака на изображении.

Поскольку вас интересует распознавание изображений, я рекомендую вам посмотреть это интересное видео:

Как работает распознавание изображений?

Как научить компьютер отличать одно изображение от другого? Процесс модели распознавания изображений ничем не отличается от процесса моделирования машинного обучения. Я перечисляю процесс моделирования для распознавания изображений на шагах с 1 по 4.

Этап моделирования 1. Извлечение пиксельных элементов изображения

Во-первых, из изображения извлекается большое количество характеристик, называемых функциями. Изображение на самом деле состоит из пикселей, как показано на рисунке (A). Каждый пиксель представлен числом или набором чисел - и диапазон этих чисел называется глубиной цвета (или битовой глубиной). Другими словами, глубина цвета указывает максимальное количество потенциальных цветов, которые можно использовать в изображении. В (8-битном) изображении в оттенках серого (черно-белом) каждый пиксель имеет одно значение в диапазоне от 0 до 255. Сегодня в большинстве изображений используется цвет 24-бит или выше. Цветное изображение RGB означает, что цвет в пикселе представляет собой комбинацию красного, зеленого и синего цветов. Каждый из цветов находится в диапазоне от 0 до 255. Этот генератор цветов RGB показывает, как любой цвет может быть сгенерирован с помощью RGB. Таким образом, пиксель содержит набор из трех значений: RGB (102, 255, 102) относится к цвету # 66ff66. Изображение n шириной 800 пикселей, высотой 600 пикселей имеет размер 800 x 600 = 480 000 пикселей = 0,48 мегапикселя (мегапиксель составляет 1 миллион пикселей). Изображение с разрешением 1024 × 768 представляет собой сетку с 1024 столбцами и 768 строками, что, следовательно, содержит 1024 × 768 = 0,78 мегапикселя.

Этап моделирования 2. Подготовьте изображения с ярлыками для обучения модели

После того, как каждое изображение преобразовано в тысячи функций, с известными метками изображений, мы можем использовать их для обучения модели. На рисунке (B) показано множество изображений с пометками, которые принадлежат к разным категориям, таким как «собака» или «рыба». Чем больше изображений мы можем использовать для каждой категории, тем лучше можно обучить модель определять, является ли изображение изображением собаки или рыбы. Здесь мы уже знаем категорию, к которой принадлежит изображение, и используем их для обучения модели. Это называется машинным обучением с учителем.

Этап моделирования 3. Обучите модель классифицировать изображения

Рисунок (C) демонстрирует, как модель обучается с предварительно помеченными изображениями. Огромные сети посередине можно рассматривать как гигантский фильтр. Изображения в извлеченных формах попадают на входную сторону, а метки - на выходную. Цель здесь - обучить сети так, чтобы изображение с его характеристиками, поступающими из входных данных, соответствовало метке справа.

Этап моделирования 4. Распознать (или предсказать) новое изображение как одну из категорий

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

Сверточные нейронные сети - алгоритм распознавания изображений

Сети на рисунке (C) или (D) подразумевают, что популярные модели являются моделями нейронных сетей. Сверточные нейронные сети (CNN или ConvNets) широко применяются при классификации изображений, обнаружении объектов или распознавании изображений.

Мягкое объяснение сверточных нейронных сетей

Я буду использовать цифровые изображения рукописного ввода MNIST, чтобы объяснить CNN. Изображения MNIST представляют собой черно-белые изображения произвольной формы для чисел от 0 до 9. С помощью черно-белого изображения легче объяснить концепцию, потому что каждый пиксель имеет только одно значение (от 0 до 255) (обратите внимание, что цветное изображение имеет три значения в каждом пикселе).

Сетевые уровни CNN отличаются от типичных нейронных сетей. Существует четыре типа слоев: свертка, ReLU, объединение и полносвязные слои, как показано на рисунке (E). Что делает каждый из четырех типов? Позволь мне объяснить.

  1. Слой свертки

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

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

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

2. Слой ReLUs

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

3. Максимальный уровень объединения

Объединение уменьшает размер изображения. На рисунке (H) окно 2x2 просматривает каждое из отфильтрованных изображений и присваивает максимальное значение этого окна 2x2 блоку 1x1 в новом изображении. Как показано на рисунке, максимальное значение в первом окне 2x2 - это высокий балл (обозначенный красным), поэтому высокий балл присваивается блоку 1x1. Поле 2x2 переместится во второе окно, где отображается высокий балл (красный) и низкий балл (розовый), поэтому ячейке 1x1 присваивается высокий балл. После объединения создается новый набор отфильтрованных изображений меньшего размера.

4. Полностью связанный слой (последний слой)

Теперь мы разделяем меньшие отфильтрованные изображения и складываем их в один список, как показано на рисунке (I). Каждое значение в единственном списке предсказывает вероятность для каждого из конечных значений 1,2,…, 0. Эта часть такая же, как выходной слой в типичных нейронных сетях. В нашем примере «2» получает наивысший общий балл по всем узлам единого списка. Таким образом, CNN распознает исходное рукописное изображение как «2».

В чем разница между CNN и типичными NN?

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

Есть ли какой-нибудь предварительно обученный код CNN, который я могу использовать?

да. Если вы заинтересованы в изучении кода, Keras имеет несколько предварительно обученных CNN, включая Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet. , NASNet и MobileNetV2. Стоит упомянуть об этой большой базе данных изображений ImageNet, которую вы можете добавить или загрузить в исследовательских целях.

Бизнес-приложения

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