Изображение в заголовке
Изображение в заголовке получено с помощью инструмента автоматической сегментации и разметки изображений Roboflow, работающего на базе модели Segment Anything Model 3 от Meta. У нас в распоряжении пока несколько тысяч снимков с Эвереста для исследования материальной культуры альпинизма. Сейчас я пытаюсь понять, как аннотировать эти изображения, чтобы выявлять возможные закономерности.
Работа с изображениями проекта археологии
Когда мы работаем с изображениями проекта археологии Международной космической станции, мы используем кастомный инструмент аннотирования изображений, в котором вручную обводим контур каждого объекта и помечаем его в соответствии с таксономией типов объектов. Затем координаты контура для каждого изображения (шестьдесят изображений на квадрат) подвергаются компьютерной обработке: мы вычисляем центроиды, отслеживаем перемещение объектов между изображениями, сравниваем изменения во времени и так далее. Метод работает, но занимает колоссальное количество времени.
Проект Archaeology Impossible
В проекте Archaeology Impossible у нас данных гораздо больше, и они не так аккуратно связаны, как с материалами ISSAP. Что же делать? Придётся автоматизировать процессы. Я нашёл несколько моделей детекции объектов, обученных на изображениях мусора, но в них недостаточно категорий или они не соответствуют тому, что, как мне кажется, мы наблюдаем. Я решил посмотреть, что предлагает Roboflow. Надо признать, интерфейс мне понравился — он аккуратный и удобный.
Функции Roboflow
Roboflow предоставляет доступ к разным моделям обработки изображений и инструмент для разметки изображений (рисование границ и т. п.), который, вероятно, действительно помогает создать достаточно согласованный набор данных. Интересна их функция автолейблинга: задаёшь список объектов, настраиваешь пороговые параметры вероятности, и инструмент начинает сегментировать изображение, маркируя объекты в зависимости от того, выше ли вероятность, чем заданный порог. Например, при установленном пороге модель уверена на одиннадцать процентов, что всё поле зрения — это свалка человеческого мусора. Поднимите порог — и модель перестанет так утверждать.
Настройка параметров
Я предполагаю, что внутри текст и изображение проецируются в общее модельное пространство, и то, что оказывается ближе к вектору моего текстового описания в этом пространстве, помечается на изображении. Когда всё настроено, эти веса можно применить ко всем изображениям. Я долго настраивал параметры, был вполне доволен результатом, нажал кнопку «Автолейбл с этой моделью», сжёг часть бесплатных пробных кредитов Roboflow — и получил папку изображений совсем без аннотаций. Видимо, я где-то ошибся или неправильно понял процесс. Но, может, мне и не нужно идти этим путём.
Сравнение с IMMARKUS
Может быть, мне нужно нечто более похожее на IMMARKUS? С их вики: IMMARKUS — это сервис семантической аннотации изображений, который позволяет собирать и организовывать коллекции изображений и их метаданных, выделять конкретные регионы на изображениях, создавать кастомные модели данных для разметки изображений и добавлять отношения между элементами внутри изображений и между ними. Можно использовать разные коммерческие и открытые модели ИИ, а также добавлять свои собственные, чтобы выбирать части изображения или распознавать и переводить текст на разных языках.
Граф знаний в IMMARKUS
В IMMARKUS также встроен мощный граф знаний для визуализации и запросов по изображениям, аннотациям, связям и метаданным. Всё хранится на вашем устройстве; при этом в фоне загружается и используется модель сегментации изображений для «автовыделения» регионов, которая работает действительно хорошо. В одном из примеров, когда я навёл курсор на разрушенный плакат/подпись, IMMARKUS чётко выделил его. Кликнув по выделенному участку, я могу отметить его подходящими категориями, которые сам создал (категории/подкатегории) или при необходимости создать новые сущности.
Визуальный индекс и кросс-проверка
В представлении графа знаний можно увидеть возникающие закономерности между средствами изображения и ассоциированными аннотациями. IMMARKUS также способен «визуально индексировать» все изображения по сходству. Тогда, если я кликаю по чему-то в изображении, что аннотировал, я быстро нахожу другие изображения с похожими объектами, даже если они ещё не размечены — нечто вроде автоматического лайблера Roboflow. Это удобно и, вероятно, хороший способ кросс-проверки категорий и получения представления о содержимом набора данных.
Сравнение рабочих процессов
В некотором смысле рабочий процесс Roboflow по созданию аннотированного датасета для дальнейшего обучения модели детекции объектов — это подход «удалённого просмотра», тогда как IMMARKUS — более близкое чтение. И, быть может, экспортные форматы IMMARKUS (включая фрагменты, где вырезанный объект извлекается, как на одном из примеров) могут пригодиться в пайплайне обучения модели детекции объектов. Не знаю точно. В любом случае это всё пока исследовательская работа.
Учет масштаба и координат
Возможно, разметка и аннотация в IMMARKUS дадут лучшее представление о том, как должна выглядеть «полная» таксономия, а затем по этой таксономии и автолейблер Roboflow обеспечат автоматическое распознавание, которое нам нужно. Также мне пришло в голову, что нужно как‑то учитывать масштаб и координаты. Я знаю, что некоторые векторные LLM довольно хорошо угадывают местоположение, но я имею в виду не это. Скорее — относительное расположение объектов в сцене, наложение изображений до установления географических точек, а затем отображение всех этих материалов обратно в координатное пространство.
Постскриптум: загрузка собственной модели данных в IMMARKUS
В вики показано, как настроить собственные сущности и т. п. через графический интерфейс IMMARKUS, что отлично, но иногда хочется загрузить напрямую из JSON. Там есть несколько нюансов, которые я, в конце концов, выяснил, читая ошибки в консоли браузера каждый раз при неудачной попытке — моя стратегия заключалась в том, чтобы создать несколько сущностей, сделать аннотации, экспортировать полный файл модели данных IMMARKUS, а затем попытаться развернуть его. Всегда появлялись ошибки формата — «invalid this», «invalid that». Массивы, объекты, уф. Коротко: имейте два отдельных файла — и . Не пытайтесь всё поместить в один файл. Начинайте с квадратной скобки, а не фигурной (то есть массивы, а не объекты). Никогда не используйте null, если что‑то пусто — просто поставьте пустую строку: «». Используйте «label», а не «displayName», как может подсказать интерфейс. Затем импортируйте на вкладке Data Model: entity classes -> , а на вкладке relationships -> .




