баянометр

баянометр

Подписчиков:
57
Постов:
176
https://bayanometr.cc странно работает. Когда даю картинку которую он не может найти выдаёт 3 секретки, 2 поста Telepurte, breast expansion, гифку с мороженным, тренажёр-член и политоту.
Данный пост создан исключительно с целью продемонстрировать, что реактор может иметь встроенный баянометр приемлемой функциональности без существенных затрат на его реализацию и сервера. Он ни в коем случае не пытается бросить тень на существующий баянометр от ExtraDj - вполне возможно его баянометр в сто раз круче (я не знаю).
Я совсем недавно начал создавать посты на реакторе, но уже успел ощутить всю проблематику поиска повторяющегося контента на этом ресурсе. И задумался о том, как много времени реактор мог бы сэкономить постерам, имей он встроенный баянометр. Сколько человек не смогли преодолеть сложности размещения контента на реакторе и сколько перестали это делать из-за большого количества времени, которое на это требуется (сужу исключительно по себе). 
А недавно ещё и получил разрешение от Вождя. Что ж, доступа к коду сайта и базе у меня нет. Выкачивать весь его контент, чтобы собрать отдельный баянометр я особо желанием не горю. Но могу, по крайней мере, разобраться в ситуации и продемонстрировать Proof of concept.
Я дотнетчик по большей части, поэтому технологии используются соответствующие. Вряд ли технологии, которые используются реактором, имеют какие-то существенные ограничения чтобы справиться с этой задачей.
Итак. Перцептивный хэш - похоже, то, что нам нужно. Проблема распространенная, поэтому сразу же нашлась библиотека, которая этот хэш считает - по крайней мере эту рутину писать не придётся. Как будто мы ещё ничего не сделали, а решение уже готово. Протестируем.
Первый кадр из видео. Разрешение 720х1280 против 320х568.
AverageHash и PerceptualHash - абсолютно одинаковые цифры. А это значит, что если вы сохраните этот хэш в БД рядом с картинкой, вы легко сможете достать по нему запись о картинке. Похоже баянометр в простейшем виде уже готов.
Извлечение данных. Т.к. некоторые реакторчане ссылались на проблему поиска в большом количестве данных, нужно протестировать и это. Приблизительно 7000000 картинок есть на реакторе. Возьмём MS Sql server. Создадим таблицу с 7000000 записей со случайными цифрами в качестве хэша. Чтобы всё было по-честному:
□ SELECT a,b
FROM ( SELECT TOP 200 a,b FROM test ORDER BY a DESC) SQ ORDER BY a ASC
.00 % -
И Результаты		ijl Сообщения
	a	b
1	! 6999800 !	6964075964389932
2	6999801	16589863736228552
3	6999802	5026461835299065
4	6999803	43764015194280080
5	6999804	62220703321801248
6	6999805
Изменим одно из значение на реальный хэш с картинки выше. И посмотрим сколько надо времени чтобы её найти.
SET STATISTICS TIME ON
select * from test where b=73051550389305359 JO %	-
IS Pe3yjibTaTbi		ill Coo6mehMH
A		B
1	2000000	73051550389305359,баянометр,разработка,длиннопост
SET STATISTICS TIME ON
select from test where b-73051550389305359
.00 % -
Щ Результаты Ф Сообщения
Время синтаксического анализа и компиляции SQL Server зремя ЦП = 0 мс, истекшее зремя = 0 мс.
Зремя работы SQL Server:
Зремя ЦП = 0 мс, затраченное зремя = 0 мс.
Зремя синтаксического анализа и
По-моему проблем тут нет.
Дальше. Что если картинка немного отличается от оригинала. Например нам надо сравнить первый кадр видео с гифкой. Гифка, будет иметь кучу артефактов и, возможно, другой начальный кадр. Как тут:
Либо яркость на картинке выкручена на максимум, как тут:
Хэши не совпадают. Всё пропало? Не совсем. Обратите внимание на подсчёт "похожести" хэшей внизу картинок. Всё что нам нужно сделать, чтобы начать находить не только идентичные картинки, но ещё и похожие - это перенести логику подсчёта похожести в запрос к БД. Получим.
|SET STATISTICS TIME ON
DECLARE @b Bigint = 73051550389305359
select from test where 64 Bit_Count(b @b))	100	64)>92
100 % -
® Pe3>^bTaTbi	ill Coo6mehMH
A	B
1 ! 100	218292640519487501
2 2000000	73051550389305359,баянометр,разработка,длиннопост
SET STATISTICS TIME ON
DECLARE @b Bigint = 73051550389305359
select from test where ((64 - Bit_Count(b A @b))	100 / 64)>92
.00 % -
Щ Результаты Ф Сообщения
Зремя скятахскчесхого анализа и компиляции SQL Server: время ЦП = 0 мс, истекшее время = 0 мс.
Зремя работы SQL Server:
Зремя ЦП = 0 мс,
Теперь по затратам времени и ресурсов. На этот Proof of concept ушло несколько часов - большая часть на подготовку и написание поста. Добавить его на любой свой сайт я могу за несколько часов. Нагрузку на сервер вы можете видеть в статистике запроса к БД. По-моему скромному мнению - она никакая. А если учесть, что эти запросы будут редкими - только при создании новых постов, то ими вообще можно пренебречь. Железу, на котором запущен sql сервер более пяти лет. Более того, пять лет назад это был бюджетный домашний комп.
Доброго, господа баянисты
Хочу поблагодарить всех кто донатил на патероне. Спасибо, за то что сняли с меня ответственность по оплате хостинга и домена. На сейчас 3 из 4 патронов ушли, а ответственность вернулась ко мне. Я на сейчас не сильно уверен в стабильной своего дохода, потому, буду рад и впредь не волноваться на эту тему
Ссылки на patreon/buymeacoffee есть на сайте баянометра
Спасибо 
Попробовал снова поиграться с более продвинутыми методами поиска, но, опять не пришел к положительным результатам. SIFT/SURF слишком громоздки. ORB ведет себя тоже неплохо, но полегче, и исполняет поставленные задачи, но, встает более серьезная проблема - поиск. Для снижения количества ложно-положительных результатов поиска нужно увеличивать количество точек для изображения. Увеличение количества точек - больше данных для поиска. Больше данных для поиска - меньше скорость и требуется больше мощностей. На реакторе больше 7 миллионов изображений. При < 100 точек - результат ультра гавно. 200-300 - более менее, но не на таком объеме. Это неплохо работало бы, если бы было 1-2 миллиона изображений. +- допустимые результаты, для такого объема, это 450+ точек на изображение. Итого, 3 миллиарда точек. Это порядка 200+ гигов данных, которые нужно хранить в оперативе, для более быстрого поиска. И даже при таких условиях поиск одной картинки длиться порядка 20-25 секунд, что уже далеко за приделами комфортного уровня. Можно ли решить это? Да, конечно, но это уже нужно распределять все на штуки 4+ сервера, а цена аренды такого удовольствия выходит слишком большая(150$+). Согласно опросу недавнему, она вроде бы подъемная, но, я прекрасно понимаю что обстоятельства у людей меняются. Кто-то переоценил свои финансовые возможности, а кого то просто заебет донатить на это, а бегать постоянно делать посты на это тему... Ну такое себе удовольствие.
Потому сорян, я правда старался, но уперся в ограничения не связанные с программными аспектами. Или может вы подскажите метод поиска hamming, который работает быстро на огромном объеме данных, и при этом не требует существенных апаратних ресурсов

p.s. это разве что собирать сразу на годик+ аренды, и тогда есть смысл дальше играться, но уже с несколькими серверами
Попробую на досуге еще поиграться с алгоритмами поиска. Даже если все будет успешно - на повторное заполнение базы с 0 может уйти месяц-другой, так что скорых изменений не ждите, а пока есть просьба - накидайте постов, которые очевидно являються дублями, но при этом баянометр их не находит. Спасибо
Под недавним постом меня снова попинали на тему того, как хуево работает баянометр и все такое. О его недостатках мне хорошо известно, но, к сожалению это просто ограничения алгоритма который используется(pHash). Соответственно что бы от них избавиться - нужно заменять алгоритм, заново собирать новую базу и т.д. В качестве тестов уже был испробован ORB и SURF, и разные варианты на их основе. Они себя неплохо показали, особенно с поиском кропнутых картинок, но, когда речь заходит о другой деформации картинки в лице шакалов или ватермарков - начинаются большие проблемы. Даже незначительное шакальство они переваривают плохо и начинают давать в разы больше ложно положительных результатов, или наоборот не находить то, что точно должны. Был испробован другой алгоритм, использующий акселерацию ресурсами GPU. Он себя показал неплохо, но требует просто дохуища ресурсов, а без них - просто неюзабелен, ибо время поиска даже на тестовом, не особо большом объеме данных, достигало минут. Арендовать сервер с GPU крайне недешевое удовольствие, потому отпал как вариант. Сейчас на примете есть несколько еще алгоритмов которые можно было бы попробовать, и которые не на столько жрущие, но все ровно сулят существенным увеличением требований к серверу, потому решил провести опрос, дабы понимать вообще стоит тратить время на тесты и проработку вариантов, или оставляем как есть.
Текущий сервер на котором крутиться баянометр обходиться 12$/месяц. Его хватает с достаточным запасом, а благодаря трем реакторчанам на патреоне я могу снять с себя вопрос содержания сервера, за что им отдельное спасибо. Предполагаемая стоимость аренды сервера которого будет достаточна для +- адекватной роботы с терпимой скоростью поиска лежит в диапазоне 40-70$. Брать на себя полную ответственность за спонсирование этого я не готов, потому решил спросить у вас, готовы ли вы оплачивать содержание этого добра, если это будет реализовано. Метод оплаты - patreon / buymeacoffee. Отвечайте пожалуйста честно, с расчетом на своим реальные возможности, а так же учитывая среднесрочное прогнозирование. Спасибо
Готовы ли вы спонсировать содержание сервера баянометра
Да, готов. Могу позволить выделить на это 10$/мес. без какого либо дискомфорта
20(1,68%)
Да, готов. Мой комфортный придел - 3$ или около того
55(4,63%)
Мне бы хотелось что бы это было реализовано, но на финансовую поддержку действа я не готов
263(22,12%)
Забей хуй, и так нормально все работает, а те косяки которые есть - терпимы
851(71,57%)

Отличный комментарий!

,Приколы для даунов,разное,joyreactor,баянометр,BadComedian,Bad Comedian

Мне вот тут в почти полночь пятницы в голову пришел интересный вопрос. А есть ли трёхстрочные баяны?

хех, если уж по тегу баянометра подсказывает тег "баянометр кричал", то грех не добавить парочку

Отличный комментарий!

Мы работаем над этим

Баянометр теперь в Telegram

Сделал бота для Telegram. Кидаешь картиночку - получаешь баяны. Можно пересылать посты с других чатов, тоже работает

Отличный комментарий!

даже в телеге работает баянометр. но не на реакторе.
Прошло 6 лет с запуска баянометра, и видимо момент таки наступил. Баянометр теперь умеет кушать невероятно современный и всем нужный формат под названием WebP. Возрадуйтесь же!
,баянометр,реактор

Отличный комментарий!

правда реактор всё так же не умеет его принимать =)
Но ведь можно, делай.
Старый домен bayanometr.xyz полностью прекратил свою работу. Теперь баянометр доступен только по ссылке bayanometr.cc
Скрыто постов: 2
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме баянометр (+176 постов - баянометр)