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

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

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

Точные дубликаты — абсолютно одинаковые изображения, которые не отличаются ни одним битом.
https://avatars.mds.yandex.net/get-bunker/128809/29fa5a32db3641252b315d2891edebc741aa5261/orig
Тумбнейлерные дубликаты (от англ. «thumbnail» — миниатюра) — изображения, которые различаются только размером, например, репродукция на сайте картинной галереи и маленькая картинка, которая на неё ссылается.
https://avatars.mds.yandex.net/get-bunker/994123/83ce664b47243371f047e0bde11ed20c75841a11/orig
Полудубликаты — картинки c полупрозрачными надписями поверх изображения, незначительной цветокоррекцией, обрезкой или рамкой.
https://avatars.mds.yandex.net/get-bunker/49769/21c2342c68f8b38cfec3dfdc0247f54e283f218b/orig
Расширенные полудубликаты — картинки с сильно измененными цветами или пропорциями, а также фрагменты исходных изображений.
https://avatars.mds.yandex.net/get-bunker/128809/8ec47f70c1b44592fe5c21e3ed2363ebdae9f130/orig
У каждого изображения в интернете есть в среднем три дубликата. Чтобы результаты поиска Яндекс.Картинок не состояли из одинаковых изображений, сервис группирует дубликаты и показывает их в результатах поиска «стопками».

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

Чтобы компьютер мог понять, что изображено на картинках, и распознать дубликаты, изображения нужно «перевести» на понятный ему язык — язык чисел. В Яндекс.Картинках этим занимается специальная компьютерная система, программы которой обходят интернет, находят изображения и обрабатывают их: узнают необходимые данные о картинке, например, размер, цвет, формат (jpg, png и т. п.) и создают числовую характеристику изображения — сигнатуру.
https://avatars.mds.yandex.net/get-bunker/128809/088fc704566af4718d6556af48afb441f060f258/orig
На каждом изображении программа выделяет ключевые фрагменты. Затем уменьшает их до размера 16×16 пикселей, и каждому из 256 пикселей присваивает число, соответствующее яркости этого пикселя. Полученные комбинации чисел и есть сигнатуры.
Программа объединяет в группы изображения, у которых есть похожие ключевые фрагменты (то есть схожи их сигнатуры). Внутри этих групп выделяются еще более близкие изображения — у которых совпадают минимум два фрагмента. Изображения с похожими фрагментами становятся кандидатами в дубликаты. В них программа выделяет области, объединяющие все совпавшие фрагменты. Следующим шагом эти области уменьшаются до размера примерно 60×60 пикселей, переводятся в числовую характеристику и сравниваются между собой. Дубликатами признаются изображения, у которых области совпадают.
https://avatars.mds.yandex.net/get-bunker/49769/cfd6e17a886516f74b9e3161b41cff3f5babcc16/orig

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

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

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

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