Сохранен 28
https://2ch.hk/pr/res/1301394.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

НИД ХЕЛП

 Аноним 26/11/18 Пнд 15:21:10 #1 №1301394 
15423333243810.jpg
Как организовать быстрый поиск по картинкам, как в гугле например?

Имеется прога, которой можно скормить картинку и она должна найти похожую из базы.

Прога эта (нейросеть) перерабатывает картинку в массив данных из 100 чисел. Далее через евклидово пространство она сравнивает 2 массива и говорит похожа эта картинка или нет на загруженную - с этим проблем нет.

Проблема в том, что сравнение 2 массивов занимает много времени. 1 млн массивов - 35 секунд. Даже если взять мощный проц, то время сократится не значительно 10 секунд тоже критично, нужно максимум 1, а лучше 0.1 секунду

Соответственно нужно менять алгоритм. Придумало ли человечество функцию, которой можно описать массив несколькими цифрами, чтобы потом просто в базу сделать запрос, типа SELECT * FROM table WHERE value1 > x AND value1 < y или типа такого, чтобы из 1 млн записей выбрать хотя бы 1000 более менее похожих и дальше уже работать с ними?
Аноним 26/11/18 Пнд 16:55:25 #2 №1301437 
https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7
Аноним 26/11/18 Пнд 17:25:15 #3 №1301446 
>>1301437
Ты хочешь сказать, что надо искать сначала по каким то общим признакам и потом уже в полученном результате полный анализ делать?
Не выйдет, нельзя отделить какие то части картинок, чтобы например евклидово расстояние считать между 10 точками для увеличения скорости, к тому же обоссаный питон обсирается считать даже в 10 точках - очень долго делает это.
Надо как то сократить весь массив, описав его 1 числом например или типа того, короче массиву индекс какой-то, не обязательно уникальный, просто чтобы сократить поиск в 1000 раз например
Аноним 26/11/18 Пнд 17:29:16 #4 №1301448 
>>1301446
То есть допустим у меня есть массив
[1, 3, 4, 1, 6, ... ]

Есть массив принадлежащий этой же картинке, но немного отличающийся (другие цвета, ракурс и тд)
[1, 4, 5, 1, 6, ... ]

Есть куча массивов совершенно других
[10, 321, 1, 111, 228, ...]

И вот надо как то сократить каждый массив до 1 числа, чтобы я сделал запрос УСЛОВНЫЙ SELECT FROM TABLE WHERE idx < 100 AND idx > 20 и получил в результате 1 и 2 массивы
Аноним 26/11/18 Пнд 17:30:48 #5 №1301449 
пикрелейтед
Аноним 26/11/18 Пнд 18:41:51 #6 №1301476 
Это классическая задача, и для больших размерностей она не очень хорошо решена. Смотри, например, k-d tree. Есть приближенные алгоритмы.
Аноним 26/11/18 Пнд 21:28:41 #7 №1301559 
>>1301394 (OP)
ты же понимаешь, что тян на картинке тебе никогда не даст?
Аноним 26/11/18 Пнд 22:05:36 #8 №1301579 
>>1301559
Тян, которые делают себе такие сисяндры и набивают татухи, обычно дают за скромный ценник.
Аноним 26/11/18 Пнд 22:14:59 #9 №1301583 
>>1301559
А эта тян эвклидово расстояние за 1 секунду у миллиона записей с 100 параметрами высчитает? Нет? Вот и иди нахуй
Аноним 26/11/18 Пнд 22:17:45 #10 №1301585 
>>1301583
Вот ты высчитываешь, а она тебе тем более не даст.
Аноним 26/11/18 Пнд 22:18:46 #11 №1301586 
>>1301585
Да мне похуй. Я тут анону сервис для поиска и травли шлюх пытаюсь сделать, а он мне про то что шлюха не даст, ЛУЛ
Аноним 26/11/18 Пнд 22:25:51 #12 №1301588 
>>1301394 (OP)
ОП, а ты знаешь про pHash? Не подойдёт?
> «Выглядит похоже». Как работает перцептивный хэш
> https://habr.com/post/120562/
Вроде даже грозились в SQL завести функцию сравнения расстояния Хэмминга.
Аноним 26/11/18 Пнд 22:28:39 #13 №1301589 
>>1301588
Я уже вроде нашел решение, завтра пробовать буду на апач солр. Сравнение хешей не прокатит, тоже медленно будет
Аноним 26/11/18 Пнд 22:30:52 #14 №1301590 
>>1301589
>Сравнение хешей не прокатит, тоже медленно будет
Хотя может и не будет, но погрешность будет большая мне кажется, может вообще вычеркнет того, кого не надо
Аноним 27/11/18 Втр 15:57:58 #15 №1301984 
>>1301446
Это и есть кластеризация, у тебя каждая картинка характеризуется одним числом - номером кластера, когда приходит запрос, определяешь, к какому кластеру определяется картинка, потом сравниваешь с картинками из кластера.
Аноним 27/11/18 Втр 18:49:54 #16 №1302093 
>>1301394 (OP)
https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_surf_intro/py_surf_intro.html
Аноним 27/11/18 Втр 21:10:41 #17 №1302179 
>>1302093
Типа объединить бюлижайшие точки т разбить 100 точек на 10 групп например? Ну можно попробовать. Пока попробовал тупо в мускуле запрос сделать, по первым 30 точкам + накинул индексы на них, вроде быстро считает, но этот вариант тоже можно попробовать будет. Если всё равно будет медленно, то этот вариант на апаче попробовать, тогда уж точно должно будет летать
Аноним 28/11/18 Срд 11:56:18 #18 №1302411 
>>1301394 (OP)
Хэшируй в числа, раскидывай в бакеты. Сначала ищешь бакет по хэшу, потом линейно проверяешь схожесть своей картики с теми, что имеют одинаковый хэш (т.е. находящиеся в одном бакете).
Аноним 29/11/18 Чтв 17:01:54 #19 №1303212 
>>1301394 (OP)
Фандфейс пилишь?
Аноним 29/11/18 Чтв 17:10:06 #20 №1303215 
>>1303212
Да, но походу не выйдет. Если с игровой пеки запускаю сканирование фоток, то 1 млн аккаунтов в день. С ноутбука 250к аккаунтов в день. Запускать сайт стал бы только со 100млн аккаунтами и больше, свой комп не хочу 3 месяца держать включенным и не пользоваться им
Аноним 29/11/18 Чтв 17:10:24 #21 №1303216 
>>1303215
в сутки*
Аноним 29/11/18 Чтв 17:13:49 #22 №1303217 
>>1303215
Причем 50% времени занимает именно скачивание фотки, а не обработка, хуй знает почему так долго. Качаю в разрешении 400px
Аноним 30/11/18 Птн 06:33:11 #23 №1303444 
>>1303215

Не осилил сервер?
Аноним 30/11/18 Птн 11:15:38 #24 №1303491 
>>1303444
Потом дедик закажу может
Аноним 30/11/18 Птн 13:30:34 #25 №1303577 
>>1301586
Годная идея, только для шлюх надо ещё поиск по лицу сделать.

Вот что нашёл https://www.pyimagesearch.com/2017/11/27/image-hashing-opencv-python/
Аноним 30/11/18 Птн 13:37:22 #26 №1303582 
>>1301589
Надо вкорячить Hamming distance как UDF в скл базу, тогда взлетит
Аноним 30/11/18 Птн 21:08:46 #27 №1303924 
>>1303577
Хеширование картинок и прочая хуйня вообще не прокатит, тут нейросеть чекает лицо на фотографии и записывает какие то СВОИ параметры лица в 128 точках. Что эти 128 точек означают - нигде не написано, но если искать схожие лица по первым точкам (по первым 30 например), то вполне себе ищет, не так же точно как по всем, но можно второй раз прогонять просто по полученному результату и норм будет.

Пока сайт доделаю короче, потом наверное спарсю только россию (или только ДС и ДС2), потом прочий СНГ (там на все страны как на ДС еле наберется).

Учитывая что в вк у каждого третьего (или даже меньше) норм фотка стоит, то база на 30-50кк получится, думаю мускул даже справится более менее

>>1303582
Типа схожесть лица? Ну так по ней же и высчитывается. Если взять 2 разные фотки 1 человека, то результаты будут РАЗНЫЕ, но очень близкие если мереть евклидово расстояние
Аноним 01/12/18 Суб 15:20:42 #28 №1304285 
>>1303924
Ну дистанция Хэмминга считает побитовую дистанцию любых данных, чем больше совпадений будет тем меньше дистанция. Попробуй её.
comments powered by Disqus