Как ИИ распознаёт изображения? Понятное руководство от пикселей до CNN
Разблокировка по лицу, альбомы с сортировкой по людям, определение растений по фото — за всем этим одно и то же: заставить машину понимать изображения. Ключ прост: сначала понять, как выглядят числа, затем — как сеть объединяет их в «признаки».
Для машины изображение — сетка чисел
Цветная фотография состоит из десятков тысяч пикселей, и каждый хранит три значения яркости — красного, зелёного и синего — обычно от 0 до 255. Так что, когда изображение попадает в сеть, это на деле длинный список чисел, уложенных в аккуратную сетку.
С этой «сеткой чисел» первый шаг сети довольно скромный: искать в ней небольшие локальные изменения — например, резкий скачок яркости между соседними пикселями, то есть контур.
От пикселей к признакам: объединение слой за слоем
Отдельный контур сам по себе мало что значит, но их сочетание уже осмысленно. Более глубокие слои собирают простые контуры в кривые, углы и текстуры; ещё более глубокие — в такие части, как глаз, нос, колесо или лепесток.
Эти правила не прописывают вручную — сеть учится им во время обучения. «Признаки», которые осваивает каждый слой, — это перекомбинация выхода предыдущего слоя; чем глубже, тем абстрактнее.
Классический пример: рукописные цифры MNIST
Почти все начинают распознавание изображений с MNIST. Это десятки тысяч картинок рукописных цифр размером 28×28 пикселей, каждая уже помечена правильным ответом от 0 до 9 — идеально для тренировки «посмотреть и классифицировать».
Изображения маленькие, классов мало, поэтому даже скромная сеть за минуты достигает высокой точности — идеально, чтобы наблюдать, что же происходит при обучении. Разобравшись с MNIST, вы естественно перейдёте к более сложным задачам.
Что CNN добавляет к обычной сети
Если соединить каждую позицию пикселя напрямую со следующим слоем, число параметров взрывается и обучение становится трудным. Ключевая идея CNN — свёртка: маленькое окно скользит по всему изображению и один и тот же набор весов многократно используется для поиска однотипного узора. Так сохраняются пространственные связи, а параметров становится намного меньше.
Кроме того, в CNN часто применяют «пулинг», уменьшающий карты признаков: сети важнее, есть ли признак, а не на каком именно пикселе он находится, — это делает её устойчивее к небольшим сдвигам. Свёртка и пулинг, накладываемые слой за слоем, — основа современного распознавания изображений.
FAQ
Почему у чёрно-белого изображения один канал, а у цветного — три?
Чёрно-белому изображению нужно одно значение яркости на пиксель — отсюда один канал; цветное хранит три значения — красного, зелёного и синего — на пиксель — отсюда три канала. Сеть обрабатывает их одинаково, просто входных чисел чуть больше.
Нужно ли много изображений для обучения распознаванию?
Обычно чем больше, тем лучше, но объём можно нарастить за счёт аугментации данных — небольшого поворота, обрезки или отражения изображений. Ещё можно применить transfer learning: модель, уже обученную на огромных наборах изображений, дообучить на ваших небольших данных.
Можно ли обмануть ИИ оптическими иллюзиями?
Да. Изменение всего нескольких пикселей может заставить модель принять A за B — это так называемые состязательные примеры. Они показывают, что модель учит статистическое сходство, а не по-настоящему понимает изображение, как человек, поэтому в критичных для безопасности задачах нужны дополнительные меры защиты.
Разберитесь в распознавании изображений шаг за шагом с AI Neural
Откройте AI Neural и на интерактивных примерах понаблюдайте, как пиксели превращаются в контуры, а контуры — в части. Так идея CNN становится интуитивно понятной — куда проще, чем заучивать определения.