Ir para o conteúdo

Logotipo do MobileSAM

Mobile Segment Anything (MobileSAM)

MobileSAM é um modelo de segmentação de imagem compacto e eficiente, construído especificamente para dispositivos móveis e de borda. Projetado para trazer o poder do Segment Anything Model da Meta (SAM) para ambientes com computação limitada, o MobileSAM oferece segmentação quase instantânea, mantendo a compatibilidade com o pipeline SAM original. Quer esteja a desenvolver aplicações em tempo real ou implementações leves, o MobileSAM oferece resultados de segmentação impressionantes com uma fração do tamanho e dos requisitos de velocidade dos seus antecessores.



Assista: Como Executar a Inferência com o MobileSAM usando Ultralytics | Guia Passo a Passo 🎉

O MobileSAM foi adotado em uma variedade de projetos, incluindo Grounding-SAM, AnyLabeling e Segment Anything in 3D.

O MobileSAM foi treinado em uma única GPU usando um conjunto de dados de 100 mil imagens (1% das imagens originais) em menos de um dia. O código de treinamento será lançado no futuro.

Modelos Disponíveis, Tarefas Suportadas e Modos de Operação

A tabela abaixo descreve o modelo MobileSAM disponível, os seus pesos pré-treinados, as tarefas suportadas e a compatibilidade com diferentes modos de operação, como Inferência, Validação, Treino e Exportação. Os modos suportados são indicados por ✅ e os modos não suportados por ❌.

Tipo de Modelo Pesos Pré-treinados Tarefas Suportadas Inferência Validação Treinamento Exportar
MobileSAM mobile_sam.pt Segmentação de Instância

Comparação MobileSAM vs YOLO

A comparação a seguir destaca as diferenças entre as variantes SAM da Meta, MobileSAM e os menores modelos de segmentação da Ultralytics, incluindo YOLO11n-seg:

Modelo Tamanho
(MB)
Parâmetros
(M)
Velocidade (CPU)
(ms/im)
Meta SAM-b 375 93.7 49401
Meta SAM2-b 162 80.8 31901
Meta SAM2-t 78.1 38.9 25997
MobileSAM 40.7 10.1 25381
FastSAM-s com backbone YOLOv8 23.7 11.8 55.9
Ultralytics YOLOv8n-seg 6,7 (11,7x menor) 3,4 (11,4x menos) 24.5 (1061x mais rápido)
Ultralytics YOLO11n-seg 5.9 (13,2x menor) 2.9 (13,4x menos) 30.1 (864x mais rápido)

Esta comparação demonstra as diferenças substanciais no tamanho e na velocidade do modelo entre as variantes SAM e os modelos de segmentação YOLO. Embora os modelos SAM ofereçam capacidades exclusivas de segmentação automática, os modelos YOLO—especialmente YOLOv8n-seg e YOLO11n-seg—são significativamente menores, mais rápidos e computacionalmente mais eficientes.

Os testes foram conduzidos em um Apple M4 Pro 2025 com 24 GB de RAM usando torch==2.6.0 e ultralytics==8.3.90. Para reproduzir estes resultados:

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 YOLO models
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    model(ASSETS)

Adaptando de SAM para MobileSAM

O MobileSAM mantém o mesmo pipeline do SAM original, incluindo pré-processamento, pós-processamento e todas as interfaces. Isso significa que você pode fazer a transição do SAM para o MobileSAM com mudanças mínimas no seu fluxo de trabalho.

A principal diferença é o codificador de imagem: o MobileSAM substitui o codificador ViT-H original (632 milhões de parâmetros) por um codificador Tiny-ViT muito menor (5 milhões de parâmetros). Em uma única GPU, o MobileSAM processa uma imagem em cerca de 12ms (8ms para o codificador, 4ms para o decodificador de máscara).

Comparação do codificador de imagem baseado em ViT

Codificador de Imagem SAM Original MobileSAM
Parâmetros 611M 5M
Velocidade 452ms 8ms

Decodificador de Máscara Guiado por Prompt

Decodificador de Máscara SAM Original MobileSAM
Parâmetros 3.876M 3.876M
Velocidade 4ms 4ms

Comparação do Pipeline Completo

Pipeline Completo (Enc+Dec) SAM Original MobileSAM
Parâmetros 615M 9.66M
Velocidade 456ms 12 ms

O desempenho do MobileSAM e do SAM original é ilustrado abaixo usando prompts de ponto e caixa.

Imagem com Ponto como Prompt

Imagem com Caixa como Prompt

MobileSAM é aproximadamente 5 vezes menor e 7 vezes mais rápido que o FastSAM. Para mais detalhes, visite a página do projeto MobileSAM.

Testando o MobileSAM na Ultralytics

Assim como o SAM original, a Ultralytics fornece uma interface simples para testar o MobileSAM, suportando prompts de Ponto e Caixa.

Download do Modelo

Baixe os pesos pré-treinados do MobileSAM dos ativos da Ultralytics.

Prompt de Ponto

Exemplo

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Prompt da Caixa

Exemplo

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Ambos MobileSAM e SAM compartilham a mesma API. Para obter mais detalhes sobre o uso, consulte o Documentação SAM.

Criar Automaticamente Conjuntos de Dados de Segmentação Usando um Modelo de Detecção

Para anotar automaticamente seu conjunto de dados com a estrutura Ultralytics, use o auto_annotate função conforme mostrado abaixo:

Exemplo

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
Argumento Tipo Padrão Descrição
data str obrigatório Caminho para o diretório contendo as imagens alvo para anotação ou segmentação.
det_model str 'yolo11x.pt' Caminho do modelo de detecção de objetos YOLO para detecção de objetos inicial.
sam_model str 'sam_b.pt' Caminho do modelo SAM para segmentação (suporta variantes SAM, SAM2 e modelos mobile_sam).
device str '' Dispositivo de computação (por exemplo, 'cuda:0', 'cpu' ou '' para detecção automática de dispositivo).
conf float 0.25 Limite de confiança da detecção YOLO para filtrar detecções fracas.
iou float 0.45 Limite de IoU para Supressão Não Máxima para filtrar caixas sobrepostas.
imgsz int 640 Tamanho de entrada para redimensionar imagens (deve ser múltiplo de 32).
max_det int 300 Número máximo de detecções por imagem para eficiência de memória.
classes list[int] None Lista de índices de classe para detectar (por exemplo, [0, 1] para pessoa e bicicleta).
output_dir str None Diretório para salvar as anotações (o padrão é './labels' relativo ao caminho dos dados).

Citações e Agradecimentos

Se o MobileSAM for útil em sua pesquisa ou desenvolvimento, considere citar o seguinte artigo:

@article{mobile_sam,
  title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
  author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung Ho and Lee, Seungkyu and Hong, Choong Seon},
  journal={arXiv preprint arXiv:2306.14289},
  year={2023}
}

Leia o artigo completo do MobileSAM no arXiv.

FAQ

O que é o MobileSAM e como ele difere do modelo SAM original?

MobileSAM é um modelo leve e rápido de segmentação de imagem otimizado para aplicações móveis e de borda. Ele mantém o mesmo pipeline do SAM original, mas substitui o grande codificador ViT-H (632 milhões de parâmetros) por um codificador Tiny-ViT compacto (5 milhões de parâmetros). Isso resulta no MobileSAM sendo cerca de 5 vezes menor e 7 vezes mais rápido que o SAM original, operando a aproximadamente 12ms por imagem versus os 456ms do SAM. Explore mais sobre a implementação do MobileSAM no repositório MobileSAM GitHub.

Como posso testar o MobileSAM usando Ultralytics?

Testar o MobileSAM na Ultralytics é simples. Você pode usar prompts de Ponto e Caixa para prever segmentos. Por exemplo, usando um prompt de Ponto:

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

Para mais detalhes, consulte a seção Testando MobileSAM na Ultralytics.

Por que devo usar o MobileSAM para minha aplicação móvel?

O MobileSAM é ideal para aplicações móveis e de borda devido ao seu design leve e velocidade de inferência rápida. Comparado com o SAM original, o MobileSAM é cerca de 5 vezes menor e 7 vezes mais rápido, tornando-o adequado para segmentação em tempo real em dispositivos com recursos computacionais limitados. Sua eficiência permite que dispositivos móveis realizem segmentação de imagem em tempo real sem latência significativa. Além disso, o MobileSAM suporta modo de Inferência otimizado para desempenho móvel.

Como o MobileSAM foi Treinado e o Código de Treinamento Está Disponível?

O MobileSAM foi treinado em uma única GPU com um conjunto de dados de 100 mil imagens (1% das imagens originais) em menos de um dia. Embora o código de treinamento seja lançado no futuro, você pode acessar atualmente os pesos pré-treinados e os detalhes de implementação no repositório MobileSAM GitHub.

Quais são os principais casos de uso do MobileSAM?

O MobileSAM foi projetado para segmentação de imagem rápida e eficiente em ambientes móveis e de borda. Os principais casos de uso incluem:

  • Detecção e segmentação de objetos em tempo real para aplicações móveis
  • Processamento de imagem de baixa latência em dispositivos com capacidade computacional limitada
  • Integração em aplicativos móveis com tecnologia de IA para realidade aumentada (AR), análise e muito mais

Para mais detalhes sobre casos de uso e desempenho, consulte Adaptação de SAM para MobileSAM e o blog da Ultralytics sobre aplicações MobileSAM.



📅 Criado há 1 ano ✏️ Atualizado há 3 meses

Comentários