Comments 33
Спасибо большое за статью! Узнал новое про r-mac пудинг. Используются ли в работе трансформеры и attention модели? Особенно интересны модели, связывающие текст и картинки. вроде бы из общих соображений CLIP, от
openai например, должен особенно хорошо значимые фичи выделять
Спасибо за отзыв.
Да, CLIP может использоваться для мэтчинга текст-изображение. Сейчас мы используем трансформеры для вычисления объединённого эмбеддинга по нескольким фотографиям чертежей с разных видов. Аналогично, можно применять к товарам маркетплейса.
Visual Transformer как бэкбон у нас пока не показал качество лучше, чем ResNet/EfficientNet, но ещё вернёмся к более глубокому анализу
Думаю, что tineye работает примерно так же. В простейшем случае он вообще может использовать что-то типа perceptual hash, в этой библиотеке есть несколько подобных алгоритмов: https://github.com/idealo/imagededup
Можно все в тех же индексах, которые я указал — nmslib, faiss, annoy, scann. Если нужно постоянное хранилище, то в принципе и обычная база подойдёт типа Postgres. Но понятно, в ней поиск делать не надо, просто выгружать/загружать хэши
Можно посмотреть на https://www.milvus.io/.
А как вообще выглядит датасет для тренировки? Это множество фотографий на каждый объект? И как вы его размечали?
Спасибо!
У нас около 600 тыс изображений, размеченных следующим образом. Эксперты выполняли поиски в базе логотипов, используя один из существующих алгоритмов поиска (фильтрация по классам, словесный поиск и пр.). Для каждого изображения проставлено, в каких поисках оно встречалось. Одно и то же изображение могло встретиться в разных поисковых выдачах. Из этого мы сделали multilabel разметку, и дальше уже учили парные лоссы с разными алгоритмами hard negative mining. Кстати, могу упомянуть метод XBM для майнинга (https://arxiv.org/abs/1912.06798) — нам очень хорошо зашёл
Дтасет тут зависит от выбранной функции потерь, если это Contrastive Loss то генерируются пары, положительные и отрицательные. Если triplet loss, то три изображения — анкор, поизитв, негатив. Каждая такая пара или тройка это уже и есть разметка.
Спасибо за отсылку к классике. Действительно, BoW может помочь при низком объёме данных и его проще дообучать на новый тип объектов — требуется меньше данных опять же. В нашем случае данных было достаточно и deep learning поднял качество очень существенно
Есть мнение, что поиск Яндекса просто еще не успел закрыть некоторые киллер-фичи от публики по ряду причин. На Хабре кто-то прикладывал свои наблюдения, что Google мол раньше искал по лицам например — а потом вдруг раз и перестал.
Но это как говорится — неточно. Уверен, что если поискать будут даже статьи на эту тему.
Contrastive Loss
Triplet Loss
N-tupled Loss
Angular Additive Margin (ArcFace)
Интересно, что автор столько внимания уделил разным "модным" лоссам, но не уделил внимания слону в комнате. В прошлом году вышла такая прекрасная статья — https://arxiv.org/abs/2003.08505
Срыв покровов — модные методы особо не играют особой роли, роль играет сама сетка, аугментации и так называемый curriculum и то, как мы управляем "сложностью" тренировки.
Спасибо за статью, посмотрю. Если говорить про парные лоссы, то я не стал в этой статье упоминать метод XBM (https://arxiv.org/abs/1912.06798) с CVPR2020, ориентируясь на более поверхностный материал. Хотя метод действительно мощно поднимает качество. Думаю, глубокий анализ сходимости обучения лучше провести в отдельной статье
Пример реализованного проекта
Примеры работы
Валидация
Метрики
Не хочу показаться занудой, список чужих работ / ссылок / идей тут адекватный (не считая момента, который указал выше).
Но возникает очевидный вопрос — какова цель статьи, где результаты работы и наработки автора и его команды? Реальные метрики на каких-то датасетах, публичные (не обязательно на 100% OSS с репликацией) релизы pre-trained сеток, публикации датасетов, какие-то веб / колаб демки? Что угодно?
Мы тоже много публикуем на Хабре, но мы ставим цель каждым постом реально сделать какой-то вклад, вот буквально пара примеров:
- Тут мы делаем уникальную некоммерческую систему синтеза речи и делимся ей со всем комьюнити бесплатно — https://habr.com/ru/post/549480/
- Тут мы публикуем модели распознавания речи, которые лучше премиум моделей Google — https://habr.com/ru/post/519564/
Да, я читаю некоторые ваши статьи и канал в Телеграме. Хорошая работа.
На эту статью можно смотреть с другой перспективы — когда мы начинали разрабатывать систему поиска похожих изображений для первого клиента, было не совсем понятно, как это делать. Казалось бы, многие лоссы уже знали, с нейронками давно дружим. Но конкретно в специфике IR наверняка есть особенности, и нам приходилось собирать все по крупицам, читая статьи и интернет. Поэтому цель этой статьи донести общую структуру системы с небольшим числом конкретных рабочих идей в одном месте
Выкладывать метрики был бы смысл, если мы делали замеры на публичных датасетах, как вы сказали. Но это надо корректно поставить эксперименты и вести полноценную исследовательскую работу с дальнейшей публикацией научной статьи. А чтобы просто узнать относительный прирост качества в каждом из методов, достаточно посмотреть сами статьи — в них есть все замеры на Oxford5k, CARS200, Stanford Online Products и пр.
в компании EORA.AI
Интересно, раньше Хабр тупо банил за рекламные коммерческих компаний посты не в хабе "Я пиарюсь" или в платном корпоративном блоге.
Сейчас что-то изменилось в политике? Я тоже обратил внимание, что они стали меньше "душить" авторов, интересно почему. Я видел какую-то статью в блоге Хабра на эту тему, но у Хабра нет каких-то public values.
Корп блоги — ок, ализаровщина — ок, реклама гомеопатии или лженауки — тоже ок.
Как построить свою систему поиска похожих изображений