SegAnyMo: инструмент с открытым исходным кодом для автоматического сегментирования произвольных движущихся объектов из видео.

Общее введение

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

SegAnyMo:从视频中自动分割任意运动物体的开源工具

 

Список функций

  • Автоматически обнаруживает движущиеся объекты на видео и генерирует точные маски сегментации.
  • Поддержка видеоформатов (например, MP4, AVI) или ввода последовательности изображений.
  • Предоставляет предварительно обученные модели для быстрого развертывания и тестирования.
  • Интеграция с TAPNet позволяет генерировать 2D-следы для сбора информации о движении.
  • Использование DINOv2 для извлечения семантических признаков с целью повышения точности сегментации.
  • Сегментация на пиксельном уровне с использованием уточняющей маски SAM2.
  • Поддержка индивидуального обучения на наборах данных для адаптации к различным сценариям.
  • Выдает визуализированные результаты для удобства проверки и настройки.

 

Использование помощи

SegAnyMo требует определенной технической базы и в основном ориентирован на пользователей с опытом программирования. Ниже приведено подробное руководство по установке и использованию.

Процесс установки

  1. Подготовьте аппаратное и программное обеспечение
    Проект разрабатывается на Ubuntu 22.04, рекомендуется использовать видеокарту NVIDIA RTX A6000 или аналогичную с поддержкой CUDA. Требуются предустановленные Git и Anaconda.

    • Клонируйте репозиторий кода:
      git clone --recurse-submodules https://github.com/nnanhuang/SegAnyMo
      
    • Перейдите в каталог проектов:
      cd SegAnyMo
      
  2. Создание виртуальной среды
    Создайте отдельное окружение Python в Anaconda, чтобы избежать конфликтов зависимостей.

    • Создание среды:
      conda create -n seg python=3.12.4
      
    • Активируйте окружающую среду:
      conda activate seg
      
  3. Установка основных зависимостей
    Установите 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
      
  4. Установка DINOv2
    Для извлечения признаков используется DINOv2.

    • Перейдите в каталог предварительной обработки и создайте клон:
      cd preproc && git clone https://github.com/facebookresearch/dinov2
      
  5. Установка SAM2
    SAM2 - это ядро для уточнения масок.

    • Перейдите в каталог SAM2:
      cd sam2
      
    • Установка:
      pip install -e .
      
    • Загрузите предварительно обученную модель:
      cd checkpoints && ./download_ckpts.sh && cd ../..
      
  6. Установка TAPNet
    TAPNet используется для создания двумерных трасс слежения.

    • Перейдите в каталог TAPNet:
      cd preproc/tapnet
      
    • Установка:
      pip install .
      
    • Загрузите модель:
      cd ../checkpoints && wget https://storage.googleapis.com/dm-tapnet/bootstap/bootstapir_checkpoint_v2.pt
      
  7. Проверка установки
    Убедитесь, что окружающая среда в норме:
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 Папка.
  • Если это последовательность изображений, поместите ее непосредственно в соответствующий каталог.

Оперативная предварительная обработка

  1. Создание карт глубины, особенностей и траекторий
    Используйте следующие команды для обработки данных (около 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 кадров используется в качестве кадра запроса, который может быть изменен в меньшую сторону для повышения точности.

Прогнозирование траекторий движения

  1. Скачать модельные веса
    через (щель) Обнимающееся лицо возможно 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.

Создание маски сегментации

  1. Использование уточняющей маски 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 формате, имя файла должно быть простым числом. Если оно не совпадает, вы можете изменить код или переименовать файл.

Результаты оценки

  1. Загрузите предварительно рассчитанные результаты
    передающая организация 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
      

Индивидуальное обучение

  1. Предварительная обработка данных
    В качестве примера используется набор данных 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
    
  1. обучение модели
    модификации configs/$CONFIG.yaml конфигурация, обученная на таких наборах данных, как Kubric, HOI4D и др:
CUDA_VISIBLE_DEVICES=0 python train_seq.py ./configs/$CONFIG.yaml

 

сценарий применения

  1. Постпродакшн видео
    Выделите из видео движущиеся объекты (например, бегущих людей), создайте маски и используйте их для композитинга эффектов.
  2. Исследования в области поведенческого анализа
    Отслеживание траекторий движения животных или людей и анализ поведенческих моделей.
  3. Развитие автономного вождения
    Сегментация движущихся объектов (например, автомобилей, пешеходов) в видеозаписях вождения для оптимизации системы восприятия.
  4. Оптимизация системы мониторинга
    Извлечение аномальных движений из видеозаписей с камер наблюдения для повышения эффективности системы безопасности.

 

QA

  1. Нужен графический процессор?
    Да, рекомендуется, чтобы карты NVIDIA поддерживали CUDA, иначе они будут работать неэффективно.
  2. Поддерживает ли он обработку в реальном времени?
    Текущая версия подходит для автономной обработки, приложения, работающие в реальном времени, должны быть оптимизированы самостоятельно.
  3. Сколько места вам нужно для тренировок?
    В зависимости от набора данных, малый набор данных составляет несколько гигабайт, а большой - сотни гигабайт.
  4. Как повысить точность сегментации?
    уменьшаться --step значения, или обучить модель на большем количестве меченых данных.
© заявление об авторских правах

Похожие статьи

Нет комментариев

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