Народ, всем привет. Распознавание лица искусственным интеллектом, наверно, одна из самых впечатляющих и в то же время повседневных технологий. Она есть в наших смартфонах, системах видеонаблюдения, аэропортах, на сайтах и даже в магазинах. Но что именно происходит в тот момент, когда ИИ "видит" лицо на фотографии? Как из набора пикселей он узнаёт, что перед ним лицо, и даже чей это человек?
Чтобы понять это, нужно разобраться в том, как работает система компьютерного зрения, и какие этапы проходит изображение до того, как ИИ скажет: "Да, это — лицо".
И первое, что нужно понимать, что ИИ сам по себе не "видит" изображение так, как человек. Для него фотография это лишь массив чисел. Цветное изображение представляет собой трёхмерный массив (RGB), где каждый пиксель описан тремя значениями, интенсивностью красного, зелёного и синего каналов. Таким образом, камера или загруженное изображение для алгоритма это просто цифровая матрица, которую нужно обработать.
Как отличить лицо от пятки?
Процесс распознавания лица начинается с детекции лица, это такой первый и обязательный этап. Здесь система должна определить, есть ли на изображении лицо и где оно находится. Это делается с помощью алгоритмов, обученных находить характерные черты: глаза, нос, рот, овал лица.
Исторически первым успешным методом стала каскадная классификация на основе признаков Хаара (например, в OpenCV), но в современных системах чаще используются свёрточные нейросети (CNN), такие как MTCNN или RetinaFace. Эти модели обучены на миллионах изображений, и они способны находить лицо даже под разными углами, при плохом освещении и частичном перекрытии.
После того как лицо найдено, следующий этап — выравнивание. Лицо может быть повернуто, наклонено или даже частично скрыто, поэтому система должна привести его к стандартному положению. Обычно используются ключевые точки, все те же глаза, уголки рта, кончик носа, и применяются геометрические преобразования, масштабирование, поворот, сдвиг. Цель сего действия добиться того, чтобы все лица на входе в модель сравнения выглядели одинаково, т.е. "смотрели прямо".
Если Вам нравятся наши статьи, и вы хотите отблагодарить автора (на развитие канала), нам будет очень приятно!
Когда лицо выровнено, начинается извлечение признаков. Здесь используется глубокая нейронная сеть, которая превращает изображение лица в вектор, длинный ряд чисел (например, длиной 128 или 512), называемый вектором признаков или эмбеддингом. Этот вектор некое компактное числовое представление лица. Он не содержит саму фотографию, но содержит уникальную комбинацию признаков, достаточную для сравнения лиц. У разных людей вектора будут различаться, у одного и того же человека похожи.
И эта часть ключевая. На этом этапе происходит своего рода "понимание" ИИ, он не узнаёт человека по фото, он преобразует его лицо в математическую сущность, с которой можно производить вычисления. Для этой задачи часто используются архитектуры вроде FaceNet, ArcFace или Dlib’s ResNet. Эти модели обучаются на огромных базах лиц с помощью метода, называемого контрастным обучением. Модель учится "сближать" вектора одного человека и "раздвигать" вектора разных людей.
Кто же ты, человек?
Когда у нас есть такой вектор, его можно сравнивать с другими векторами. Если задача просто распознать, есть ли лицо в базе, то достаточно вычислить расстояние между векторами, обычно евклидово или косинусное. Если расстояние меньше порогового значения, значит, это один и тот же человек. Если больше другой. Таким образом, вся "магия" распознавания сводится к простой геометрии в пространстве высоких измерений.
Если задача не распознавания, а верификации (например, разблокировка телефона), то система просто сравнивает вектор текущего изображения с вектором, записанным ранее, и делает вывод, совпадают ли они. В более сложных системах (например, в системах наблюдения) сравнение может идти против огромной базы векторов, сотни тысяч и миллионами лиц. Чтобы это происходило быстро, используются специальные структуры данных, индексация и предварительная фильтрация.
Следует отметить, что такие системы становятся всё более устойчивыми к изменениям внешности, стрижке там, макияжу, возрасту, даже ношению маски. Обучение на больших и разнообразных датасетах делает модель способной фокусироваться на устойчивых чертах лица. Кроме того, современные алгоритмы учитывают даже глубинную структуру черепа, а не просто форму носа или губ.
Но не все так просто
Однако распознавание лиц не лишено проблем и ограничений.
- Во-первых, оно может давать сбои при плохом освещении, низком разрешении или в случае необычных выражений лица.
- Во-вторых, есть вопросы этики и конфиденциальности, ведь сбор и хранение биометрических данных регулируется в разных странах по-разному, а в некоторых случаях может нарушать права человека.
- Кроме того, алгоритмы могут проявлять предвзятость, ну например, хуже распознавать лица людей определённых этнических групп, если в обучающей выборке они были представлены недостаточно.
В ответ на это разрабатываются методы повышения прозрачности и справедливости моделей, балансировка датасетов, регулярные проверки точности на разнообразных группах и даже объяснимые ИИ-системы, которые позволяют "заглянуть внутрь" нейросети и понять, какие признаки она использует при распознавании.
Также стоит различать распознавание лица (идентификация) и детекцию (обнаружение). Первая — это попытка определить кто перед камерой, вторая — просто найти где находится лицо. Есть и промежуточная задача, анализ лица. Скажем, определение пола, возраста, эмоций, направления взгляда и других характеристик. Эти данные тоже могут использоваться в маркетинге, безопасности, UX-исследованиях.
Кстати, у нас есть и другой канал, FIT FOR FUN, про фитнес, бодибилдинг, правильное питание, похудение и ЗОЖ в целом. Кому интересно, ждем вас в гости!