Самый технически простой метод поиска в базе по фото?

Приветствую,
хочу попробовать сделать жалкое подобие поиска по лицам в своей базе(которая совсем не нормализованная да и рубо говоря она у меня как временный сарай) по заранее вычисленному некому хешу/контрольной сумме на основании характеристик лица, как в свое время уже сделали многие) во общем нашел интересный и очень простой модуль face-recognition(https://pypi.org/project/face-recognition/) но так и не смог найти умеет ли он высчитывать для лиц что то наподобие хеша/контрольной суммы который я смогу использовать для дальнейшего быстрого поиска в базе?

База на данный момент хранит фото в base64(согласен что вариант далеко не лучший :) ) размер базы 40гиг, стал вопрос как добавить в нее поиск по лицам(пусть хоть в самом примитивном и костыльном виде), какое решение пока вижу я:

1. в цикле выгружать каждое фото в base64
2. собирать из base64 фото
3. используя модуль face-recognition сравнивать с эталонным фото.

Единственное что это будет ох как не быстро(хотя вроде PC мощный может и скорость будет не такая ужасная) так как фото больше ляма... но как самый костыльный вариант работать думаю будет.. С другой стороны и поиск я буду делать не часто. Подскажите технически более верное и самое главное быстрое решение, в идеале хотелось бы получить чудо контрольную сумму для каждого найденного лица на фото и уже по ней просто в базе обычным SELECT-ом делать выборку.
  • Вопрос задан
  • 426 просмотров
Пригласить эксперта
Ответы на вопрос 3
Как бы поступил сам:
  1. при помощи OpenCV нужно реализовать модуль, у которого на входе путь к изображению, а на выходе вектор весов длиной 64, на базе которого вычисляется хэш-сумма. Это самая трудная часть.
  2. программа-индексатор
    Сканирует директории рекурсивно, передавая модулю путь к изображению и занося хэш-сумму в БД каждого из них
  3. программа с пользовательским интерфейсом,
    получающая на входе изображение, из которого вычисляется хэш-сумма. Составляется запрос в СУБД, в котором хэш-сумма изображений сопоставляется с искомой.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Можно сделать так:
1. Средний цвет пикселей всех горизонтальных линий.
2. Средний цвет пикселей всех вертикальных линий.

Получим 2 массива: средние цвета по горизонтали, средние цвета по вертикали.
Если размер фото 100x100, получим размер данных 100+100.

Сравниваем эти 2 массива с проверямой фоткой и балансируем минимизируем разницу расхождений при сравнении, сдвигая один из массивов влево или вправо.

После балансировки двух массивов из БД к двум массивам из сравниваемой фотографии, мы получим процент общего соответствия изображений.
Это не нейронка, но результат - схожий.
Ответ написан
Комментировать
Jeer
@Jeer
уверенный пользователь
В своё время делал вот по такому алгоритму, всё предельно просто
https://habr.com/ru/post/120562/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы