Один из главных источников информации о потребностях пользователей – анализ их запросов. На Яндекс.Картинках достаточно часто встречаются запросы на поиск специфичных видов изображений. Например, [клипарт День Победы], [клипарт люди], [раскраски], [схема двигателя внутреннего сгорания], [схема для вышивания] и т.п. Словом, это запросы, направленные на поиск клипарта (изображения объектов на однородном фоне) и графики (рисованные картинки, эскизы, схемы, раскраски, изображения объектов, созданные тонкими линиями).
Чтобы такие изображения было проще найти, мы сделали новые фильтры в расширенном поиске Яндекс.Картинок. Эти фильтры так и называются: «клипарт» и «графика».
Теперь немного технических подробностей о том, как наши алгоритмы научились распознавать такие изображения.
Прежде всего, нам было необходимо определить характерные признаки, которые отделяют клипарт и графику от других изображений. К таким признакам мы отнесли, например, присутствие на картинке одного объекта, однородность цвета фона, определенные значения градиентов, расстояния от края изображения до объекта в кадре. Установив несколько десятков таких атрибутов, мы внедрили алгоритмы, которые определяют наличие и степень выраженности атрибутов у конкретной картинки.
Чтобы научить машину автоматически принимать решения о принадлежности картинки к какому-либо классу, использовался классификатор на основе метода опорных векторов (Support Vector Machine). Для обучения системы применялась выборка из нескольких тысяч изображений. Каждое из них было вручную размечено по шкале «клипарт – не клипарт» и «графика – не графика», а также соотнесено с заранее вычисленными атрибутами, о которых упоминалось выше.
Эти данные подаются на вход классификатора, который представляет изображения в виде точек в многомерном пространстве. Координаты этих точек зависят от наличия и степени выраженности атрибутов. Задача классификатора – подобрать функцию, которая разделяет пространство на области, содержащие объекты одного и того же класса.
Обучение не обошлось без трудностей. На первых этапах машине было сложно определить, являются ли некоторые изображения клипартом:
или графикой:
Нам потребовалось улучшить качество атрибутов и вычислить новые, а также расширить тестовую выборку и собрать дополнительные оценки.
Результаты разметки помещаются в индекс в виде битовых флажков и используются для фильтрации запросов.
Помимо клипарта и графики Яндекс.Картинки помогут найти изображения по размеру, цвету, формату и ориентации. Эти и другие возможности вы найдете на странице расширенного поиска.
Дмитрий Котляров, Николай Штуркин и команда Яндекс.Картинок