Технология поиска похожих изображений

Поиск изображений в интернете уже давно стал привычным: пользователь ожидает от поисковой системы точного, быстрого и полного ответа так же, как и при поиске текстовой информации. Большинство популярных поисковых систем следом за поиском веб-страниц с текстовой информацией начали работать над поиском изображений.

Компания Picsearch выпустила первую публичную версию поиска по изображениям в сентябре 2001 года. В июле того же года запустил свой поиск по картинкам Google. Яндекс.Картинки официально открылись в июле 2002 года, став первым российским поисковиком, ищущим изображения. В ноябре 2003 г. Yahoo! добавил справа от поисковой строки меню с опцией поиска по изображениям в том числе.

На начальном этапе своего существования поиск изображений основывался исключительно на извлечении и анализе метаданных, связанных непосредственно с изображениями: атрибутов alt, заголовков страниц и текстов ссылок на изображения. Постепенно для поиска изображений стали учитывать также и текст, расположенный на той же веб-странице, что и картинка. Таким образом, задача поиска изображений некоторое время ограничивалась нахождением всей возможной относящейся к нему текстовой информации, и определением степени правдоподобия, с которой эта информация относится именно к изображению.

Параллельно с поиском изображений по метаданным развивалось, и продолжает успешно развиваться, другое направление – поиск изображений по их содержанию. Этот вид поиска основывается на технологии компьютерного зрения. Она призвана обучить машину смотреть на изображение глазами человека, понимать и анализировать его содержимое: цвета и формы объектов, их текстуру, взаимное расположение. Набор метаданных, характеризующих изображение, ограничен, а компьютерное зрение позволяет значительно расширить количество атрибутов, которые учитываются при поиске картинок и ранжировании результатов.

Наглядным примером внедрения технологии поиска изображений по содержанию являются разнообразные фильтры в расширенном поиске Яндекс.Картинок: преобладание цвета, клипарт, графика, фотография, портрет. В основе работы этих фильтров – анализ одного или нескольких свойств изображения: цвет, градиенты, наличие однородного фона и другие. Каждый раз, когда пользователь включает тот или иной фильтр, происходит сравнение всех найденных изображений с некой абстрактной моделью-образцом, которая идеально соответствует данному типу изображения. Таким образом из результатов поиска исключаются изображения, не обладающие свойствами этой идеальной модели, либо обладающие ими не в той степени.

Более сложная задача, которая решается с помощью технологии поиска изображений по содержанию, - это поиск похожих изображений.


Какие картинки более схожи между собой?




Разные люди по-разному ответят на этот вопрос. Для одних – важнее цветовая схожесть, для других – схожесть форм, для третьих – текстур, а иногда  - всё вместе в одинаковой пропорции. Какие же критерии являются определяющими? Даже человек, не говоря уже о машине, затрудняется порой объяснить, на чём основан его выбор в данном конкретном случае. Это всегда совокупность факторов при частом доминировании одного из них. Сложность в том, чтобы обучить машину понимать, какой фактор важнее в каждом конкретном случае. К тому же при поиске похожих изображений, в отличие от упомянутой выше работы фильтров, сравнение каждый раз происходит с новой картинкой-образцом, а не с одной и той же моделью. Для этого нужно обучить машину анализировать не отдельные свойства изображения, а всю их совокупность. Она должна за сотые доли секунды находить среди миллионов проиндексированных картинок изображения, максимально похожие на картинку-образец, учитывая при этом представления о похожести у разных пользователей.

На Яндекс.Картинках появилась первая версия поиска похожих изображений. В результатах поиска рядом с большинством картинок можно увидеть ссылку «похожие», при клике на которую открывается страница с изображениями, похожими на выбранное. Таким образом, используются оба направления поиска изображений - картинка-образец ищется по метаинформации, а похожие  - с помощью технологии поиска изображений по их содержанию.

Конечно, мы будем совершенствовать поиск похожих изображений и дальше развивать функционал Яндекс.Картинок. Результаты можно будет увидеть в самое ближайшее время :)


Александр Крайнов, Николай Штуркин и команда Яндекс.Картинок

40 комментариев
Похвально, осталось по тестить и сделать замечания, ну или похвалить.
На данном этапе, просто спасибо.
Когда будет реализован поиск ссылок загруженного на сервис изображения, как это делает tineye?
Мы делаем шаги в этом направлении.
Компания Picsearch выпустила первую публичную версию поиска по изображениям в сентябре 2001 года. В июле того же года запустил свой

в июле того же года? а что после сентября у нас июль идет=))
А есть какие-то причины, почему при поиске не учитываются IPTC-поля?
одну причину можно навскидку предположить: поскольку они не видны пользователю, в них можно написать что угодно и таким образом манипулировать выдачей.
В alt тоже можно написать что угодно. Да и вообще множество способов, если бы была такая цель.
К сожалению, слишком немногие изображения имеют заполненные поля IPTC.
Мы планируем использовать метаданные для поиска похожих, но нам интересно общее, работающее на подавляющем большинстве изображений, решение.

Дмитрий Б.
26 ноября 2015, 17:34
Дело в том, что доля изображений, у которых IPTC содержит информацию,  полезную для поиска по текстовым запросам, чрезвычайно мала. Поэтому эти  описания заметного вклада в поиск изображений не внесут.
Был бы безумно рад возможности искать по автору.
krainov-alexander,
Что-нибудь изменилось за 8 лет?
При поиске картинок, ограниченном, одним сайтом/доменом данный функционал не работает. А было бы здорово использовать данную новую возможность для поиска дублей на своём сайте-фотогаллерее.
Поиск похожих - это не поиск дубликатов.
Найденные дубликаты мы показываем на странице просмотра изображений (список с заголовком "Копии картинки").
Поиск похожих картинок при ограничении области одним сайтом/доменом мы не делаем, так как мало шансов найти похожие в рамках одного сайта. Да и не совсем понятно, зачем это нужно пользователю.
А вот на счет поиска дубликатов на одном сайте - мысль интересная, мы над этим подумаем.
Очень полезная штука! Бывает, ищешь какое-то изображение, но всё время  находишь не совсем то, что нужно, а теперь достаточно найти что-то более  менее подходящее и нажать "похожие", чтобы увидеть сразу множество  подходящих картинок, одна из которых обязательно окажется той, которую  искал. Большое спасибо за эту фичу!

хех

прикольно!

Чудно!
более интересно будет когда технология достигнет уровня Look Around Пример http://www.panoramio.com/lookaround/29683800 - зажимаем кнопку мыши и тянем или нажимаем шарики, стрелочки на изображении.
хорошее дело, вот только было бы полезнее сделать поиск изображений похожих на загруженное
Валерий Заочный
26 ноября 2015, 17:34
какт не понятно поиск работает, не знал что В.Марецкая похожа на кошку.
есть предложение в #yandex - поиск картинок схожих с той, которую загрузит пользователь!  часто нужно найти похожую альтернативу тому, что уже есть на компьютере - хочется просто загрузить ее через формочку и найти похожие.
А можно, чтобы кто-нибудь пояснил, как это работает хотя бы в общих чертах? И еще - я тут попробовал поменять ключевые слова в строке запроса, которая в адресе браузера после того, как сделал поиск похожих картинок, и результат поменялся. Это почему? Картинка-то та же осталась...
Сейчас мы ищем похожие среди тех картинок, которые найдены по текстовому запросу.
Соответственно, если поменять запрос (поменять слова в адресной стороке) - то и результат поменяется.

Александр, извините за излишнюю дотошность, но правда интересно... Т.е. допустим я ввел слово Ford в поисковой строке. Получились картинки. Потом я нажал на Похожие под одной из них (где лого Форда). Получился результат, а строка в браузере выглядит вот так: http://images.yandex.ru/yandsearch?text=ford&rpt=image&like=http%3A%2F%2Fwww.usedcars.ru%2Fpicture%2Fnews%2Flarge%2F28506%2F28506_1.jpg. Как я понимаю, text=ford - это текстовый запрос, а like=... - это картинка, на которую похожи результаты. Теперь, не уходя со страницы полученных результатов, я в этой строке меняю text=Ford на text=Mustang. Становится http://images.yandex.ru/yandsearch?text=Mustang&rpt=image&like=http%3A%2F%2Fwww.usedcars.ru%2Fpicture%2Fnews%2Flarge%2F28506%2F28506_1.jpg. like=... остается прежним. И жму на enter. Результаты меняются, а картинка, по которой искали, остается прежней.
Это баг или же система ищет одновременно по слову Mustang и картинке c лого Форда?

Да, в этом случае поиск идет по картинке с логом Форда среди множества картинок отобранных по запросу Mustang.

Евгений Молдовану
26 ноября 2015, 17:34
довольно интересная информация для тех, кто пытается понять работу Яндекс Картинок.
Обсужение идет на моем блоге как раз на тему распознавания картинок. Понял, что яндекс Картинки очень плохо распознает совокупность изменений над картинками.
иерей Святослав Шевченко
26 ноября 2015, 17:34
Простите, что поздно включился в обсуждение... но, как говорится, лучше поздно, чем никогда...

В последнее время разработчиками Яндекса очень много делается для отделения зерен от плевел, то есть борьба с ворованным контентом. В связи с этим вопрос, действует ли в поиске Яндекса подобный фильтр, замешанный на этой самой "технологии поиска похожих изображений"? Может ли этот фильтр защитить хороший сайты со своими оригинальными фотоиллюстрациями?  


Дмитрий Б.
26 ноября 2015, 17:34
Станислав, спасибо за интересный вопрос!

Поиск похожих изображений не совсем подходит для определения изображения-первоисточника. Но у нас есть технология, которая позволяет искать дубликаты изображений. В том числе - выявлять нечеткие дубликаты, т.е. когда исходное изображение подвергалось различным преобразованиям: изменению размеров и пропорций, обрезке, добавлению рамок, логотипов и "водяных знаков", цветокоррекции и т.п. В некоторых случаях эта технология позволяет выбирать оригинальные изображения, точнее - изображения, наиболее близкие к оригиналу.

Но, к сожалению, пока нет общего алгоритма выделения первоисточника для группы дубликатов.
иерей Святослав Шевченко
26 ноября 2015, 17:34
Спасибо вам, Дмитрий! То есть получается, что найти автора-правообладателя из десятка одинаковых картинок - проблема. Но вот, например, у вас уже подключен алгоритм выявления оригинала текста. И надеюсь уходит в прошлое то время, когда более солидный в поисковом отношении ресурс ворует текст у новичка - и за это первому нет никаких санкций, но в плагиате уличают невиновного второго. Почему бы не ввести что-то подобное с картинками? Для того, чтобы полностью оригинальный контент мог вывести хороший, но начинающий сайт - в топ... Делается ли Яндексом что-то в этом направлении?
Дмитрий Б.
26 ноября 2015, 17:34
Да, такие работы ведутся.

Но на пути решения кроется много проблем. Например, каким образом авторы должны сообщать о своих правах на изображения? Первичная публикация, очевидно, критерием авторства не является. Размер и качество изображения - тоже. Данные из EXIF легко подделываются, да и далеко не все изображения - фотографии.

Другую проблему можно проиллюстрировать примером. Предположим, есть два сайта, на которых размещены копии одной и той же фотографии Мачу Пикчу. На первом - авторском сайте, она выложена как "голый" jpg без каких-либо комментариев, на втором - не авторском, с подробным описанием того, что изображено, где это находится и т.п. Автор хочет, чтобы по запросу "Мачу Пикчу" показывалась фотография с его сайта. А пользователи, по очевидным причинам, предпочтут увидеть эту фотографию на втором сайте.

Замечу, что для поиска текстов вторая проблема не типична, а для изображений - стоит очень остро.
иерей Святослав Шевченко
26 ноября 2015, 17:34
Дмитрий, спасибо большое за подробные ответы! Понятно для того, чтобы получить качественный трафик необходимо сопроводить фото подробной информацией... Получается, что пока ловкий оптимизатор может обойти автора изображения и это не грозит ему подпадением под фильтры Яндекса... :(
Дмитрий Б.
26 ноября 2015, 17:34
Да, Станислав, во всех наших бедах виноваты ЦРУ, Лужков и ловкие оптимизаторы. ;)
(+1)Дмитрий!! Плюстопитцот!!!B-)
Респект!!!
иерей Святослав Шевченко
26 ноября 2015, 17:34
Да, вообще-то, Дмитрий... эти персонажи виноваты не во всех бедах... В краже контента - точно не они...

заметил, что если изображения цветные, то поиск выдает результат с качеством на уровне 99-100%, т.е. нахожу, что ищу.

Но если робот ищет среди цветных и черно-белых, то в выдачу поиска попадают близкие по тексту, но не по содержанию, т.е. выдача с качеством поиска на уровне 80%.

Особенно "не те" фото попадают в выдачу, если искать по одному слову.

Если искать по 2 словам, то результат лучше.

Вывод: слабое место Яндекса.Картинки сейчас - черно-белые фото.

 

 

Для поиска похожих изображений существуют также настольные программы, такие как, например, эти: http://www.nbitsearch.com/Products.htm

Поиск по картинке практически идеален,кроме того что часто выдается как обман зрения. Например вместо той или иной части человеческого тела показввается вид заболевания разных частей тела человека:)
А фото с телефона (которые указываются для поиска) остаются на сайте? То есть, картинка сканируется С телефона, или ЗАГРУЖАЕТСЯ на сайт? Если загружается, то остаётся ли она у того же Яндекс или удаляется после закрытия страницы? Я о конфиденциальности информации спрашиваю! 
Картинки морями цветности возрастом кроме машины между старыми которая она современных  лет 
Почему раньше была кнопка "нвйти это изображение в яндексе" а теперь"найти это изображение в гуггл"
Mylenef1010011010
3 июля 2020, 16:13
Как отделить в поиске котлеты от мух?
На пример,ищу китайский фонарик,тот что на батарейках,а мне выдаёт ещё и тот что бумажный и цветной