Salta para o conteúdo

SAM 2: Segmento Qualquer Modelo 2

SAM 2, o sucessor do Segment Anything Model da Meta (SAM), é uma ferramenta de ponta concebida para uma segmentação abrangente de objectos em imagens e vídeos. Destaca-se no tratamento de dados visuais complexos através de uma arquitetura de modelo unificada e pronta a usar que suporta o processamento em tempo real e a generalização zero-shot.

SAM 2 Exemplos de resultados

Características principais

Arquitetura do modelo unificado

SAM 2 combina as capacidades de segmentação de imagem e vídeo num único modelo. Esta unificação simplifica a implementação e permite um desempenho consistente em diferentes tipos de media. Utiliza uma interface flexível baseada em comandos, permitindo aos utilizadores especificar objectos de interesse através de vários tipos de comandos, tais como pontos, caixas delimitadoras ou máscaras.

Desempenho em tempo real

O modelo atinge velocidades de inferência em tempo real, processando aproximadamente 44 quadros por segundo. Isto torna o SAM 2 adequado para aplicações que requerem feedback imediato, como a edição de vídeo e a realidade aumentada.

Generalização Zero-Shot

SAM 2 pode segmentar objectos que nunca encontrou antes, demonstrando uma forte generalização zero-shot. Isto é particularmente útil em domínios visuais diversos ou em evolução, onde as categorias pré-definidas podem não abranger todos os objectos possíveis.

Refinamento interativo

Os utilizadores podem refinar os resultados da segmentação de forma iterativa, fornecendo avisos adicionais, permitindo um controlo preciso dos resultados. Esta interatividade é essencial para afinar os resultados em aplicações como anotação de vídeo ou imagiologia médica.

Tratamento avançado de desafios visuais

SAM 2 inclui mecanismos para gerir desafios comuns de segmentação de vídeo, como a oclusão e o reaparecimento de objectos. Utiliza um mecanismo de memória sofisticado para manter o registo dos objectos ao longo dos fotogramas, assegurando a continuidade mesmo quando os objectos são temporariamente obscurecidos ou saem e voltam a entrar na cena.

Para uma compreensão mais aprofundada da arquitetura e das capacidades do SAM 2, explora o documento de investigaçãoSAM 2.

Desempenho e detalhes técnicos

SAM 2 estabelece uma nova referência no domínio, superando os modelos anteriores em várias métricas:

Métrica SAM 2 Anterior SOTA
Segmentação de vídeo interativo Melhor -
Interacções humanas necessárias 3x menos Linha de base
Precisão da segmentação de imagens Melhorado SAM
Velocidade de inferência 6x mais rápido SAM

Arquitetura do modelo

Componentes principais

  • Codificador de imagem e vídeo: Utiliza uma arquitetura baseada em transformadores para extrair características de alto nível de imagens e fotogramas de vídeo. Este componente é responsável por compreender o conteúdo visual em cada passo de tempo.
  • Codificador de prompts: Processa os avisos fornecidos pelo utilizador (pontos, caixas, máscaras) para orientar a tarefa de segmentação. Isto permite que o SAM 2 se adapte à entrada do utilizador e vise objectos específicos dentro de uma cena.
  • Mecanismo de memória: Inclui um codificador de memória, um banco de memória e um módulo de atenção à memória. Estes componentes armazenam e utilizam coletivamente informações de fotogramas anteriores, permitindo que o modelo mantenha um seguimento consistente do objeto ao longo do tempo.
  • Descodificador de máscaras: Gera as máscaras de segmentação finais com base nas características da imagem codificada e nos avisos. Em vídeo, também utiliza o contexto da memória para garantir um rastreio preciso entre fotogramas.

SAM 2 Diagrama de arquitetura

Mecanismo de memória e tratamento de oclusão

O mecanismo de memória permite ao SAM 2 tratar as dependências temporais e as oclusões nos dados de vídeo. À medida que os objectos se movem e interagem, o SAM 2 regista as suas características num banco de memória. Quando um objeto fica ocluído, o modelo pode basear-se nesta memória para prever a sua posição e aparência quando reaparece. A cabeça de oclusão lida especificamente com cenários em que os objectos não são visíveis, prevendo a probabilidade de um objeto ser ocluído.

Resolução de Ambiguidades Multi-Máscara

Em situações de ambiguidade (por exemplo, objectos sobrepostos), o SAM 2 pode gerar previsões de máscaras múltiplas. Esta caraterística é crucial para representar com precisão cenas complexas em que uma única máscara pode não descrever suficientemente as nuances da cena.

Conjunto de dados SA-V

O conjunto de dados SA-V, desenvolvido para o treino do SAM 2, é um dos maiores e mais diversificados conjuntos de dados de segmentação de vídeo disponíveis. Inclui:

  • Mais de 51.000 vídeos: Capturados em 47 países, proporcionando uma vasta gama de cenários do mundo real.
  • Mais de 600.000 anotações de máscara: Anotações de máscara espácio-temporais detalhadas, designadas por "masklets", que abrangem objectos inteiros e partes.
  • Escala do conjunto de dados: Apresenta 4,5 vezes mais vídeos e 53 vezes mais anotações do que os maiores conjuntos de dados anteriores, oferecendo uma diversidade e complexidade sem precedentes.

Referências

Segmentação de objectos de vídeo

SAM 2 demonstrou um desempenho superior nas principais referências de segmentação de vídeo:

Conjunto de dados J&F J F
DAVIS 2017 82.5 79.8 85.2
YouTube-VOS 81.2 78.9 83.5

Segmentação interactiva

Em tarefas de segmentação interactiva, SAM 2 mostra uma eficiência e precisão significativas:

Conjunto de dados NoC@90 AUC
DAVIS Interativo 1.54 0.872

Instalação

Para instalar o SAM 2, utiliza o seguinte comando. Todos os modelos SAM 2 serão transferidos automaticamente na primeira utilização.

pip install ultralytics

Como utilizar SAM 2: Versatilidade na segmentação de imagens e vídeos

A tabela a seguir detalha os modelos disponíveis em SAM 2, seus pesos pré-treinados, tarefas suportadas e compatibilidade com diferentes modos de operação, como Inferência, Validação, Treinamento e Exportação.

Tipo de modelo Pesos pré-treinados Tarefas suportadas Inferência Validação Formação Exportação
SAM 2 minúsculos sam2_t.pt Segmentação de instâncias
SAM 2 pequenos sam2_s.pt Segmentação de instâncias
SAM 2 base sam2_b.pt Segmentação de instâncias
SAM 2 grandes sam2_l.pt Segmentação de instâncias

SAM 2 Exemplos de previsão

SAM 2 pode ser utilizado num vasto espetro de tarefas, incluindo edição de vídeo em tempo real, imagiologia médica e sistemas autónomos. A sua capacidade de segmentar dados visuais estáticos e dinâmicos torna-o uma ferramenta versátil para investigadores e programadores.

Segmento com prompts

Segmento com prompts

Utiliza avisos para segmentar objectos específicos em imagens ou vídeos.

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])

Segmenta tudo

Segmenta tudo

Segmenta todo o conteúdo da imagem ou do vídeo sem avisos específicos.

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/video.mp4")
# Run inference with a SAM 2 model
yolo predict model=sam2_b.pt source=path/to/video.mp4
  • Este exemplo demonstra como SAM 2 pode ser utilizado para segmentar todo o conteúdo de uma imagem ou vídeo se não forem fornecidos avisos (bboxes/points/masks).

SAM 2 comparison vs YOLOv8

Here we compare Meta's smallest SAM 2 model, SAM2-t, with Ultralytics smallest segmentation model, YOLOv8n-seg:

Modelo Size
(MB)
Parameters
(M)
Speed (CPU)
(ms/im)
Meta SAM-b 375 93.7 161440
Meta SAM2-b 162 80.8 121923
Meta SAM2-t 78.1 38.9 85155
MobileSAM 40.7 10.1 98543
FastSAM-s com YOLOv8 backbone 23.7 11.8 140
Ultralytics YOLOv8n-seg 6.7 (11.7x smaller) 3.4 (11.4x less) 79.5 (1071x faster)

Esta comparação mostra as diferenças de ordem de grandeza nas dimensões e velocidades dos modelos. Embora o SAM apresente capacidades únicas para segmentação automática, não é um concorrente direto dos modelos de segmentos do YOLOv8 , que são mais pequenos, mais rápidos e mais eficientes.

Tests run on a 2023 Apple M2 Macbook with 16GB of RAM using torch==2.3.1 e ultralytics==8.3.82. To reproduce this test:

Exemplo

from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Profile YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model(ASSETS)

Anotação automática: Criação eficiente de conjuntos de dados

A anotação automática é um recurso poderoso do SAM 2, permitindo que os usuários gerem conjuntos de dados de segmentação com rapidez e precisão, aproveitando modelos pré-treinados. Esta capacidade é particularmente útil para criar conjuntos de dados grandes e de alta qualidade sem grande esforço manual.

Como fazer anotações automáticas com SAM 2

Para anotar automaticamente o seu conjunto de dados utilizando SAM 2, segue este exemplo:

Exemplo de anotação automática

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam2_b.pt")
Argumenta Tipo Descrição Predefinição
data str Caminho para uma pasta que contém imagens a serem anotadas.
det_model str, opcional Modelo de deteção YOLO pré-treinado. Usa como predefinição 'yolov8x.pt'. 'yolov8x.pt'
sam_model str, opcional Modelo de segmentação SAM 2 pré-treinado. Usa como predefinição 'sam2_b.pt'. 'sam2_b.pt'
device str, opcional Dispositivo em que executa os modelos. Usa por defeito uma cadeia de caracteres vazia (CPU ou GPU, se disponível).
output_dir str, None, opcional Diretório para guardar os resultados anotados. A predefinição é uma pasta 'labels' no mesmo diretório que 'data'. None

Esta função facilita a criação rápida de conjuntos de dados de segmentação de alta qualidade, ideal para investigadores e programadores que pretendem acelerar os seus projectos.

Limitações

Apesar dos seus pontos fortes, o SAM 2 tem algumas limitações:

  • Estabilidade de seguimento: SAM 2 pode perder o seguimento de objectos durante sequências longas ou mudanças significativas de ponto de vista.
  • Confusão de objectos: O modelo pode por vezes confundir objectos de aspeto semelhante, especialmente em cenas com muita gente.
  • Eficiência com vários objectos: A eficiência da segmentação diminui quando processa vários objectos simultaneamente devido à falta de comunicação entre objectos.
  • Precisão de detalhes: Pode falhar detalhes finos, especialmente com objectos em movimento rápido. Avisos adicionais podem resolver parcialmente este problema, mas a suavidade temporal não é garantida.

Citações e agradecimentos

Se a SAM 2 for uma parte crucial do teu trabalho de investigação ou desenvolvimento, cita-a utilizando a seguinte referência:

@article{ravi2024sam2,
  title={SAM 2: Segment Anything in Images and Videos},
  author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
  journal={arXiv preprint},
  year={2024}
}

Agradecemos à Meta AI a sua contribuição para a comunidade de IA com este modelo e conjunto de dados inovadores.

FAQ

O que é SAM 2 e como é que melhora o modelo original Segment Anything Model (SAM)?

SAM 2, o sucessor do Segment Anything Model da Meta (SAM), é uma ferramenta de ponta concebida para uma segmentação abrangente de objectos em imagens e vídeos. Destaca-se no tratamento de dados visuais complexos através de uma arquitetura de modelo unificada e pronta a usar que suporta o processamento em tempo real e a generalização zero-shot. SAM O 2 oferece várias melhorias em relação ao original SAM, incluindo:

  • Arquitetura de modelo unificado: Combina recursos de segmentação de imagem e vídeo em um único modelo.
  • Desempenho em tempo real: Processa aproximadamente 44 quadros por segundo, tornando-o adequado para aplicações que exigem feedback imediato.
  • Generalização Zero-Shot: Segmenta objectos que nunca encontrou antes, útil em diversos domínios visuais.
  • Refinamento interativo: Permite que os utilizadores refinem iterativamente os resultados da segmentação, fornecendo avisos adicionais.
  • Manipulação avançada de desafios visuais: Gere os desafios comuns de segmentação de vídeo, como a oclusão e o reaparecimento de objectos.

Para mais informações sobre a arquitetura e as capacidades do SAM 2, consulta o documento de investigaçãoSAM 2.

Como posso utilizar SAM 2 para segmentação de vídeo em tempo real?

SAM 2 pode ser utilizado para a segmentação de vídeo em tempo real, tirando partido da sua interface de resposta rápida e das suas capacidades de inferência em tempo real. Segue um exemplo básico:

Segmento com prompts

Utiliza avisos para segmentar objectos específicos em imagens ou vídeos.

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])

Para uma utilização mais abrangente, consulta a secção Como utilizar SAM 2.

Que conjuntos de dados são utilizados para treinar SAM 2 e como é que melhoram o seu desempenho?

SAM 2 é treinado no conjunto de dados SA-V, um dos maiores e mais diversificados conjuntos de dados de segmentação de vídeo disponíveis. O conjunto de dados SA-V inclui:

  • Mais de 51.000 vídeos: Capturados em 47 países, proporcionando uma vasta gama de cenários do mundo real.
  • Mais de 600.000 anotações de máscara: Anotações de máscara espácio-temporais detalhadas, designadas por "masklets", que abrangem objectos inteiros e partes.
  • Escala do conjunto de dados: Apresenta 4,5 vezes mais vídeos e 53 vezes mais anotações do que os maiores conjuntos de dados anteriores, oferecendo diversidade e complexidade sem precedentes.

Esse extenso conjunto de dados permite que o SAM 2 atinja um desempenho superior nos principais benchmarks de segmentação de vídeo e aprimora seus recursos de generalização de zero-shot. Para mais informações, consulta a secção Conjunto de dados SA-V.

Como é que o SAM 2 lida com oclusões e reaparecimentos de objectos na segmentação de vídeo?

SAM 2 inclui um mecanismo de memória sofisticado para gerir as dependências temporais e as oclusões nos dados de vídeo. O mecanismo de memória consiste em:

  • Codificador de memória e banco de memória: Armazena características de fotogramas anteriores.
  • Módulo de Atenção à Memória: Utiliza a informação armazenada para manter um seguimento consistente do objeto ao longo do tempo.
  • Cabeça de oclusão: lida especificamente com cenários em que os objectos não são visíveis, prevendo a probabilidade de um objeto ser ocluído.

Este mecanismo assegura a continuidade mesmo quando os objectos são temporariamente obscurecidos ou saem e voltam a entrar na cena. Para mais detalhes, consulta a secção Mecanismo de memória e tratamento de oclusão.

Como é que o SAM 2 se compara a outros modelos de segmentação como o YOLOv8?

SAM 2 e Ultralytics YOLOv8 servem diferentes objectivos e destacam-se em diferentes áreas. Enquanto o SAM 2 foi concebido para uma segmentação abrangente de objectos com funcionalidades avançadas, como a generalização de zero-shot e o desempenho em tempo real, o YOLOv8 foi optimizado para velocidade e eficiência em tarefas de deteção e segmentação de objectos. Faz uma comparação:

Modelo Size
(MB)
Parameters
(M)
Speed (CPU)
(ms/im)
Meta SAM-b 375 93.7 161440
Meta SAM2-b 162 80.8 121923
Meta SAM2-t 78.1 38.9 85155
MobileSAM 40.7 10.1 98543
FastSAM-s com YOLOv8 backbone 23.7 11.8 140
Ultralytics YOLOv8n-seg 6.7 (11.7x smaller) 3.4 (11.4x less) 79.5 (1071x faster)

For more details, see the SAM 2 comparison vs YOLOv8 section.


📅 Created 1 month ago ✏️ Updated 10 days ago

Comentários