Saltar para o conteúdo

MobileSAM Logótipo

Segmento móvel Qualquer coisa (MobileSAM)

MobileSAM é um modelo de segmentação de imagem compacto e eficiente, concebido especificamente para dispositivos móveis e periféricos. Concebido para trazer o poder do modelo Segment Anything Model (SAM) para ambientes com computação limitada, 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, MobileSAM fornece resultados de segmentação impressionantes com uma fração dos requisitos de tamanho e velocidade dos seus antecessores.



Ver: Como efetuar inferências com MobileSAM utilizando Ultralytics | Guia passo-a-passo 🎉

MobileSAM foi adotado numa variedade de projectos, incluindo o SAM, AnyLabeling e Segment Anything in 3D.

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

Modelos disponíveis, tarefas suportadas e modos de funcionamento

A tabela abaixo descreve o modelo MobileSAM disponível, seus pesos pré-treinados, tarefas suportadas e compatibilidade com diferentes modos de operação, como Inferência, Validação, Treinamento 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 Formação Exportação
MobileSAM mobile_sam.pt Segmentação de instâncias

Comparação entre MobileSAM e YOLO

A comparação seguinte realça as diferenças entre as variantes SAM do Meta, MobileSAM, e os modelos de segmentação mais pequenos da Ultralytics, incluindo o 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 combackbone YOLOv8 23.7 11.8 55.9
Ultralytics YOLOv8n 6,7 (11,7x mais pequeno) 3,4 (menos 11,4x) 24,5 (1061x mais rápido)
Ultralytics YOLO11n-seg 5,9 (13,2x mais pequeno) 2,9 (13,4x menos) 30.1 (864x mais rápido)

Esta comparação demonstra as diferenças substanciais em termos de tamanho e velocidade do modelo 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 o YOLOv8n e o YOLO11n-seg - são significativamente mais pequenos, mais rápidos e mais eficientes do ponto de vista computacional.

Os testes foram efectuados num Apple M4 Pro de 2025 com 24 GB de RAM, utilizando 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)

Adaptação de SAM para MobileSAM

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

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

Comparação de codificadores de imagem baseados em ViT

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

Descodificador de máscaras orientado por prompts

Descodificador de máscaras Original SAM MobileSAM
Parâmetros 3.876M 3.876M
Velocidade 4ms 4ms

Comparação de todo o pipeline

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

O desempenho do MobileSAM e do SAM original é ilustrado a seguir, utilizando os avisos de ponto e de caixa.

Imagem com ponto como estímulo

Imagem com caixa como prompt

MobileSAM é aproximadamente 5 vezes mais pequena e 7 vezes mais rápida do que a FastSAM. Para mais informações, visite a página do projetoMobileSAM .

Teste MobileSAM em Ultralytics

Tal como o original SAMoriginal, Ultralytics fornece uma interface simples para testar MobileSAM, suportando tanto os prompts Point como Box.

Descarregar modelo

Descarregue os pesos pré-treinados do MobileSAM a partir dos activosUltralytics .

Ponto Prompt

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]])

Caixa Prompt

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 partilham a mesma API. Para mais pormenores de utilização, consulte a Documentação SAM.

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

Para anotar automaticamente o seu conjunto de dados com a estrutura Ultralytics , utilize a função auto_annotate como 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 Predefinição Descrição
data str necessário Caminho para o diretório que contém imagens alvo para anotação ou segmentação.
det_model str 'yolo11x.pt' YOLO caminho do modelo de deteção para a deteção inicial de objectos.
sam_model str 'sam_b.pt' Caminho do modelo SAM para segmentação (suporta modelos SAM, variantes SAM2 e mobile_sam).
device str '' Dispositivo de cálculo (por exemplo, 'cuda:0', 'cpu', ou '' para a deteção automática do dispositivo).
conf float 0.25 YOLO limiar de confiança da deteção para filtrar as detecções fracas.
iou float 0.45 Limiar 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 a detetar (por exemplo,, [0, 1] para pessoa e bicicleta).
output_dir str None Guardar o diretório para as anotações (a predefinição é './labels' em relação ao caminho dos dados).

Citações e agradecimentos

Se MobileSAM for útil para a sua investigação ou desenvolvimento, considere a possibilidade de citar o seguinte documento:

@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 MobileSAM no arXiv.

FAQ

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

MobileSAM é um modelo de segmentação de imagem leve e rápido, optimizado para aplicações móveis e de ponta. Mantém o mesmo pipeline que o SAM original, mas substitui o grande codificador ViT-H (632M parâmetros) por um codificador Tiny-ViT compacto (5M parâmetros). Isto faz com que MobileSAM seja cerca de 5 vezes mais pequeno e 7 vezes mais rápido do que o SAM original, funcionando a cerca de 12 ms por imagem, em comparação com os 456 ms do SAM. Explore mais sobre a implementação do MobileSAM no repositórioMobileSAM GitHub.

Como posso testar o MobileSAM usando o Ultralytics?

Testar o MobileSAM no Ultralytics é simples. Pode utilizar prompts Point e Box para prever segmentos. Por exemplo, usando um prompt Point:

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 informações, consulte a secção Testar o MobileSAM no Ultralytics.

Porque devo utilizar MobileSAM para a minha aplicação móvel?

MobileSAM é ideal para aplicações móveis e de ponta devido ao seu design leve e à sua rápida velocidade de inferência. Em comparação com o SAM original, MobileSAM é cerca de 5 vezes mais pequeno e 7 vezes mais rápido, o que o torna adequado para a segmentação em tempo real em dispositivos com recursos computacionais limitados. A sua eficiência permite que os dispositivos móveis efectuem a segmentação de imagens em tempo real sem latência significativa. Além disso, MobileSAM suporta o modo de inferência optimizado para desempenho móvel.

Como é que o MobileSAM foi formado e o código de formação está disponível?

MobileSAM foi treinado numa ú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 treino venha a ser lançado no futuro, pode atualmente aceder a pesos pré-treinados e a detalhes de implementação a partir do repositórioMobileSAM GitHub.

Quais são os principais casos de utilização do MobileSAM?

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

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

Para mais informações sobre casos de utilização e desempenho, consulte Adaptação do SAM ao MobileSAM e o blogueUltralytics sobre aplicações MobileSAM .



📅C riado há 1 ano ✏️ Atualizado há 25 dias

Comentários