Добавить в корзинуПозвонить
Найти в Дзене

Как работает ИИ система распознавания лиц

Навеяно недавней беседой в группе обсуждения моего канала. Там я обещал рассказать как нейросети раскрашивают фото, но начну с того как они распознают лица. Мне кажется что это проще. В реальности система распознавания лиц устроена сложнее, но принцип примерно такой. Во всяком случае описываемая в посте система полностью работоспособна и достаточна для понимания принципов. Про нейросети раскраски расскажу в ближайшее время. Итак. Сначала делается некая нейросеть (нейросеть это просто программа на питоне) которая называется автоэнкодер или по русски автокодировщик. Архитектурно это симметричная многослойная нейросеть похожая на бабочку, которая состоит из кодера и декодера. Кодер кодирует входящие данные в одномерный массив (вектор), а декодер декодирует данные, т.е. пытается из этого вектора восстановить первоначальную информацию. Поскольку любая нейросеть работает только с числами то на вход нейросети вместо фотографии лица подаём двумерный массив (матрицу которая этому лицу соот

Как работает ИИ система распознавания лиц.

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

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

Про нейросети раскраски расскажу в ближайшее время.

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

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

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

Теперь нужно убрать из обученной нейросети декодер (отрезать то, что справа от вектора, там где нейрончики оранжевого цвета). И у нас получится нейросеть, которая отлично кодирует изображения лица в уникальный вектор размерностью 128 (вектор это просто последовательность из 128 чисел). И этот вектор для каждого лица будет свой уникальный. Ну плюс минус конечно. Причем какая часть лица в этом векторе соответствует какому числу известно одному Богу, но для работы это и неважно. Важно, что у нас появился инструмент который кодирует лицо в вектор. Теперь просто склыдываем вектора в базу данных и при необходимости ищем ближайший вектор к искомому и смотрим чьему лицу этот вектор соответствует. Можно ещё сказать красиво - "наше лицо это точка в 128 мерном пространстве" :)

Вот так быстро и просто.

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

Именно так и "думает" современный ИИ, а не как пишут в некоторых книжках. :)

PS картинку нарисовала GPT и как я не просил ее лучшего результата не добился, оставлю как есть.