Месяц назад я написал пост про то, как запилил API + сайт Ternaus.com для поиска похожих картинок по тексту (Image Search) и по картинкам (Inverse Image Search).

Идея поиска по картинкам не нова и занимаются этим многие.

Сходу в голову приходят:

Поисковики

  • Yandex

  • Google

  • Bing

Поиск осуществляется на больших объемах картинок с интернета.

Лицензия, как правило, не известна.

Такие картинки активно используют для тренировки нейронных сетей. Время от времени поднимаются дискуссии о легальности процесса, но сразу же и затихают.

В США существует закон о Fair Use, который позволят использовать данные под копирайтом во благо человечества. Что-то он проясняет, но мало кто в нем разбирается.

У потенциальной реализации контроля изображений в интернете много технических сложностей:

  • Как определять авторство и права на конкретную картинку?

  • Если изображение изменено, также ли оно принадлежит исходному владельцу?

  • Как мониторить, если кто-то использует ваше изображение?

  • Как заставить владельца сайта убрать его или хотя бы поставить ссылку на исходное?

Задача со звездочкой - как определить, что ваше изображение было использовано при тренировки конкрентной нейронной сети.

Есть анекдотичные случаи типа того, что Stable Diffusion сгенерировала картинки с логотипом сайта iStock, что говорит о том, что данные с сайта были соскраплены и использованы в тренировке.

Но больше чем это технически сделать не реально.

Вопрос читателям: кто знает коммерческие приложения, не связанные с тренировкой сетей, которые используют картиночный поиск в поисковиках?

Stock photos

Эстетические фото в высоком качестве и лицензией, которая позволяет любое, в том числе и коммерческое использование.

Также у них есть API, который позволяет использовать изображения и в других приложениях.

Используются для поиска фото для блог постов и сайтов.

Вопрос к читателям: кто знает где используются такие изображения?

Поиск по сгенерированным картинкам

С дивана, эти сайты похожи и на мой ternaus.com, только у ребят поиск идет по сгенерированным картинкам, а у меня по обыкновенным.

Визуально смотрится круто, более того, Lexica в сентябре подняла раунд на $5,000,000.

Что замечательно, эти сгенерированные картинки можно смело использовать в любых коммерческих целях.

Под какую историю они поднимали деньги и что у них дальше непонятно, но очень интересно.

Эти примеры я привел к тому, что нужно не просто хорошо искать, нужна какая-то ниша, какая-то специализация.

Я много лет тренировал модели машинного обучения, у меня была вечная боль с данными.

Хочется попробовать использовать ternaus для улучшения / ускорения разметки данных для нейронных сетей.

Идея вот в чем - если ваша модель плохо что-то определяет на картинке это может происходить по разным причинам:

  • Сложный объект, который модель еще не научилась находить.

  • Обьект простой, а фон сложный. Найти кота на фоне белой стены проще чем того же кота на фоне леса.

  • Нюансы освещения. Темного чебурашку сложнее находить на закате, чем при свете дня.

Как следствие, когда мы ищем фотографию “похожую” на исходную, хочется, чтобы выбор был не в режиме: “страус тут - страус там”, а с учетом фона, освещения и другого контекста.

Под эту идею, месяц назад я и создал сервис.

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

Чтобы сделать “как получится” достаточно взять хорошую натренированную модель и использовать ее предсказания, как разметку.

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

На маленьких датасетах я такое делал, а на 18 миллионах, что сейчас, рука не поднялась.

Я взял натренированную на COCO YOLO V7, сконвертировал в TensorRT, запустил, и вот наши метки готовы.

В СOCO всего 80 классов, что мало.

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

Отсюда, конечно, напрашивается дофайнтюнить YOLO на 600 классах Open Images, но это надо, чтобы руки дошли, или чтобы пришел такой запрос от коллектива. Пока откаладывается.

Кому интересно - пользуйтесь:

Правила игры - первые 100 запросов в день бесплатные, потом по центу за заспрос, или ждать следующего дня.

Данный пост можно было бы сделать гораздо сильнее, если вместо: "А вот теперь есть новая фича" был рассказ о том, как на какой-то задаче, скажем соревновании на Kaggle, ее использование помогло уйти в топ.

Когда мы продвигали библиотеку Albumentations, именно так и делали - выигрываешь соревнование, описываешь решение, рассказываешь как помогла библиотека.

Понятные метрики, понятная ценность.

Здесь хорошо сделать что-то такое же, но сейчас не вижу под рукой релеватного соревнования. Как появится, скорее всего попробую.

Следущим шагом хочется добавить картинки, которые генерирует Stable Diffusion. Под рукой 10M таких картинок, работа в процессе.

Любопытно, что будет если тренировать или fine tune’ить сети на сгенерированных картинках. (Если есть академик, который хочет написать статью на эту тему - пишите, данных + меток сколько надо я отсыплю)

UPD 2022-10-27

Про непростую ситуацию с лицензииями в данных с интернета меня зарулило случайно, к теме поста, то есть к bounding boxes это отношения не имеет.

Но раз уж занесло расскажу как еще можно этот вопрос решать на примере https://generated.photos/

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

И вот уже эти собранные фотографии они использовали для тренировки нейронной сети.

С таким подходом к сбору данных убрали две частые претензии к данным:

  • Нет юридических претензий.

  • Нет претензий про то, что данные с биасом, то есть все расы, возраста и оба пола представлены равномерно.

Пост на английском.

Комментарии (0)