Pull to refresh

Comments 33

Спасибо большое за статью! Узнал новое про r-mac пудинг. Используются ли в работе трансформеры и attention модели? Особенно интересны модели, связывающие текст и картинки. вроде бы из общих соображений CLIP, от
openai например, должен особенно хорошо значимые фичи выделять

Спасибо за отзыв.
Да, CLIP может использоваться для мэтчинга текст-изображение. Сейчас мы используем трансформеры для вычисления объединённого эмбеддинга по нескольким фотографиям чертежей с разных видов. Аналогично, можно применять к товарам маркетплейса.


Visual Transformer как бэкбон у нас пока не показал качество лучше, чем ResNet/EfficientNet, но ещё вернёмся к более глубокому анализу

А tineye работает на похожем алгоритме? Я несколько лет назад был сильно удивлен когда он по моей картинке нашел оригинальную и оказалось что мой экземпляр — это кроп от оригинала. Это уже не похоже на алгоритм фингерпринта.

Думаю, что tineye работает примерно так же. В простейшем случае он вообще может использовать что-то типа perceptual hash, в этой библиотеке есть несколько подобных алгоритмов: https://github.com/idealo/imagededup

А в какой БД можно хранить миллиарды таких хешей и еще искать близкие по дистанции?

Можно все в тех же индексах, которые я указал — nmslib, faiss, annoy, scann. Если нужно постоянное хранилище, то в принципе и обычная база подойдёт типа Postgres. Но понятно, в ней поиск делать не надо, просто выгружать/загружать хэши

Непонятно логика, зачем хранить отдельно от поиска. Каждый раз когда надо поискать — надо куда-то загружать? А индексы сами не могут выступить в качестве БД с записью на диск или они только in-memory?

Сразу не заметил комментарий. Да, отдельная БД нужна для сохранения на диск. Это делается на этапе инициализации / добавления новых данных на индексирование, так что не поиске не делается

Да, давненько про него слышал, ещё не дошли руки попробовать. Спасибо!

Они сделали алгоритм задолго до всех этих нейроночек, не думаю, что они стали бы что-то менять, что итак работает.
Очень интересная статья, спасибо!
А как вообще выглядит датасет для тренировки? Это множество фотографий на каждый объект? И как вы его размечали?

Спасибо!
У нас около 600 тыс изображений, размеченных следующим образом. Эксперты выполняли поиски в базе логотипов, используя один из существующих алгоритмов поиска (фильтрация по классам, словесный поиск и пр.). Для каждого изображения проставлено, в каких поисках оно встречалось. Одно и то же изображение могло встретиться в разных поисковых выдачах. Из этого мы сделали multilabel разметку, и дальше уже учили парные лоссы с разными алгоритмами hard negative mining. Кстати, могу упомянуть метод XBM для майнинга (https://arxiv.org/abs/1912.06798) — нам очень хорошо зашёл

Еще вопрос, а можете порекомендовать конкретную архитектуру, которая сравнивает вектора фичей от изображений?

Дтасет тут зависит от выбранной функции потерь, если это Contrastive Loss то генерируются пары, положительные и отрицательные. Если triplet loss, то три изображения — анкор, поизитв, негатив. Каждая такая пара или тройка это уже и есть разметка.

UFO just landed and posted this here

Спасибо за отсылку к классике. Действительно, 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, ориентируясь на более поверхностный материал. Хотя метод действительно мощно поднимает качество. Думаю, глубокий анализ сходимости обучения лучше провести в отдельной статье

Прочитал статью. Красивый разнос. Мы тоже наблюдали незначительную разницу при переходе на более современный метод. Наконец-то кто-то оценил вклад методов через кросс-валидацию и универсальный подход к обучению. Причем этот кто-то — разработчик PML. Еще бы такой анализ провести по пулингам, а не только по лоссам

Я так понимаю что статья была написана примерно одновременно с либой во время его стажировки
Оно там у него сильно разрослось с тех пор
Но прикольно, что оно есть

Пример реализованного проекта
Примеры работы
Валидация
Метрики

Не хочу показаться занудой, список чужих работ / ссылок / идей тут адекватный (не считая момента, который указал выше).


Но возникает очевидный вопрос — какова цель статьи, где результаты работы и наработки автора и его команды? Реальные метрики на каких-то датасетах, публичные (не обязательно на 100% OSS с репликацией) релизы pre-trained сеток, публикации датасетов, какие-то веб / колаб демки? Что угодно?


Мы тоже много публикуем на Хабре, но мы ставим цель каждым постом реально сделать какой-то вклад, вот буквально пара примеров:


  • Тут мы делаем уникальную некоммерческую систему синтеза речи и делимся ей со всем комьюнити бесплатно — https://habr.com/ru/post/549480/
  • Тут мы публикуем модели распознавания речи, которые лучше премиум моделей Google — https://habr.com/ru/post/519564/

Да, я читаю некоторые ваши статьи и канал в Телеграме. Хорошая работа.


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

Выкладывать метрики был бы смысл, если мы делали замеры на публичных датасетах, как вы сказали. Но это надо корректно поставить эксперименты и вести полноценную исследовательскую работу с дальнейшей публикацией научной статьи. А чтобы просто узнать относительный прирост качества в каждом из методов, достаточно посмотреть сами статьи — в них есть все замеры на Oxford5k, CARS200, Stanford Online Products и пр.

Ну или как вариант запилить свои "in the wild" датасеты, если академические слишком всратые.

Идеология открытого чего-то еще подразумевает, что если кто-то просто выложил сетку "для логотипов" без датасета — от публики особо не убудет (кроме злых буратино), и может кто-то даже публично затестит.

В статье довольно неплохо описывается, как работает подобная система. Так что статья реально полезная и классная. Метрики, сетки и прочее часто закрыто NDА, так что такого и не ждем.
в компании EORA.AI

Интересно, раньше Хабр тупо банил за рекламные коммерческих компаний посты не в хабе "Я пиарюсь" или в платном корпоративном блоге.


Сейчас что-то изменилось в политике? Я тоже обратил внимание, что они стали меньше "душить" авторов, интересно почему. Я видел какую-то статью в блоге Хабра на эту тему, но у Хабра нет каких-то public values.


Корп блоги — ок, ализаровщина — ок, реклама гомеопатии или лженауки — тоже ок.

Я общался с модератором, указать компанию в статье можно, а вот ссылку на сайт уже нельзя. И в этом есть логика — всё-таки от анонима статья выглядит недостаточно убедительной. А тут, у меня была возможность указать, что у нас есть некий опыт разработки таких систем

Отличная статья!

А REMAP для пулинга не пробовали в бою?
Multi-scale эмбеддинг у нас стоит в бэклоге, но эту статью не видели. Классный подход, спасибо за ссылку!
Sign up to leave a comment.

Articles