Saltar para o conteúdo

SAM 2.1

Acabámos de suportar o modelo mais preciso SAM2.1. Experimente-o!

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 sem disparos.

SAM 2 Exemplo de resultados

Caraterísticas principais



Ver: Como executar a inferência com o Meta's SAM2 utilizando Ultralytics | Guia passo-a-passo 🎉

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 de 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 reaparecimento de objectos. Utiliza um mecanismo de memória sofisticado para manter o registo dos objectos ao longo dos fotogramas, garantindo a continuidade mesmo quando os objectos são temporariamente ocultados ou saem e voltam a entrar na cena.

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

Desempenho e pormenores técnicos

SAM 2 estabelece uma nova referência no domínio, superando os modelos anteriores em vários parâmetros:

Métrica SAM 2 Anterior SOTA
Segmentação de vídeo interativo Melhor -
Interaçõ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 de modelos

Componentes principais

  • Codificador de imagem e vídeo: Utiliza uma arquitetura baseada em transformadores para extrair caraterí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 caraterísticas da imagem codificada e nos avisos. No vídeo, também utiliza o contexto da memória para garantir um seguimento exato dos 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 caraterí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 a formação 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, utilize o seguinte comando. Todos os modelos do 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 seguinte apresenta em pormenor os modelos disponíveis em SAM 2, os seus pesos pré-treinados, as tarefas suportadas e a compatibilidade com diferentes modos de funcionamento, como Inferência, Validação, Treino 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.1 minúsculo sam2.1_t.pt Segmentação de instâncias
SAM 2.1 pequeno sam2.1_s.pt Segmentação de instâncias
SAM 2.1 base sam2.1_b.pt Segmentação de instâncias
SAM 2.1 grandes sam2.1_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

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

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_b.pt")

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

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

# Run inference with single point
results = model(points=[900, 370], labels=[1])

# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Segmento Tudo

Segmento Tudo

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

from ultralytics import SAM

# Load a model
model = SAM("sam2.1_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.1_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/pontos/máscaras).

SAM 2 comparação vs YOLOv8

Aqui comparamos o modelo mais pequeno do Meta SAM 2, SAM2-t, com o modelo de segmentação mais pequeno do Ultralytics , YOLOv8n-seg:

Modelo Tamanho
(MB)
Parâmetros
(M)
Velocidade (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 mais pequeno) 3,4 (menos 11,4x) 79,5 (1071x mais rápido)

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 segmento do YOLOv8 , que são mais pequenos, mais rápidos e mais eficientes.

Testes efectuados num Macbook Apple M2 de 2023 com 16 GB de RAM, utilizando torch==2.3.1 e ultralytics==8.3.82. Para reproduzir este teste:

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 é uma caraterística poderosa do SAM 2, permitindo aos utilizadores gerar conjuntos de dados de segmentação de forma rápida e precisa, tirando partido de 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, siga este exemplo:

Exemplo de anotação automática

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam2_b.pt")
Argumento Tipo Descrição Predefinição
data str Caminho para uma pasta que contém imagens a serem anotadas.
det_model str, facultativo Modelo de deteção YOLO pré-treinado. A predefinição é 'yolo11x.pt'. 'yolo11x.pt'
sam_model str, facultativo Modelo de segmentação SAM 2 pré-treinado. A predefinição é 'sam2_b.pt'. 'sam2_b.pt'
device str, facultativo Dispositivo no qual os modelos devem ser executados. A predefinição é uma cadeia de caracteres vazia (CPU ou GPU, se disponível).
conf float, facultativo Limiar de confiança para o modelo de deteção; a predefinição é 0,25. 0.25
iou float, facultativo Limiar IoU para filtrar caixas sobrepostas nos resultados da deteção; a predefinição é 0,45. 0.45
imgsz int, facultativo Dimensão de redimensionamento da imagem de entrada; a predefinição é 640. 640
max_det int, facultativo Limita as detecções por imagem para controlar as saídas em cenas densas. 300
classes list, facultativo Filtra as previsões para os IDs de classe especificados, devolvendo apenas as detecções relevantes. None
output_dir str, None, facultativo 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 múltiplos objectos: A eficiência da segmentação diminui quando se processam vários objectos em simultâneo devido à falta de comunicação entre objectos.
  • Precisão de detalhes: Pode falhar detalhes finos, especialmente com objectos em movimento rápido. Os 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 seu trabalho de investigação ou desenvolvimento, cite-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 sem disparos. SAM O 2 oferece várias melhorias em relação ao original SAM, incluindo:

  • Arquitetura de modelo unificado: Combina capacidades de segmentação de imagem e vídeo num ú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.
  • Tratamento avançado de desafios visuais: Gerencia os desafios comuns de segmentação de vídeo, como oclusão e reaparecimento de objetos.

Para mais informações sobre a arquitetura e as capacidades do SAM 2, consulte 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. Eis um exemplo básico:

Segmento com prompts

Utilizar 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, consulte a secção Como utilizar o 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.

Este extenso conjunto de dados permite que o SAM 2 atinja um desempenho superior nos principais benchmarks de segmentação de vídeo e melhora as suas capacidades de generalização de zero-shot. Para mais informações, consulte 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 caraterí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, consulte a secção Mecanismo de memória e tratamento de oclusão.

Como é que SAM 2 se compara a outros modelos de segmentação como 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 disparos 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. Aqui está uma comparação:

Modelo Tamanho
(MB)
Parâmetros
(M)
Velocidade (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 mais pequeno) 3,4 (menos 11,4x) 79,5 (1071x mais rápido)

Para mais informações, consulte a secção SAM 2 comparison vs YOLOv8.

📅C riado há 3 meses ✏️ Atualizado há 19 dias

Comentários