Как работает FACE ID. Сделаем за 2 минуты
Я часто слышу много информации о Face ID и искусственном интеллекте.
Интересно, как это работает на моем телефоне. Думаю, как мне самому сделать эту фичу.
Что, если мы попытаемся создать какой-то хеш из изображения. Если хеш слишком длинный, мы можем сократить его с помощью md5. Поскольку сумма md5 мала, у нас может быть только 32 символа.
Если мы сделаем 32 изображения вашего лица в разных положениях, этого достаточно, чтобы лицо получилось во всех положениях.
Капаясь в недрах NPM, я нашел интересный пакет: https://www.npmjs.com/package/image-hash.Этот пакет может сжимать изображение в строку нужного размера.
Тестируя пакет, я решил, что 8 символов достаточно для создания общей группы хешей.Захожу в Google и набираю «Сделать фото онлайн».
Первая позиция, и я нашел https://www.pixect.com/
Для большей уверенности я сделал 17 фотографий. Чтобы сделать этот квест быстрее, я решил назвать картинки от 1.jpg, 2.jpg до 17.jpg.
Создадим директорию под наши тесты, а в директории создадим файл faceid.js.
Добавим нужные пакеты.
npm init && npm install lodash image-hash
Открываем faceid.js и пишем код
const _ = require('lodash/array')
const { imageHash }= require('image-hash');
async function getUniqHashes(amount_images) {
var hashes = [];
for(i = 1; i <=amount_images; i++) {
await new Promise((resolve, reject) => {
imageHash(`/Users/my_user/Downloads/${i}.jpg`, 8, true, (error, data) => { // repleace the path !!!
if (error) return reject(error);
hashes.push(data);
resolve();
});
})
}
console.log(hashes.length, 'Total hashes. ', _.uniq(hashes).length,' uniq hashes');
}
getUniqHasnode(17);
Сохраните код в faceid.js и исполните
node faceid.js
Я получил результаты:
17 Total hashes. 9 uniq hashes.
Прекрасно! 9 уникальных хэшей из 17. Уникальные хэши образуют Face ID.Но сделать 17 фото это очень сложно.
Да, теперь мы можем попробовать использовать запись видео. Я считаю, что 10-20 секунд достаточно, чтобы собрать необходимый набор изображений. Сохраните видео и извлеките оттуда все изображения. Мы можем хранить копию хэшей в key-value хранилище и сразу же сопоставлять ключи.Никакого искусственного интеллекта нет. Простое дело логики.
Вот кстати фоточки которые я сделал.
Понравилась статья? Подписывайтесь на мой телеграм канал:https://t.me/itsitdude
Мой LinkedIn: https://www.linkedin.com/in/chukhlov/