Команда Data Light регулярно встречается с нестандартными задачами, и в прошлом году мы начали работать над одной из них: наш проект неожиданно перерос из привычной разметки LiDAR облаков (изображений со специальных сканеров) в написание скриптов и созданию нестандартных решений для CVAT.
В этой статье я, Алексей Антюшеня, хочу рассказать, как мы нашли это необычное решение, и поделиться методом, который позволит ML специалистам и коллегам по нише решать сложные задачи по 3D разметке.
В этом случае мы говорим о выделении кубоидами трехмерных объектов на 2D изображениях для обнаружения объекта и определения его габаритов относительно других объектов и сооружений вокруг.
Этот тип разметки отличается максимально полным предоставлением информации об объекте: высота, ширина, длина, расстояние до зданий, людей и других транспортных средств. Именно 3D разметка минимизирует искажение объекта и дает более корректное представление о расположении объекта в отличие от bounding box.
Сегодня нейронные сети, обученные на таких данных, автоматизируют оценку нарушений дорожного движения, контролируют трафик на дорогах, воспроизводят AR ландшафт, строят маршруты на картах с сохранением рельефа и геометрий окружающих предметов, помогают при беспилотной парковке.
Данными для такой разметки обычно выступают как LiDAR облака, так и обычные изображения/видео с камер наружного наблюдения. Во втором случае необходим набор кадров одного и того же объекта со всех сторон, чтобы можно было увидеть габариты объекта и поместить его в кубоид.
Постановка задачи и первые проблемы
Представим, что мы вместе с вами получили исходные сырые изображения и нам нужно произвести разметку, чтобы обучить нейронную сеть распознавать автомобили по трем осям координат. Выглядеть это должно было так:
После знакомства с ТЗ и данными для разметки начинается этап разработки технического решения, определения методики и принципов работы с данными. Здесь я выделил 3 ключевых момента:
Найти оптимальный метод разметки для учета всех случаев искажения изображения.
Большинство кадров сделаны под 270 или 360 градусами. Если не учесть искажения/углы/повороты, то есть высокий риск неправильно передать геометрию объекта при разметке. После построения кубоида часть объекта может быть исключена из разметки или кубоид может выйти за пределы объекта и отражать большое пространство от объекта до линий кубоида. Обе ошибки являются фатальными при определении габаритов.
Выбрать универсальные методы разметки, подходящие для всех типов транспортных средств и направления движения по отношению к камере.
Существуют 4 основных вида автомобильных транспортных средств: легковые, автобусы, троллейбусы и грузовые. В нашем проекте мы работали с легковыми, грузовыми машинами и автобусами. Но методика, описанная в этой статье, подойдет для любых объектов вне зависимости от их размера, формы и объема.
Выработать методологию работы для разметки машин в потоке, когда часть ключевых точек перекрыта и необходимо “дорисовать изображение” в уме.
Это может напомнить решение задач по стереометрии в школе. Кто-то может возразить, что не у всех получается работать с пространственным мышлением.
Пример разметки: мы не видим заднюю нижнюю правую точку и исходя по даней и нижней линии мы додумываем правильное расположение точки
Действительно, представить 3D фигуру на плоскости получится не у всех. Поэтому при формировании команды под проект мы провели общее обучение разметчиков данных. По результатам тестирования на базовых примерах разметки выбрали тех, кто проявил способности к пространственному мышлению. С ними мы провели углубленный разбор кейсов и индивидуальную работу над ошибками для сдачи проекта с эталонной разметкой.
Тут можно было подумать, что вся подготовительная работа выполнена: команда обучена, метрики сняты, разметка выполняется. Но возникла проблема.
Что делать, если проект не соответствует пилоту
После утверждения метрик по результатам пилотного проекта мы получили новые изображения, которые сильно отличались от изначальных. В них не было идеально видно машины, расположенной четко по середине оси. Вместо этого появились потоки автомобилей, снятые на Fisheye камеры, наклоненные во всех плоскостях и вариациях. Конечно, классические ровные кубоиды CVAT перестали нам подходить.
Пример данных в пилоте Пример данных основного проекта
Ограничения CVAT и других инструментов
Весь составленный нами план по работе над проектом стал неактуален из-за одного незаметного на первый взгляд ограничения: В CVAT вертикальные края точно параллельны сторонам.
Вот так вот не надо Надо вот так
Причем это же фото появилось в пилоте, но тогда мы перевернули его в нужную плоскость и просто разметили. Как единичный кейс это было бы допустимо, но при большем объеме задач мы бы не смогли придерживаться заявленных метрик.
Поиск решения: что нам не подошло?
Нашей первой мыслью стало просто поменять инструмент. Вместе мы рассмотрели другие инструменты для 3D разметки на 2D изображениях, а именно:
Super Annotate
Label Studio
Supervisely
Hasty
Но комплексный ресерч показал, что на рынке на тот момент ни один инструмент не поддерживал кастомные повороты кубоида. Нам пришлось рассматривать другие опции: измененять метод или типа разметки.
В первом случае можно было разбивать изображения на части, самостоятельно поворачивать каждую часть и размечать прямыми гранями. Это было единственное решение, которое учитывало встроенные ограничения CVAT.
Исходный кадр
Обрезанные и повернутые зоны интереса для разметки с основного кадра
Выполнение задачи таким методом угрожало срывом проекта, так как разбивка изображений увеличивала количество кадров, терялся смысл кадра для обучения модели. Также это заняло бы в три раза больше времени, ведь появлялось больше этапов:
Сначала требовалось определить зону, для которой нужен поворот. Иногда это 5-6 областей на одном кадре.
После шла нарезка и поворот кадров.
Наконец, разметка.
Это звучало сложно и не технологично. Второй способ оказался интереснее, хотя он и менее распространен.
Вторая попытка: координатные линии
Другой опцией стала разметка тремя координатными линиями для последующей прорисовки 3D кубоида разработчками. Эту идею нам подсказали ребята на гитхабе, которые тоже столкнулись с проблемой поворота 3D изображений.
Пример итоговой разметки методом координат (присмотритесь, разметка есть)
Оба варианта с техническими спецификациями и примерами разметки были отправлены ML команде заказчика на изучение.
Геоинформатика! Что это?
Представим, что мы вместе с вами ждем ответ инженеров, и у нас есть время разобраться, что это за линии и как они заменяют кубоиды. Если кратко, то выглядит это так:
Интересно, что корни этого метода уходят в науку, занимающуюся графической визуализацией пространственных данных и связанной с ними информации - геоинформатику. А упрощение пространственного объекта через геометрические объекты является частью геообработки. И одним из главных элементов ГИС (геоинформационных систем) является полилиния (polyline).
В нашем кейсе логика была совершенно идентичная. Мы задаем транспортным средствам геометки, то есть точки и polyline, получается упрощенный пространственный объект. После отправляем изображения ML специалистам на восстановление кубоида по углам Эйлера. Так мы получаем визуализацию как в примере выше.Однако мы уточнили у заказчика, готовы ли они взять на себя дорисовку кубоидов по этой технологии после получения итерации данных от нас?
ГИС-решение клиент одобрил, но без энтузиазма, ведь появлялись сложности восстановления разметки, которая не содержит в себе единой системы. Следующим шагом нужно было добиться стабильной последовательности точек с одинаковым расположением для всех объектов.
Ниже представлена комбинация элементов, подходящая под проект, по мнению заказчика.
На этом этапе мы уже поняли, что идем в верном направлении и от финального технического решения нас отделяет всего один шаг — настройка комбинации. С новыми силами мы приступили к разметке.
К сожалению, комбинация точек от заказчика подходила для меньшинства изображений. Автомобили на изображениях были перекрыты другими объектами и при нестандартном повороте часть точек для разметки пропадали. Как мы выяснили, самостоятельное проставление больше одной точки значительно снижало качество разметки, так что нам нужно было искать больше комбинаций.
Метод 4 комбинаций: что это такое?
Тогда я начал перебирать комбинации расположения точек так, чтобы они подходили ко всем транспортным средствам, к любым направлениям движения автомобилей и ко всем вариантам наклона и поворота машин к камере. Со временем получилось выйти на стабильные 4 комбинации, под которые попадали абсолютно все случаи разметки. На скринах можно ознакомиться с каждым:
Заказчик положительно отреагировал на решение с четырьмя стабильными комбинациями, провел тесты по визуализации кубойдов и сообщил нам, что будет рад работать по такому принципу дальше. Это была настоящая победа. Этот подход мы назвали методом четырех комбинаций.
Первую итерацию в 10 000 линий (или “частичные кубоиды” как назвал их заказчик) мы успешно завершили четырьмя комбинациями с помощью разработок для геоинформационных систем.
Побочным эффектом нашего решения стало удешевление разметки. Гораздо быстрее и проще нарисовать три линии, чем выполнить полноценную 3D разметку с избранными разметчиками, ведь чем проще разметка, тем ниже цена. Благодаря этому у заказчика освободились ресурсы для добавления в ТЗ классификации по цвету и типу кузова, что сильно влияло на обучение модели.
И мы, и сам заказчик настолько воодушевились скоростью, качеством и доступной ценой, что начали работу над еще более искривленными данными с Fisheye камер. Мы работали даже со сложными случаями.
Так мы не только помогли ML команде заказчика решить сложную задачу, нашли новый беспроигрышный метод, но и в разы снизили стоимость разметки. Это позволило клиенту дать нам больше данных и полностью закрыть свой дефицит в разметке. Кстати, с помощью этого решения нам удалось разметить 65 000 автомобилей.
Чему это нас научило?
Этот кейс позволил мне сделать 4 важных вывода, которыми мне бы хотелось поделиться с вами:
Никогда не сдавайтесь в поиске решений, даже если кажется, что всё против вас.
Думайте масштабнее, расширяйте горизонты, выходите за пределы своей ниши. Никогда не знаешь, какая наука наведет на верное решение. Прежде чем сдаваться, изучите все форумы и рассмотрите разные разделы наук.
Общайтесь со своими заказчиками, решайте задачи вместе. Работайте как единая команда, а не просто как незаинтересованный продавец услуг.
Применяйте ГИС-метод 4 комбинаций для подобных кейсов или находите свое уникальное решение.