API FaceID предназначен для создания бэкэнд -инфраструктуры для аутентификации пользователей посредством распознавания лица. Этот API функционирует путем получения вектора представления лица (FRV) от удаленного клиента, а затем проверяя, соответствует ли это FRV существующему, хранящемуся в базе данных. На основании этой проверки доступ либо предоставляется, либо отрицается клиенту.
API FaceID доступен для любого клиента, способного отправлять HTTP -запрос. Разработанный с использованием Golang и после остальной архитектуры, API предлагает гибкость с точки зрения реализации клиента. Клиенты могут быть разработаны на любом языке программирования и могут происходить из различных платформ, таких как веб -сайт, мобильный или настольный компьютер. Эта бесшовная возможность интеграции позволяет включать функциональность распознавания лица в разнообразный набор приложений. Примечательно, что процесс получения FRV от клиента выходит за рамки обязанностей FaceID API.
Документация API доступна по адресу http://faceid.orionsoft.site/reference
Примечание. Вы можете использовать векторы, расположенные на файле vectors.json в корневом каталоге этого проекта для проверки API. Эти векторы уже хранятся в базе данных.
Распознавание лица - это технология, которая включает в себя выявление и проверку людей, анализируя и сравнивая их особенности лица. Это подмножество биометрической идентификации, и он имеет различные приложения, включая системы безопасности, аутентификацию и контроль доступа пользователей. Вот упрощенный обзор того, как работает распознавание лица:
Обнаружение лица: первым шагом является местонахождение и извлечение грани из изображения или видео кадра. Это делается с использованием алгоритмов обнаружения лиц, которые идентифицируют потенциальные области поверхности в входных данных.
Выравнивание лица: как только лицо обнаружено, алгоритм может выполнять выравнивание лица, гарантируя, что лицо находится в стандартизированном положении. Это помогает в нормализации функций для точного сравнения.
Извлечение признаков: это важный шаг, где отличительные особенности лица извлекаются и превращаются в численное представление. Эти особенности могут включать расстояния между ключевыми достопримечательностями лица, углами между определенными точками и другими данными, которые могут отличить одну лицо от другой. Популярные методы извлечения функций включают локальные бинарные паттерны (LBP), гистограмму ориентированных градиентов (HOG), а в последнее время методы на основе глубокого обучения.
Кодирование функций: извлеченные функции затем преобразуются в компактное представление, которое можно легко сравнить с другими представлениями лица. Это часто включает в себя снижение размерности особенностей при сохранении их дискриминационной информации.
База данных Face: В вашем сценарии у вас будет база данных, содержащая представления лица (или встраивания) авторизованных пользователей. Эта база данных может быть создана путем сбора и обработки набора изображений каждого пользователя во время регистрации.
Сопоставление лица: когда пользователь пытается получить доступ, их представленное лицо обрабатывается с помощью одного и того же трубопровода: обнаружение, выравнивание, извлечение функций и кодирование. Полученное представление лица затем сравнивается с представлениями в вашей базе данных лиц, используя метрику расстояния, такую как евклидово расстояние или сходство косинуса. Идея состоит в том, чтобы найти ближайший матч.
Порог: сравнение дает оценку сходства. Вы бы установили пороговое значение, над которым отправленное лицо считается совпадением с лицом в базе данных. Порог помогает сбалансировать ложные позитивы и ложные негативы.
Принятие решений: на основе оценки сходства и порога принимается решение, предоставлять ли доступ или нет. Если оценка выше порога и в пределах приемлемого диапазона, доступ предоставляется. В противном случае доступ отрицается.
Непрерывное обучение: Для повышения точности распознавания с течением времени некоторые системы реализуют непрерывное обучение. Это включает в себя периодическое обновление представлений лица в базе данных с использованием новых изображений пользователей. Это может помочь объяснить изменения в внешности из -за таких факторов, как старение или волосы на лице.
FRV - это вектор, который представляет лицо человека. Это численное представление лица, и оно используется для сравнения лиц. FRV генерируется алгоритмом распознавания лица, реализованным библиотекой, используемой на стороне клиента. Клиентской стороной может быть любая платформа (Web, Mobile, Desktop и т. Д.). Давайте посмотрим на структуру FRV:
[
0.123, -0.456, 0.789, 0.234, 0.567, 0.123, 0.678, -0.345,
-0.987, 0.876, -0.123, -0.456, 0.789, -0.234, -0.567, 0.123,
0.678, 0.345, -0.987, -0.876, 0.123, 0.456, -0.789, 0.234,
0.567, -0.123, 0.678, 0.345, 0.987, -0.876, -0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
-0.567, 0.123, 0.678, 0.345, -0.987, -0.876, 0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234
]
Вверху у нас есть 128 Dimension FRV (вектор представления лица) численного представления чьего -либо лица. Различные библиотеки могут генерировать различные измерения FRV, которые могут быть 256, 512 или даже более измерений длиной. Мы можем думать, что этот FRV как числовая однозначная печать чьего -либо лица. Поскольку ни у кого не есть одно и то же лицо, ни у кого нет такого же FRV. Таким образом, FRV может быть использован для идентификации кого -то против базы данных FRV.
Этот API FaceID использует FRV, отправленный клиентом, чтобы определить, соответствует ли данную FRV какую -либо FRV в базе данных. Если данный FRV соответствует любому FRV в базе данных, API предоставляет доступ к клиенту. В противном случае API отрицает доступ к клиенту.
Векторная база данных - это нечто новое в мире баз данных, и ее использование быстро растет. В нашем случае мы используем Qdrant (https://qdrant.tech), векторную базу данных, которая является открытым исходным кодом и свободным для использования. Помните, что векторы представления лица - это в основном массив плавных чисел, которые могут быть огромными по размеру. На этом API FACEID мы используем FRV 128 Dimension, но он может быть длиной 256, 512 или даже больше размеров. Таким образом, нам нужна база данных, которая может хранить это огромное количество данных и может выполнять быстрый поиск на ней.
Традиционные базы данных SQL и NOSQL могут использоваться для хранения FRV, но они не оптимизированы для такого рода данных. Векторные базы данных оптимизированы для хранения и поиска векторов. Они также оптимизированы для быстрых поисков и могут выполнять поиск на миллионах векторов за несколько миллисекунд. Это означает, что лицо может быть идентифицировано за несколько миллисекунд, что отлично подходит для приложений в реальном времени.
Этот проект представляет собой простую реализацию API распознавания лица. Это простой API, который можно использовать для интеграции распознавания лица в любом приложении. API написан в Голанге и использует архитектуру остальной. Клиент может быть написан на любом языке и может поступать с любой платформы (Web, Mobile, Desktop и т. Д.). Если вы хотите реализовать распознавание лица в своем приложении, вы можете использовать API FaceID в качестве отправной точки. Пожалуйста, не стесняйтесь обращаться ко мне по адресу [email protected] , если у вас есть какие -либо вопросы или предложения. Спасибо!