10 KiB
comments | description | keywords |
---|---|---|
true | Explore o FastSAM, uma solução baseada em CNN para segmentação em tempo real de objetos em imagens. Melhor interação do usuário, eficiência computacional e adaptabilidade em tarefas de visão. | FastSAM, aprendizado de máquina, solução baseada em CNN, segmentação de objetos, solução em tempo real, Ultralytics, tarefas de visão, processamento de imagens, aplicações industriais, interação do usuário |
Fast Segment Anything Model (FastSAM)
O Fast Segment Anything Model (FastSAM) é uma solução inovadora baseada em CNN em tempo real para a tarefa de Segmentar Qualquer Coisa. Essa tarefa foi projetada para segmentar qualquer objeto dentro de uma imagem com base em várias possíveis instruções de interação do usuário. O FastSAM reduz significativamente as demandas computacionais, mantendo um desempenho competitivo, tornando-o uma escolha prática para uma variedade de tarefas de visão.
Visão Geral
O FastSAM é projetado para abordar as limitações do Segment Anything Model (SAM), um modelo Transformer pesado com requisitos substanciais de recursos computacionais. O FastSAM divide a tarefa de segmentar qualquer coisa em duas etapas sequenciais: segmentação de todas as instâncias e seleção guiada por instruções. A primeira etapa usa o YOLOv8-seg para produzir as máscaras de segmentação de todas as instâncias na imagem. Na segunda etapa, ele gera a região de interesse correspondente à instrução.
Recursos Principais
-
Solução em Tempo Real: Aproveitando a eficiência computacional das CNNs, o FastSAM fornece uma solução em tempo real para a tarefa de segmentar qualquer coisa, tornando-o valioso para aplicações industriais que exigem resultados rápidos.
-
Eficiência e Desempenho: O FastSAM oferece uma redução significativa nas demandas computacionais e de recursos sem comprometer a qualidade do desempenho. Ele alcança um desempenho comparável ao SAM, mas com recursos computacionais drasticamente reduzidos, permitindo aplicações em tempo real.
-
Segmentação Guiada por Instruções: O FastSAM pode segmentar qualquer objeto dentro de uma imagem com base em várias possíveis instruções de interação do usuário, proporcionando flexibilidade e adaptabilidade em diferentes cenários.
-
Baseado em YOLOv8-seg: O FastSAM é baseado no YOLOv8-seg, um detector de objetos equipado com um ramo de segmentação de instâncias. Isso permite que ele produza efetivamente as máscaras de segmentação de todas as instâncias em uma imagem.
-
Resultados Competitivos em Bancos de Dados de Referência: Na tarefa de proposta de objetos no MS COCO, o FastSAM alcança pontuações altas em uma velocidade significativamente mais rápida do que o SAM em uma única NVIDIA RTX 3090, demonstrando sua eficiência e capacidade.
-
Aplicações Práticas: A abordagem proposta fornece uma nova solução prática para um grande número de tarefas de visão em alta velocidade, dezenas ou centenas de vezes mais rápido do que os métodos atuais.
-
Viabilidade de Compressão do Modelo: O FastSAM demonstra a viabilidade de um caminho que pode reduzir significativamente o esforço computacional, introduzindo uma prioridade artificial à estrutura, abrindo assim novas possibilidades para arquiteturas de modelos grandes para tarefas gerais de visão.
Modelos Disponíveis, Tarefas Suportadas e Modos de Operação
Esta tabela apresenta os modelos disponíveis com seus pesos pré-treinados específicos, as tarefas que eles suportam e sua compatibilidade com diferentes modos de operação, como Inferência, Validação, Treinamento 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 | Treinamento | Exportação |
---|---|---|---|---|---|---|
FastSAM-s | FastSAM-s.pt |
Segmentação de Instâncias | ✅ | ❌ | ❌ | ✅ |
FastSAM-x | FastSAM-x.pt |
Segmentação de Instâncias | ✅ | ❌ | ❌ | ✅ |
Exemplos de Uso
Os modelos FastSAM são fáceis de integrar em suas aplicações Python. A Ultralytics fornece uma API Python amigável ao usuário e comandos de linha de comando (CLI) para facilitar o desenvolvimento.
Uso de Predição
Para realizar detecção de objetos em uma imagem, use o método predict
conforme mostrado abaixo:
!!! Example "Exemplo"
=== "Python"
```python
from ultralytics import FastSAM
from ultralytics.models.fastsam import FastSAMPrompt
# Definir uma fonte de inferência
source = 'caminho/para/onibus.jpg'
# Criar um modelo FastSAM
model = FastSAM('FastSAM-s.pt') # ou FastSAM-x.pt
# Executar inferência em uma imagem
everything_results = model(source, device='cpu', retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)
# Preparar um objeto de Processo de Instruções
prompt_process = FastSAMPrompt(source, everything_results, device='cpu')
# Instrução: tudo
ann = prompt_process.everything_prompt()
# Forma padrão (bbox) [0,0,0,0] -> [x1,y1,x2,y2]
ann = prompt_process.box_prompt(bbox=[200, 200, 300, 300])
# Instrução: texto
ann = prompt_process.text_prompt(text='uma foto de um cachorro')
# Instrução: ponto
# pontos padrão [[0,0]] [[x1,y1],[x2,y2]]
# ponto_label padrão [0] [1,0] 0:fundo, 1:frente
ann = prompt_process.point_prompt(points=[[200, 200]], pointlabel=[1])
prompt_process.plot(annotations=ann, output='./')
```
=== "CLI"
```bash
# Carregar um modelo FastSAM e segmentar tudo com ele
yolo segment predict model=FastSAM-s.pt source=caminho/para/onibus.jpg imgsz=640
```
Este trecho de código demonstra a simplicidade de carregar um modelo pré-treinado e executar uma predição em uma imagem.
Uso de Validação
A validação do modelo em um conjunto de dados pode ser feita da seguinte forma:
!!! Example "Exemplo"
=== "Python"
```python
from ultralytics import FastSAM
# Criar um modelo FastSAM
model = FastSAM('FastSAM-s.pt') # ou FastSAM-x.pt
# Validar o modelo
results = model.val(data='coco8-seg.yaml')
```
=== "CLI"
```bash
# Carregar um modelo FastSAM e validá-lo no conjunto de dados de exemplo COCO8 com tamanho de imagem 640
yolo segment val model=FastSAM-s.pt data=coco8.yaml imgsz=640
```
Observe que o FastSAM suporta apenas detecção e segmentação de uma única classe de objeto. Isso significa que ele reconhecerá e segmentará todos os objetos como a mesma classe. Portanto, ao preparar o conjunto de dados, você precisará converter todos os IDs de categoria de objeto para 0.
Uso Oficial do FastSAM
O FastSAM também está disponível diretamente no repositório https://github.com/CASIA-IVA-Lab/FastSAM. Aqui está uma visão geral breve das etapas típicas que você pode seguir para usar o FastSAM:
Instalação
-
Clone o repositório do FastSAM:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
-
Crie e ative um ambiente Conda com Python 3.9:
conda create -n FastSAM python=3.9 conda activate FastSAM
-
Navegue até o repositório clonado e instale os pacotes necessários:
cd FastSAM pip install -r requirements.txt
-
Instale o modelo CLIP:
pip install git+https://github.com/openai/CLIP.git
Exemplo de Uso
-
Baixe um checkpoint do modelo.
-
Use o FastSAM para inferência. Exemplos de comandos:
-
Segmentar tudo em uma imagem:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
-
Segmentar objetos específicos usando uma instrução de texto:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "o cachorro amarelo"
-
Segmentar objetos dentro de uma caixa delimitadora (fornecer coordenadas da caixa no formato xywh):
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]"
-
Segmentar objetos próximos a pontos específicos:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --point_prompt "[[520,360],[620,300]]" --point_label "[1,0]"
-
Além disso, você pode experimentar o FastSAM através de um demo no Colab ou no demo web do HuggingFace para ter uma experiência visual.
Citações e Reconhecimentos
Gostaríamos de reconhecer os autores do FastSAM por suas contribuições significativas no campo da segmentação de instâncias em tempo real:
!!! Quote ""
=== "BibTeX"
```bibtex
@misc{zhao2023fast,
title={Fast Segment Anything},
author={Xu Zhao and Wenchao Ding and Yongqi An and Yinglong Du and Tao Yu and Min Li and Ming Tang and Jinqiao Wang},
year={2023},
eprint={2306.12156},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
```
O artigo original do FastSAM pode ser encontrado no arXiv. Os autores disponibilizaram seu trabalho publicamente, e o código pode ser acessado no GitHub. Agradecemos seus esforços em avançar o campo e tornar seu trabalho acessível à comunidade em geral.