Обновить
16K+
4
Алексей Упатов@oopatow

генератор идей

6
Рейтинг
Отправить сообщение

Переходим полностью к тестам датасета COCO. День 4.

Пока Альтман рассуждает о бороздящих кораблях Вселенную и о моделях, которые будут после трансформеров, мы делаем. Такое вступление я придумал для статьи, когда мы закончим с экспериментами и доделаем пилот, а пока продолжу дневник обучения TAPe-модели. Комуинтересно: начало тут, здесь и там, а немного про методы TAPe (Теории активного восприятия) в области обработки информации — здесь.

Сначала протестировали эту же модель с тем же числом параметров на большом датасете COCO. Без оптимизации получили решение с точностью 60.59%, что является очень высоким для такой модели (невозможно высоким даже, такая модель по идее не должна сходиться и находить общее решение из количества параметров, но данные TAPe позволяют). Пока сложно сравнить с конкретной метрикой других моделей, потому что мы не строим рамки вокруг предмета, но находим конкретно центр объекта. Это проведем позже. 

Тренировка на процессоре как минимум не дольше, чем тренировка на видеокарте, поэтому мы ограничены только количеством данных на ОЗУ в TAPe‑формате — что не является ограничением в целом, можно весь датасет уместить одновременно там
Пока существуют несколько проблем:

  • Количество ложных срабатываний (скорее симптом, но все же);

  • Не самая лучшая классификационная точность (тоже в большой степени симптом);

  • Неправильное центрирование объектов (немного ограничение детекции, но есть способы обойти);

  • Размерность COCO;

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

Конкретно:

Работа матрицы преобразования на данный момент времени немного линейная. Зависимости по большей части линейные (то есть, независимые друг от друга). Это не хорошо, по понятным причинам, но в тоже самое время это помогло перейти к пониманию одного факта: в найденном нами подходе, о котором писали выше, есть как раз нелинейная зависимость коэффициентов друг от друга. Эту связь нужно выстраивать вручную, в зависимости от градиентного спуска и deep learning, но в нашем случае связи по TAPe известны заранее,
Дополнительно начинаем вторую фазу создания решения, чтобы можно было захватывать объекты любого размера. Это должно привести к намного более точным ответам, при этом ускорив модель. 

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

Дальше планируем продолжить работу с полным датасетом (используя 2% из него для быстрых тестов — это около 2400 изображений).

Теги:
0
Комментарии0

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

Продолжаю дневник разработки «Суперраспознавалки» для демо/пилота. День третий. Основная задача: настроить TAPe‑модель на датасет типа COCO под задачу detection. Вторая — дать клиентам возможность добавлять собственные классы к уже существующим. Ну и далее, при необходимости, полная адаптация модели под конкретного заказчика. Поскольку у нас есть Теория активного восприятия с ее методами, на выходе заказчик должен получить кратную эффективность и кратную экономию ресурсов.

В первые два дня настраивали базовую струтуру сегментации, детекции и классификации. Модель решает задачи на обучении уже 115 тыс параметров — в отличии от YOLO, которой мало 2 млн + параметров.

Начало здесь

Второй день здесь

Про архитектуру TAPe+ML здесь

Тут сравнение трех десятков кодировок в задаче сегментации видео в DBSCAN (включая ViT, DINO) с TAPe

День 3

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

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

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

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

Также начали эксперименты с добавлением цветовых каналов. Однако проведенные эксперименты с цветами в простой схеме объединения features по каналам не дало желаемых результатов: даже с greyscale мы забираем столько информации, что цветовая гамма по большей части их просто дублирует. Это приводит к тому, что модель опирается слишком сильно на общие черты, не «видя» при этом выдающиеся черты разницы цвета. Что в то же самое время может и являться хорошей фичей, а не багом, потому что через разницу в текстуре мы, по идее, должны найти разницу в любом случае (если это реальное изображение). Поэтому мы не полагаемся в решении на конкретную задачу, где цвет более релевантен, а полагаемся на общее решение детекции в целом.

Также на заднем плане были закончены эксперименты с разными архитектурами (эксперименты продолжались параллельно несколько дней). Нашли самую лучшую архитектуру на данный момент (самая логичная по её смыслу, как нам кажется). Тут без подробностей, но мы ушли от всем известного способа градиентного спуска, что позволяет нам после тренировки модели прийти к глобальному минимуму решения (или к чему‑то очень близкому к этому — всё равно есть зависимость от задачи).

Мы собираем данные из патчей определенным образом, объединяем их в общее описание, а затем уже классифицируем конкретно эти объединения по тому, есть там объект или его нет. Классификация происходит за счет общих описаний каждого класса, который модель видит — и не тренируется отдельно, потому что исходит натурально из первичной тренировки векторов, а затем сводится к одному описанию через k‑means.

В результате выходит модель с очень малым количеством ложных срабатываний — с которыми, впрочем, мы все равно боремся. Плюс есть некие проблемы центровки, так что скорее всего количество параметров увеличится. Но все равно, модель работает чрезвычайно быстро. Тренировка как таковая проходит на CPU (так проще).

Теги:
0
Комментарии0

День 2. 115 тыс параметров вместо 2 млн+ у YOLO

Продолжаю дневник разработки «Суперраспознавалки» для демо/пилота. Начало здесь.

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

Интересный момент, найденный в экспериментах — благодаря TAPe получается использовать очень дешевые методы с тз ресурсов, при этом используя и методы ML. При этом все равно получаются очень хорошие результаты для этих методов.

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

Разбиение происходит за 100+ кадров в секунду, без оптимизации, с обработкой каждого кадра отдельно (то есть есть также overhead выгрузки изображения на GPU).

Также пришло понимание, что нужно переходить к этапу дополнительных действий, чтобы отбирать интересные места. В целом по результату вышло, что количество ложных срабатываний в разы уменьшилось, но при этом количество правильных ответов тоже немного снизилось (на пару процентов, но заметно в любом случае, тем более у нас цель получить условные 100% на тестовых данных). Это происходит как раз таки из‑за того, что нет правильной последовательности действий (что, впрочем, нами ожидалось, просто не думали, что это так быстро произойдет).

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

Разбиение следующее:

Classes: 4; labeled: 1256, train: 879, test: 377, miss images: 559

То есть, 4 класса, общее количество изображений объектов — 1256, из них в тренировку уходит 879, в тестирование — 377. Miss images — это изображения просто заднего фона, а также случайных объектов, не являющихся нужными объектами.

Для YOLO необходимо около 1500 изображений на один класс. Мы же успешно используем около 220 на класс + какие‑то изображения фона (которые есть только для травы и снега, например).

Результаты имеют точность определения того, где находится нужный объект (не её вид — это отдельный шаг) с точностью 98.94% (то есть правильно для 373 из 377 изображений). Ложные срабатывания ещё существуют, но их стремительно меньше.

Интересно, что модель «самостоятельно» находит правильно нужные объекты, даже если в тренировочных данных они не были обозначены (то есть тренировочные данные неправильные). Модели всё равно удаётся определить оба объекта, что показывает, что модель обучилась формам объектов успешно.

Чтобы добавить контекста — размер модели 115 тысяч параметров. Самая маленькая из современных YOLO же имеет 2+ млн параметров, и при этом не справляется с задачей.

Теги:
+2
Комментарии0

Сейчас делаем пилот сразу для нескольких заказчиков. Рабочее название — «Суперраспознавалка» :))

Основная задача: настроить TAPe-модель на датасет типа COCO под задачу detection. Вторая — дать клиентам возможность добавлять собственные классы к уже существующим. Ну и далее, при необходимости, полная адаптация модели под конкретного заказчика. Поскольку у нас есть Теория активного восприятия с ее методами, на выходе заказчик должен получить кратную эффективность и кратную экономию ресурсов.

Задача интересная, поэтому буду вести дневник разработки, а потом подготовлю подробную статью.

Некоторые проекты — NDA, когда буквально нельзя указывать точное название объектов, которые нужно детектировать. Поэтому не обессудьте. Ноу‑хау по‑прежнему не собираемся раскрывать. Только результаты и часть пути к этим результатам.

День 1. TAPe и YOLO

Закончили с базовой структурой для сегментации, то есть с тем, как за один «ход» получать необходимый набор патчей, чтобы дальше расчёты шли параллельно (и оттуда же быстро), что также немного подводит ближе к самой логике действий здесь. Сейчас за одно действие получается определить все точно‑неинтересные места, а также все возможно‑интересные места (то есть, где есть детали в целом).

Что интересно сейчас в самом подходе — это то, что благодаря TAPe получается избежать проблемы других сегментационных моделей — а именно:

  • Необходимость классификации буквально каждого пикселя (как поступают стандартные современные модели семантической сегментации);

Стандартные модели буквально классифицируют каждый пиксель (или каждый N‑ный пиксель, если сжимают разрешение) на отношение к тому или иному классу. 

  • Необходимость проверять каждый шаг в какой‑то ограниченной сетке размером N на N (так делает конкретно YOLO)

YOLO обходит это использованием сил CNN, классифицируя только конечное количество патчей (зависит от версии YOLO, в первой их было 6400, что всё равно много). Методы TAPe же нам позволяют этого не делать, потому что единицы информации в TAPe (которые мы назвали T‑bit) несут в себе гораздо больше информации, чем бит. В данном случае — несут в себе нужную структуру для нахождения похожести — а значит для нахождения сегментов, в которых нужно что‑то классифицировать в целом. И даже здесь благодаря TAPe у нас есть преимущество: мы можем проводить классификацию на условном нулевом уровне, не уходя в глубину.

Используя даже простую версию такого подхода, мы уже можем приходить к такой сегментации на простых примерах (разные цвета показывают разные сегменты). Лавочка — один сегмент, урна — другой, всё остальное — разные неровности, которые также можем буквально отфильтровать, если не хотим проводить их классификацию их. То есть — объект находится условно одномоментно.

Теги:
-2
Комментарии0

Информация

В рейтинге
1 076-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Генеральный директор, Директор по контенту
Ведение переговоров
Продвижение проектов
Управление компанией
Мониторинг и анализ рынка
Руководство стартапом
Стратегическое управление
Управление людьми