Aprendizagem pessoal com IA
e orientação prática
Beanbag Marscode1

SegAnyMo: uma ferramenta de código aberto para segmentar automaticamente objetos móveis arbitrários em vídeos

Introdução geral

O SegAnyMo é um projeto de código aberto desenvolvido por uma equipe de pesquisadores da UC Berkeley e da Universidade de Pequim, incluindo membros como Nan Huang. A ferramenta se concentra no processamento de vídeo e pode identificar e segmentar automaticamente objetos móveis arbitrários em um vídeo, como pessoas, animais ou veículos. Ela combina tecnologias como TAPNet, DINOv2 e SAM2, e planeja apresentar os resultados na CVPR 2025. O código do projeto é totalmente público e gratuito para download, uso ou modificação pelos usuários, e é adequado para desenvolvedores, pesquisadores e entusiastas do processamento de vídeo. O objetivo do SegAnyMo é simplificar a análise de vídeos em movimento e fornecer soluções eficientes de segmentação.

SegAnyMo: uma ferramenta de código aberto para segmentar automaticamente objetos móveis arbitrários em vídeo-1


 

Lista de funções

  • Detecta automaticamente objetos em movimento no vídeo e gera máscaras de segmentação precisas.
  • Suporte para formatos de vídeo (por exemplo, MP4, AVI) ou entrada de sequência de imagens.
  • Fornece modelos pré-treinados para dar suporte à implantação e aos testes rápidos.
  • A integração com o TAPNet gera traços de rastreamento 2D para capturar informações de movimento.
  • Usando o DINOv2 para extrair recursos semânticos para melhorar a precisão da segmentação.
  • Segmentação em nível de pixel usando a máscara de refinamento SAM2.
  • Suporte ao treinamento de conjuntos de dados personalizados para se adaptar a diferentes cenários.
  • Emite resultados visualizados para facilitar a verificação e o ajuste.

 

Usando a Ajuda

O SegAnyMo requer uma certa base técnica e é destinado principalmente a usuários com experiência em programação. Veja abaixo um guia detalhado de instalação e uso.

Processo de instalação

  1. Preparar hardware e software
    O projeto está sendo desenvolvido no Ubuntu 22.04, e recomenda-se uma placa de vídeo NVIDIA RTX A6000 ou similar habilitada para CUDA. Requer Git e Anaconda pré-instalados.

    • Clonar o repositório de código:
      git clone --recurse-submodules https://github.com/nnanhuang/SegAnyMo
      
    • Vá para o catálogo de projetos:
      cd SegAnyMo
      
  2. Criação de um ambiente virtual
    Crie um ambiente Python separado com o Anaconda para evitar conflitos de dependência.

    • Criar um ambiente:
      conda create -n seg python=3.12.4
      
    • Ativar o ambiente:
      conda activate seg
      
  3. Instalação das dependências do núcleo
    Instale o PyTorch e outras bibliotecas necessárias.

    • Instale o PyTorch (compatível com 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
      
    • Instalar outras dependências:
      pip install -r requirements.txt
      
    • Instale o xformers (raciocínio acelerado):
      pip install -U xformers --index-url https://download.pytorch.org/whl/cu121
      
  4. Instalação do DINOv2
    O DINOv2 é usado para extração de recursos.

    • Vá para o catálogo de pré-processamento e clone:
      cd preproc && git clone https://github.com/facebookresearch/dinov2
      
  5. Instalação do SAM2
    SAM2 é o núcleo de refinamento da máscara.

    • Acesse o catálogo SAM2:
      cd sam2
      
    • Instalação:
      pip install -e .
      
    • Faça o download do modelo pré-treinado:
      cd checkpoints && ./download_ckpts.sh && cd ../..
      
  6. Instalação do TAPNet
    O TAPNet é usado para gerar traços de rastreamento 2D.

    • Acesse o catálogo TAPNet:
      cd preproc/tapnet
      
    • Instalação:
      pip install .
      
    • Faça o download do modelo:
      cd ../checkpoints && wget https://storage.googleapis.com/dm-tapnet/bootstap/bootstapir_checkpoint_v2.pt
      
  7. Verificar a instalação
    Verifique se o ambiente está normal:
python -c "import torch; print(torch.cuda.is_available())"

exportações True Indica sucesso.

Uso

Preparação de dados

O SegAnyMo suporta a entrada de sequências de vídeo ou imagem. Os dados precisam ser organizados na seguinte estrutura:

data
├── images
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
├── bootstapir
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
├── dinos
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
├── depth_anything_v2
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
  • Se a entrada for um vídeo, use uma ferramenta (como o FFmpeg) para extrair quadros para o images Pasta.
  • Se for uma sequência de imagens, coloque-a diretamente no diretório correspondente.

Pré-processamento operacional

  1. Gerar mapas de profundidade, recursos e trajetórias
    Use os seguintes comandos para processar os dados (cerca de 10 minutos, dependendo da quantidade de dados):

    • Para sequências de imagens:
      python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --depths --tracks --dinos --e
      
    • Para o vídeo:
      python core/utils/run_inference.py --video_path $VIDEO_PATH --gpus 0 --depths --tracks --dinos --e
      

    Descrição do parâmetro:

    • --e Ative o Modo Eficiente para reduzir a taxa de quadros e a resolução e acelerar o processamento.
    • --step 10 Indica que 1 quadro de cada 10 quadros é usado como quadro de consulta, que pode ser ajustado para baixo para melhorar a precisão.

Previsão de trajetórias de movimento

  1. Download dos pesos do modelo
    através de (uma lacuna) Cara de abraço talvez Google Drive Faça o download do modelo pré-treinado. Escreva o caminho para o arquivo configs/example_train.yaml (usado em uma expressão nominal) resume_path Campos.

    • Previsão de trajetória de corrida:
      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
      

    A saída é salva no arquivo $OUTPUT_DIR.

Gerar máscara de segmentação

  1. Usando a máscara de refinamento SAM2
    • Geração de máscara de execução:
      python core/utils/run_inference.py --data_dir $DATA_DIR --sam2dir $RESULT_DIR --motin_seg_dir $OUTPUT_DIR --gpus 0 --sam2 --e
      

    Descrição do parâmetro:

    • $DATA_DIR é o caminho da imagem original.
    • $RESULT_DIR é o caminho de salvamento da máscara.
    • $OUTPUT_DIR é o caminho do resultado da previsão da trajetória.
      Observação: O SAM2 suporta, por padrão .jpg talvez .jpeg o nome do arquivo precisa ser um número simples. Se esse não for o caso, altere o código ou renomeie o arquivo.

Resultados da avaliação

  1. Download de resultados pré-calculados
    entidade transferidora Google Drive Faça o download da máscara oficial para comparação.

    • Avaliação do conjunto de dados 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
      
    • Avaliação refinada:
      cd core/eval/davis2017-evaluation && CUDA_VISIBLE_DEVICES=0 python evaluation_method.py --task unsupervised --results_path $MASK_PATH
      

Treinamento personalizado

  1. Pré-processamento de dados
    O conjunto de dados HOI4D é usado como exemplo:
python core/utils/process_HOI.py
python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --tracks --depths --dinos

Imagens RGB e máscaras dinâmicas são necessárias para conjuntos de dados personalizados.

  • Verifique a integridade dos dados:
    python current-data-dir/dynamic_stereo/dynamic_replica_data/check_process.py
    
  • A limpeza de dados economiza espaço:
    python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --clean
    
  1. treinamento de modelos
    modificações configs/$CONFIG.yaml treinado com conjuntos de dados como Kubric, HOI4D, etc:
CUDA_VISIBLE_DEVICES=0 python train_seq.py ./configs/$CONFIG.yaml

 

cenário do aplicativo

  1. Pós-produção de vídeo
    Separe objetos em movimento (por exemplo, pessoas correndo) do vídeo, gere máscaras e use-as para composição de efeitos.
  2. Pesquisa de análise comportamental
    Rastreamento de trajetórias de movimento de animais ou pessoas e análise de padrões de comportamento.
  3. Desenvolvimento de direção autônoma
    Segmentação de objetos em movimento (por exemplo, veículos, pedestres) em vídeos de direção para otimizar o sistema de percepção.
  4. Otimização do sistema de monitoramento
    Extraia movimentos anormais de vídeos de vigilância para aumentar a eficiência da segurança.

 

QA

  1. Precisa de uma GPU?
    Sim, é recomendável que as placas NVIDIA suportem CUDA, caso contrário, elas serão executadas de forma ineficiente.
  2. Ele oferece suporte ao processamento em tempo real?
    A versão atual é adequada para processamento off-line; os aplicativos em tempo real precisam ser otimizados por conta própria.
  3. Quanto espaço você precisa para o treinamento?
    Dependendo do conjunto de dados, um conjunto de dados pequeno tem alguns gigabytes e um conjunto de dados grande pode ter centenas de gigabytes.
  4. Como melhorar a precisão da segmentação?
    diminuir --step ou treinar o modelo com mais dados rotulados.
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " SegAnyMo: uma ferramenta de código aberto para segmentar automaticamente objetos móveis arbitrários em vídeos
pt_BRPortuguês do Brasil