Saltar para o conteúdo

MobileSAM Logótipo

Segmento móvel Qualquer coisa (MobileSAM)

O documento MobileSAM está agora disponível no arXiv.

Uma demonstração de MobileSAM em execução num CPU pode ser acedida nesta ligação de demonstração. O desempenho num Mac i5 CPU demora aproximadamente 3 segundos. Na demonstração Hugging Face , a interface e as CPUs de desempenho inferior contribuem para uma resposta mais lenta, mas continua a funcionar eficazmente.



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

MobileSAM está implementado em vários projectos, incluindo Grounding-SAM, AnyLabeling e Segment Anything in 3D.

MobileSAM é treinado num único GPU com um conjunto de dados de 100k (1% das imagens originais) em menos de um dia. O código para este treino será disponibilizado no futuro.

Modelos disponíveis, tarefas suportadas e modos de funcionamento

Esta tabela apresenta os modelos disponíveis com os seus pesos pré-treinados específicos, as tarefas que suportam e a sua compatibilidade com diferentes modos de funcionamento como Inferência, Validação, Treino e Exportação, indicados por emojis ✅ para modos suportados e emojis ❌ para modos não suportados.

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

Adaptação de SAM para MobileSAM

Uma vez que o MobileSAM mantém o mesmo pipeline que o SAM original, incorporámos o pré-processamento, o pós-processamento e todas as outras interfaces do original. Consequentemente, quem utiliza atualmente o SAM original pode fazer a transição para MobileSAM com um esforço mínimo.

MobileSAM tem um desempenho comparável ao do SAM original e mantém o mesmo pipeline, com exceção de uma alteração no codificador de imagem. Especificamente, substituímos o codificador ViT-H pesado original (632M) por um Tiny-ViT mais pequeno (5M). Num único GPU, MobileSAM funciona a cerca de 12ms por imagem: 8ms no codificador de imagem e 4ms no descodificador de máscara.

O quadro seguinte apresenta uma comparação dos codificadores de imagem baseados em ViT:

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

Tanto o SAM original como o MobileSAM utilizam o mesmo descodificador de máscaras guiado por pedidos:

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

Eis a comparação de toda a conduta:

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

O desempenho do MobileSAM e do SAM original é demonstrado utilizando um ponto e uma caixa como prompts.

Imagem com ponto como estímulo

Imagem com caixa como prompt

Com o seu desempenho superior, o MobileSAM é aproximadamente 5 vezes mais pequeno e 7 vezes mais rápido do que o atual FastSAM. Mais detalhes estão disponíveis na página do projetoMobileSAM .

Teste MobileSAM em Ultralytics

Tal como o original SAM, oferecemos um método de teste simples em Ultralytics, incluindo modos para os avisos Ponto e Caixa.

Descarregar modelo

Pode descarregar o modelo aqui.

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

Implementámos MobileSAM e SAM utilizando a mesma API. Para mais informações sobre a utilização, consulte a secção SAM página.

Citações e agradecimentos

Se o site MobileSAM for útil no seu trabalho de investigação ou desenvolvimento, considere a possibilidade de citar o nosso 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}
}

FAQ

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

MobileSAM é um modelo de segmentação de imagem leve e rápido, concebido para aplicações móveis. Mantém o mesmo pipeline que o SAM original, mas substitui o pesado codificador ViT-H (632M parâmetros) por um codificador Tiny-ViT mais pequeno (5M parâmetros). Esta alteração faz com que o MobileSAM seja aproximadamente 5 vezes mais pequeno e 7 vezes mais rápido do que o SAM original. Por exemplo, o MobileSAM funciona a cerca de 12ms por imagem, em comparação com os 456ms do SAM original. Pode saber mais sobre a implementação do MobileSAM em vários projectos aqui.

Como posso testar MobileSAM utilizando Ultralytics?

O teste MobileSAM em Ultralytics pode ser efectuado através de métodos simples. Pode utilizar as instruções Ponto e Caixa para prever segmentos. Aqui está um 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])

Também pode consultar a secção Testes MobileSAM para obter mais informações.

Por que razão devo utilizar MobileSAM para a minha aplicação móvel?

MobileSAM é ideal para aplicações móveis devido à sua arquitetura leve e à sua rápida velocidade de inferência. Em comparação com o SAM original, o MobileSAM é aproximadamente 5 vezes mais pequeno e 7 vezes mais rápido, o que o torna adequado para ambientes em que os recursos computacionais são limitados. Esta eficiência garante que os dispositivos móveis podem efetuar a segmentação de imagens em tempo real sem latência significativa. Além disso, os modelos do MobileSAM, como o Inference, são optimizados para desempenho móvel.

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

MobileSAM foi treinado num único GPU com um conjunto de dados de 100k, que é 1% das imagens originais, em menos de um dia. Embora o código de treino venha a ser disponibilizado no futuro, pode atualmente explorar outros aspectos do MobileSAM no repositórioMobileSAM do GitHub. Este repositório inclui pesos pré-treinados e pormenores de implementação para várias aplicações.

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

MobileSAM foi concebido para a segmentação rápida e eficiente de imagens em ambientes móveis. 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 recursos computacionais limitados.
  • Integração em aplicações móveis baseadas em IA para tarefas como a realidade aumentada (RA) e a análise em tempo real.

Para casos de utilização mais detalhados e comparações de desempenho, consulte a secção Adaptação de SAM a MobileSAM.

📅C riado há 1 ano ✏️ Atualizado há 2 meses

Comentários