Segmento móvel Qualquer coisa (MobileSAM)
O artigo 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 em um Mac i5 CPU leva 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.
MobileSAM é 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 original SAM e mantém o mesmo pipeline, exceto por 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.
A tabela 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 |
Aqui tens a comparação de todo o gasoduto:
Todo o Pipeline (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.
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 o modelo
Podes descarregar o modelo aqui.
Ponto Prompt
Exemplo
Caixa Prompt
Exemplo
Implementámos MobileSAM
e SAM
utilizando a mesma API. Para mais informações sobre a utilização, consulta a SAM página.
Citações e agradecimentos
Se considerares o MobileSAM útil no teu trabalho de investigação ou desenvolvimento, considera a possibilidade de citar o nosso documento:
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. Podes saber mais sobre a implementação do MobileSAM em vários projectos aqui.
Como posso testar MobileSAM utilizando Ultralytics?
Testar MobileSAM em Ultralytics pode ser realizado através de métodos simples. Podes utilizar as instruções Ponto e Caixa para prever segmentos. Aqui tens um exemplo de utilização de 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 podes consultar a secção Testes MobileSAM para obteres 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 possam 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 treinado e o código de treino 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, podes atualmente explorar outros aspectos do MobileSAM no repositórioMobileSAM do GitHub. Este repositório inclui pesos pré-treinados e detalhes de implementação para várias aplicações.
Quais são os principais casos de utilização de MobileSAM?
MobileSAM foi concebido para uma 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 orientadas para a 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, consulta a secção Adaptação de SAM a MobileSAM.
Criado em 2023-11-12, Atualizado em 2024-07-04
Autores: glenn-jocher (13), ChaoningZhang (1), Laughing-q (1)