Обновить

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

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

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

Начало здесь

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

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

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

День 3

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

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

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

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

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

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

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

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

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

Метод Каллана: я повторял предложения три года

Как курс английского, построенный на повторении, оказался самым полезным, что я изучал, — и почему любой разработчик за пределами англоязычного мира рано или поздно сталкивается с тем же выбором.

Фото: little Gabriel, Unsplash

Мне было четырнадцать, когда я решил, что школа не научит меня английскому.

Шёл 2009 год. Я учил немецкий и не любил его — не сам язык, а тот факт, что его выбрали за меня. К тому времени я уже писал первые строки кода и заметил вещь, которая казалась мне очевидной и, судя по всему, никому вокруг: любой язык программирования, который я хотел выучить, был документирован на английском. Любой ответ на форуме. Любое сообщение об ошибке. Любая книга, которую стоило читать.

Так что я попросил записать меня куда-нибудь всерьёз. Так я оказался в Британский Центр в Тбилиси, в двухэтажном здании на улице Пекини, в комнате с одиннадцатью другими людьми и преподавателем, который говорил быстрее, чем я успевал думать.

Метод Каллана: я повторял предложения три года

Публикации