Яндекс.Картинки и дубликаты изображений

Поиск по картинкам нужен в тех случаях, когда лучше увидеть, чем прочитать. Например, если надо узнать, как выглядит лиса [фенек], фотография зверька будет полезнее длинного текста про строение его ушей и длину хвоста. Иногда картинка — это хороший вспомогательный материал к основному ответу. Например, в результатах поиска по запросу [Айвазовский] будут присутствовать и репродукции его картин.
Яндекс ищет картинки через так или иначе связанный с ними текст, например, расположенное рядом с картинкой описание, её заголовок в html-коде страницы (и alt, и title), заголовок самой страницы или ссылка на картинку с другого сайта. Яндексу известны миллиарды изображений. Четверть из них — уникальные, а остальные — так называемые дубликаты, то есть картинки, которые не отличаются вообще или отличаются незначительно.

Яндекс.Картинки различают четыре вида дубликатов

Точные дубликаты — абсолютно одинаковые изображения, которые не отличаются ни одним битом.
Тумбнейлерные дубликаты (от англ. «thumbnail» — миниатюра) — изображения, которые различаются только размером, например, репродукция на сайте картинной галереи и маленькая картинка, которая на неё ссылается.
Полудубликаты — картинки c полупрозрачными надписями поверх изображения, незначительной цветокоррекцией, обрезкой или рамкой.
Расширенные полудубликаты — картинки с сильно измененными цветами или пропорциями, а также фрагменты исходных изображений.
У каждого изображения в интернете есть в среднем три дубликата. Чтобы результаты поиска Яндекс.Картинок не состояли из одинаковых изображений, сервис группирует дубликаты и показывает их в результатах поиска «стопками».

Поиск и группировка дубликатов

Чтобы компьютер мог понять, что изображено на картинках, и распознать дубликаты, изображения нужно «перевести» на понятный ему язык — язык чисел. В Яндекс.Картинках этим занимается специальная компьютерная система, программы которой обходят интернет, находят изображения и обрабатывают их: узнают необходимые данные о картинке, например, размер, цвет, формат (jpg, png и т.п.) и создают числовую характеристику изображения — сигнатуру.
На каждом изображении программа выделяет ключевые фрагменты. Затем уменьшает их до размера 16х16 пикселей, и каждому из 256 пикселей присваивает число, соответствующее яркости этого пикселя. Полученные комбинации чисел и есть сигнатуры.
Программа объединяет в группы изображения, у которых есть похожие ключевые фрагменты (то есть схожи их сигнатуры). Внутри этих групп выделяются еще более близкие изображения — у которых совпадают минимум два фрагмента. Изображения с похожими фрагментами становятся кандидатами в дубликаты. В них программа выделяет области, объединяющие все совпавшие фрагменты. Следующим шагом эти области уменьшаются до размера примерно 60х60 пикселей, переводятся в числовую характеристику и сравниваются между собой. Дубликатами признаются изображения, у которых области совпадают.

Использование дубликатов

У большинства изображений в интернете есть текстовые описания — их и используют Яндекс.Картинки при поиске. Если дубликаты размещены на нескольких разных сайтах, то, скорее всего, у них существует несколько разных описаний. При группировке дубликатов изображения Яндекс.Картинки объединяют их описания. Это позволяет определять наиболее частые фрагменты описания, тем самым улучшая точность поиска.
Допустим, у фотографии длинного синего запорожца есть сорок дубликатов. Пятнадцать из них подписаны «запорожец», десять — «синий запорожец», пять — «зелёный запорожец» и ещё десять — «лимузин».
Если поделить количество упоминаний каждого слова в подписях на общее число картинок, получится, что степень правдоподобия описаний следующая:
[запорожец] — 0.75 (30 картинок из 40)
[синий] — 0.25 (10 картинок из 40)
[лимузин] — 0.25 (10 картинок из 40)
[зеленый] — 0.125 (5 картинок из 40)
Соответственно, эта фотография будет релевантным ответом на запросы [синий запорожец] или [запорожец лимузин], хотя последнего словосочетания изначально в описаниях не было. Если у дубликатов встречаются противоречащие друг другу описания, как «синий» и «зелёный» в этом примере, то выбирается наиболее частое.
Все дубликаты найденной картинки пользователи могут увидеть на странице просмотра изображения. Там есть список «Копии картинки» и ссылка на страницу со всеми известными Яндексу дубликатами. С помощью этого списка, пользователь может выбрать подходящий размер искомой картинки, автор изображения найти поклонников своего творчества, а веб-мастер — узнать, в каком фотобанке можно приобрести нужное изображение.
Распознавание дубликатов используется не только на сервисе Яндекс.Картинки. Например, оно помогает лучше определять сайты, содержащие материалы для взрослых, и учитывать их при включении семейного и умеренного фильтра. В базе сигнатур есть числовые характеристики изображений с порносайтов, известных Яндексу. Если сигнатуры новых картинок совпадают с ними, то ресурс, на котором они были найдены, подвергнется дополнительной проверке. Специальная программа изучит подозрительный сайт и подтвердит или опровергнет наличие на нём материалов для взрослых. Такие сайты и изображения с них пользователь может убрать из результатов поиска, включив фильтр «Семейный поиск».

Самые популярные дубликаты

Чаще всего пользователи копируют изображения знаменитостей и товаров. Количество дубликатов одного изображения — это может быть, например, фотография популярного сотового телефона — порой достигает нескольких десятков тысяч. Примерно на каждый сайт приходится 460 изображений. Средний размер одной картинки — 300х500 пикселей.