Месяц назад я написал пост про то, как запилил 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/
Создатели проекта сняли тысячи профессиональных фотосессий. Причем в модели подбирали людей всех возрастов и этнической принадлежности. После этого модели подписывали бумагу, что права на фотографии принадлежат компании.
И вот уже эти собранные фотографии они использовали для тренировки нейронной сети.
С таким подходом к сбору данных убрали две частые претензии к данным:
Нет юридических претензий.
Нет претензий про то, что данные с биасом, то есть все расы, возраста и оба пола представлены равномерно.