SegAnyMo: инструмент с открытым исходным кодом для автоматического сегментирования произвольных движущихся объектов из видео.
Общее введение
SegAnyMo - это проект с открытым исходным кодом, разработанный группой исследователей из Калифорнийского университета в Беркли и Пекинского университета, среди которых есть и Нан Хуанг. Инструмент ориентирован на обработку видео и позволяет автоматически идентифицировать и сегментировать произвольные движущиеся объекты на видео, такие как люди, животные или транспортные средства. Проект объединяет такие технологии, как TAPNet, DINOv2 и SAM2, и планирует представить результаты на CVPR 2025. Код проекта полностью публичен и свободен для загрузки, использования и модификации, он подходит для разработчиков, исследователей и энтузиастов обработки видео. Цель SegAnyMo - упростить анализ движущегося видео и предоставить эффективные решения для сегментации.

Список функций
- Автоматически обнаруживает движущиеся объекты на видео и генерирует точные маски сегментации.
- Поддержка видеоформатов (например, MP4, AVI) или ввода последовательности изображений.
- Предоставляет предварительно обученные модели для быстрого развертывания и тестирования.
- Интеграция с TAPNet позволяет генерировать 2D-следы для сбора информации о движении.
- Использование DINOv2 для извлечения семантических признаков с целью повышения точности сегментации.
- Сегментация на пиксельном уровне с использованием уточняющей маски SAM2.
- Поддержка индивидуального обучения на наборах данных для адаптации к различным сценариям.
- Выдает визуализированные результаты для удобства проверки и настройки.
Использование помощи
SegAnyMo требует определенной технической базы и в основном ориентирован на пользователей с опытом программирования. Ниже приведено подробное руководство по установке и использованию.
Процесс установки
- Подготовьте аппаратное и программное обеспечение
Проект разрабатывается на Ubuntu 22.04, рекомендуется использовать видеокарту NVIDIA RTX A6000 или аналогичную с поддержкой CUDA. Требуются предустановленные Git и Anaconda.- Клонируйте репозиторий кода:
git clone --recurse-submodules https://github.com/nnanhuang/SegAnyMo
- Перейдите в каталог проектов:
cd SegAnyMo
- Клонируйте репозиторий кода:
- Создание виртуальной среды
Создайте отдельное окружение Python в Anaconda, чтобы избежать конфликтов зависимостей.- Создание среды:
conda create -n seg python=3.12.4
- Активируйте окружающую среду:
conda activate seg
- Создание среды:
- Установка основных зависимостей
Установите PyTorch и другие необходимые библиотеки.- Установите PyTorch (поддерживает CUDA 12.1):
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.1 -c pytorch -c nvidia
- Установите другие зависимости:
pip install -r requirements.txt
- Установите xformers (ускоренные рассуждения):
pip install -U xformers --index-url https://download.pytorch.org/whl/cu121
- Установите PyTorch (поддерживает CUDA 12.1):
- Установка DINOv2
Для извлечения признаков используется DINOv2.- Перейдите в каталог предварительной обработки и создайте клон:
cd preproc && git clone https://github.com/facebookresearch/dinov2
- Перейдите в каталог предварительной обработки и создайте клон:
- Установка SAM2
SAM2 - это ядро для уточнения масок.- Перейдите в каталог SAM2:
cd sam2
- Установка:
pip install -e .
- Загрузите предварительно обученную модель:
cd checkpoints && ./download_ckpts.sh && cd ../..
- Перейдите в каталог SAM2:
- Установка TAPNet
TAPNet используется для создания двумерных трасс слежения.- Перейдите в каталог TAPNet:
cd preproc/tapnet
- Установка:
pip install .
- Загрузите модель:
cd ../checkpoints && wget https://storage.googleapis.com/dm-tapnet/bootstap/bootstapir_checkpoint_v2.pt
- Перейдите в каталог TAPNet:
- Проверка установки
Убедитесь, что окружающая среда в норме:
python -c "import torch; print(torch.cuda.is_available())"
экспорт True
Означает успех.
Использование
Подготовка данных
SegAnyMo поддерживает ввод видео или последовательности изображений. Данные должны быть организованы в следующую структуру:
data
├── images
│ ├── scene_name
│ │ ├── image_name
│ │ ├── ...
├── bootstapir
│ ├── scene_name
│ │ ├── image_name
│ │ ├── ...
├── dinos
│ ├── scene_name
│ │ ├── image_name
│ │ ├── ...
├── depth_anything_v2
│ ├── scene_name
│ │ ├── image_name
│ │ ├── ...
- Если на вход подается видео, используйте инструмент (например, FFmpeg) для извлечения кадров в
images
Папка. - Если это последовательность изображений, поместите ее непосредственно в соответствующий каталог.
Оперативная предварительная обработка
- Создание карт глубины, особенностей и траекторий
Используйте следующие команды для обработки данных (около 10 минут, в зависимости от объема данных):- Для последовательностей изображений:
python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --depths --tracks --dinos --e
- Для видео:
python core/utils/run_inference.py --video_path $VIDEO_PATH --gpus 0 --depths --tracks --dinos --e
Описание параметра:
--e
Включите режим Efficient Mode, чтобы снизить частоту кадров и разрешение и ускорить обработку.--step 10
Указывает, что 1 кадр из каждых 10 кадров используется в качестве кадра запроса, который может быть изменен в меньшую сторону для повышения точности.
- Для последовательностей изображений:
Прогнозирование траекторий движения
- Скачать модельные веса
через (щель) Обнимающееся лицо возможно Google Диск Загрузите предварительно обученную модель. Запишите путь кconfigs/example_train.yaml
(используется в форме номинального выражения)resume_path
Поля.- Прогнозирование траектории бега:
python core/utils/run_inference.py --data_dir $DATA_DIR --motin_seg_dir $OUTPUT_DIR --config_file configs/example_train.yaml --gpus 0 --motion_seg_infer --e
Вывод сохраняется в
$OUTPUT_DIR
. - Прогнозирование траектории бега:
Создание маски сегментации
- Использование уточняющей маски SAM2
- Запуск генерации масок:
python core/utils/run_inference.py --data_dir $DATA_DIR --sam2dir $RESULT_DIR --motin_seg_dir $OUTPUT_DIR --gpus 0 --sam2 --e
Описание параметра:
$DATA_DIR
путь к исходному изображению.$RESULT_DIR
путь сохранения маски.$OUTPUT_DIR
это траектория предсказания результата.
Примечание: SAM2 поддерживает по умолчанию.jpg
возможно.jpeg
формате, имя файла должно быть простым числом. Если оно не совпадает, вы можете изменить код или переименовать файл.
- Запуск генерации масок:
Результаты оценки
- Загрузите предварительно рассчитанные результаты
передающая организация Google Диск Загрузите официальную маску для сравнения.- Оценка набора данных DAVIS:
CUDA_VISIBLE_DEVICES=0 python core/eval/eval_mask.py --res_dir $RES_DIR --eval_dir $GT_DIR --eval_seq_list core/utils/moving_val_sequences.txt
- Уточненная оценка:
cd core/eval/davis2017-evaluation && CUDA_VISIBLE_DEVICES=0 python evaluation_method.py --task unsupervised --results_path $MASK_PATH
- Оценка набора данных DAVIS:
Индивидуальное обучение
- Предварительная обработка данных
В качестве примера используется набор данных HOI4D:
python core/utils/process_HOI.py
python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --tracks --depths --dinos
Для пользовательских наборов данных требуются RGB-изображения и динамические маски.
- Проверьте целостность данных:
python current-data-dir/dynamic_stereo/dynamic_replica_data/check_process.py
- Очистка данных экономит место:
python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --clean
- обучение модели
модификацииconfigs/$CONFIG.yaml
конфигурация, обученная на таких наборах данных, как Kubric, HOI4D и др:
CUDA_VISIBLE_DEVICES=0 python train_seq.py ./configs/$CONFIG.yaml
сценарий применения
- Постпродакшн видео
Выделите из видео движущиеся объекты (например, бегущих людей), создайте маски и используйте их для композитинга эффектов. - Исследования в области поведенческого анализа
Отслеживание траекторий движения животных или людей и анализ поведенческих моделей. - Развитие автономного вождения
Сегментация движущихся объектов (например, автомобилей, пешеходов) в видеозаписях вождения для оптимизации системы восприятия. - Оптимизация системы мониторинга
Извлечение аномальных движений из видеозаписей с камер наблюдения для повышения эффективности системы безопасности.
QA
- Нужен графический процессор?
Да, рекомендуется, чтобы карты NVIDIA поддерживали CUDA, иначе они будут работать неэффективно. - Поддерживает ли он обработку в реальном времени?
Текущая версия подходит для автономной обработки, приложения, работающие в реальном времени, должны быть оптимизированы самостоятельно. - Сколько места вам нужно для тренировок?
В зависимости от набора данных, малый набор данных составляет несколько гигабайт, а большой - сотни гигабайт. - Как повысить точность сегментации?
уменьшаться--step
значения, или обучить модель на большем количестве меченых данных.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...