Не так давно в своем канале на YouTube сотрудники Яндекса рассказали о таком интересном аспекте работы поисковой системы, как поиск дублей изображений. Для начала были даны пояснения о причинах проведения такой работы. Основных причин было указано две.
Причина 1. Поиск дублей картинок необходим Яндексу для более точного понимания того, что же именно изображено на картинке
Поиск изображений в картиночном поиске Ядекса происходит по текстовым запросам пользователей, т.е. по ключевым словам. А вот определение того, что изображено на картинках, которые нужно показывать в ответ, происходит только по их текстовым описаниям, т.е. по тому тексту, который окружает картинку, расположен рядом с ней, т.е. по текстовому контексту. В этот контекст попадают такие элементы как: текст страницы, слова в ссылках, содержимое атрибутов alt и title, название страницы и пр.
Иногда картинка имеет отдаленное отношение к тому тексту, который ее окружает. В этом случае на помощь приходят копии данного изображения, размещенные на других сайтах. Сопоставив описание картинки на одном сайте с описанием ее копий на других сайтах, можно точнее понять о чем изображение. И здесь чем больше копий картинки, тем точнее поисковая система сможет догадаться о ее содержании.
Немного статистики. У самых популярных изображений бывает порядка миллиона копий.
Причина 2. Объединение всех копий одного изображения в одну группу в картиночном поиске
Нет смысла по запросу одного пользователя показать в результатах картиночного поиска множество копий одного и того же изображения. Тем более, что чем чаще копируется разными сайтами одно и тоже изображение, тем выше оно отображается в картиночном поиске (картинка популярна, а значит она интересна и полезна для большинства). Т.о. приходится одинаковые изображения показывать как единый блок, чтобы показать пользователям как можно больше разных картинок.
Немного статистики. Яндекс имеют более 10 миллардов изображений в своей базе.
Так как же происходит поиск дублей картинок?
Поиск дублей проходит в несколько этапов. При этом самый простой вариант поиска – поиск полных дублей осуществляется по совпадению контрольных сумм файлов-изображений.
А далее сразу переходим к самой сложной задаче – нахождению дубликатов, которые представляют собой неполные копии. Неполные копии часто получаются путем модификации исходных изображений следующими способами: наложение водяных знаков, надписей и подписей, обрезки исходной картинки, изменением цветов, сжатием по качеству, перефотографированием оригинального изображения и множеством других способов. Однако поисковая система может успешно находить неполные дубли. Как?
Этапы поиска неполных/частичных дублей изображений:
- Нахождение изображений-кандидатов на то, чтобы считаться дубликатами (по текстовому описанию).
- Использование технологии, известной как компьютерное зрение: происходит выявление интересных точек изображения (основные ключевые, стабильные точки картинки), составление числового описания окружения стабильных точек (является очень устойчивым к различным видам искажения изображений), сопоставление относительного положения интересных точек изображения друг относительно друга.
- Далее осуществляется поиск по базе данных с информациями о специальных точках других изображений на предмет поиска соответствия. Так выявляются изображения частичные дубли.
- На последнем этапе изображения-дубли приводятся к одному масштабу и далее поводится более тяжелая попиксельная проверка и выносится окончательный вердикт о степени совпадения картинок-копий.