Ultralytics YOLO27:

Logótipo do modelo leve de segmentação de imagens MobileSAM

Segment Anything para dispositivos móveis (MobileSAM)#

O MobileSAM é um modelo compacto e eficiente de segmentação de imagens, desenvolvido especificamente para dispositivos móveis e de edge. Concebido para levar o poder do modelo Segment Anything da Meta (SAM) a ambientes com capacidade computacional limitada, o MobileSAM fornece segmentação quase instantânea, mantendo a compatibilidade com o pipeline SAM original. Quer estejas a desenvolver aplicações em tempo real ou implementações leves, o MobileSAM fornece resultados de segmentação impressionantes com uma fração dos requisitos de tamanho e velocidade dos seus predecessores.



Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉

O MobileSAM foi adotado em vários projetos, incluindo o Grounding-SAM, o AnyLabeling e o 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.

Modelos disponíveis, tarefas compatíveis e modos de operação#

A tabela abaixo apresenta o modelo MobileSAM disponível, os respetivos 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 modeloPesos pré-treinadosTarefas suportadasTreinoValidaçãoInferênciaExportação
MobileSAMmobile_sam.ptSegmentação de instâncias

Comparação do MobileSAM com o YOLO#

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

ModeloTamanho
(MB)
Parâmetros
(M)
Velocidade (CPU)
(ms/im)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s com backbone YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7,1 (11,0x menor)3,4 (11,4x menos)24,8 (945x mais rápido)
Ultralytics YOLO11n-seg6.2 (12.6x menor)2,9 (13,4x menos)24.3 (964x mais rápido)
Ultralytics YOLO26n-seg6,7 (11,7x menor)2.7 (14.4x menos)25,2 (930x mais rápido)

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

As velocidades do SAM foram medidas com PyTorch e as velocidades do YOLO com ONNX Runtime. Os testes foram executados num Apple M4 Air de 2025 com 16 GB de RAM, utilizando torch==2.10.0, ultralytics==8.4.31 e onnxruntime==1.24.4. 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 (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True, nms=False)  # YOLO26 NMS-free head; no-op for YOLOv8/YOLO11
    model = YOLO(onnx_path)
    model(ASSETS)

Adaptação do SAM para o MobileSAM#

O MobileSAM mantém o mesmo pipeline do SAM original, incluindo o pré-processamento, o pós-processamento e todas as interfaces. Isto significa que podes passar do SAM para o MobileSAM com alterações mínimas ao teu fluxo de trabalho.

A principal diferença está no codificador de imagens: o MobileSAM substitui o codificador ViT-H original (637 milhões de parâmetros) por um codificador Tiny-ViT muito mais pequeno (5 milhões de parâmetros). Numa única GPU, o MobileSAM processa uma imagem em cerca de 12 ms (8 ms para o codificador e 4 ms para o descodificador de máscaras).

Comparação de codificadores de imagens baseados em ViT#

Codificador de imagensSAM originalMobileSAM
Parâmetros637M5M
Velocidade452ms8ms

Descodificador de máscaras guiado por prompts#

Descodificador de máscarasSAM originalMobileSAM
Parâmetros3,876M3,876M
Velocidade4ms4ms

Comparação de todo o pipeline#

Pipeline completo (Enc+Dec)SAM originalMobileSAM
Parâmetros641M9,66M
Velocidade456ms12ms

O desempenho do MobileSAM e do SAM original é ilustrado abaixo utilizando prompts de pontos e de caixas.

Imagem com ponto como prompt

Imagem com caixa como prompt

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

Testar o MobileSAM na Ultralytics#

Tal como o SAM original, a Ultralytics fornece uma interface simples para testar o MobileSAM, com suporte para prompts de pontos e de caixas.

Transferência do modelo#

Transfere os pesos pré-treinados do MobileSAM a partir dos recursos 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 de caixa#

Exemplo
from ultralytics import SAM

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

# Predict a segment based on a single box prompt
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Predict multiple segments based on multiple box prompts
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])

MobileSAM e SAM partilham a mesma API. Para obter mais detalhes de utilização, consulta a documentação do SAM.

Criar automaticamente conjuntos de dados de segmentação utilizando um modelo de deteção#

Para anotar automaticamente o teu conjunto de dados com o framework da Ultralytics, utiliza a função auto_annotate, conforme mostrado abaixo:

Exemplo
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")
ArgumentoTipoPredefiniçãoDescrição
datastrobrigatórioCaminho para o diretório que contém as imagens-alvo para anotação ou segmentação.
det_modelstr'yolo26x.pt'Caminho para o modelo de deteção YOLO usado na deteção inicial de objetos.
sam_modelstr'sam_b.pt'Caminho para o modelo SAM usado na segmentação (suporta pesos de SAM, SAM 2, MobileSAM e SAM 3).
devicestr''Dispositivo de computação (por exemplo, 'cuda:0', 'cpu' ou '' para deteção automática do dispositivo).
conffloat0.25Limiar de confiança da deteção YOLO para filtrar deteções fracas.
ioufloat0.45Limiar de IoU para a supressão não máxima, usado para filtrar caixas sobrepostas.
imgszint640Tamanho de entrada para redimensionar as imagens (tem de ser múltiplo de 32).
max_detint300Número máximo de deteções por imagem para garantir eficiência de memória.
classeslist[int]NoneLista de índices de classes a detetar (por exemplo, [0, 1] para pessoa e bicicleta).
output_dirstrNoneDiretório onde guardar as anotações (por predefinição: diretório irmão de <data>_auto_annotate_labels).

Citações e agradecimentos#

Se o MobileSAM for útil na tua investigação ou desenvolvimento, considera citar o artigo seguinte:

Citação
@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}
}

Lê o artigo completo do MobileSAM no arXiv.

Perguntas frequentes#

  • O MobileSAM é um modelo de segmentação de imagens leve e rápido, otimizado para aplicações móveis e de borda. Ele mantém o mesmo pipeline do SAM original, mas substitui o codificador ViT-H grande (637M parâmetros) por um codificador Tiny-ViT compacto (5M parâmetros). Isso torna o pipeline completo do MobileSAM cerca de 66 vezes menor que o do SAM original (9,66M vs 641M parâmetros) e cerca de 38 vezes mais rápido, operando em aproximadamente 12 ms por imagem em comparação aos 456 ms do SAM. Explore mais sobre a implementação do MobileSAM no repositório GitHub do MobileSAM.

  • Testar o MobileSAM na Ultralytics é simples. Podes utilizar prompts de pontos e de caixas para prever segmentos. Por exemplo, utilizando 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 obter mais detalhes, consulta a secção Testar o MobileSAM na Ultralytics.

  • O MobileSAM é ideal para aplicações móveis e de borda devido ao seu design leve e à sua rápida velocidade de inferência. Em comparação com o SAM original, o MobileSAM tem cerca de 66 vezes menos parâmetros e é executado cerca de 38 vezes mais rápido, tornando-se adequado para segmentação em tempo real em dispositivos com recursos computacionais limitados. A eficiência do MobileSAM permite que dispositivos móveis realizem segmentação de imagens em tempo real sem latência significativa. Além disso, o MobileSAM suporta o modo de inferência otimizado para desempenho móvel.

  • O MobileSAM foi treinado em uma única GPU com um conjunto de dados de 100 mil imagens (1% das imagens originais do SA-1B) em menos de um dia, destilando o codificador de imagens ViT-H do SAM em um codificador Tiny-ViT. Os pesos pré-treinados e os detalhes de implementação estão disponíveis no repositório GitHub do MobileSAM.

  • O MobileSAM foi concebido para uma segmentação de imagens rápida e eficiente em ambientes móveis e de edge. Os principais casos de utilização incluem:

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

    Para obter mais detalhes sobre casos de utilização e desempenho, consulta Adaptação do SAM para o MobileSAM e o blog da Ultralytics sobre aplicações do MobileSAM.

Comentários