Link to this sectionFast Segment Anything Model (FastSAM)#
O Fast Segment Anything Model (FastSAM) é uma solução inovadora, baseada em CNN e em tempo real para a tarefa de Segment Anything. Esta tarefa foi concebida para segmentar qualquer objeto dentro de uma imagem com base em vários prompts de interação do utilizador possíveis. O FastSAM reduz significativamente as exigências computacionais enquanto mantém um desempenho competitivo, tornando-o uma escolha prática para uma variedade de tarefas de visão.
Watch: Object Tracking using FastSAM with Ultralytics
Link to this sectionArquitetura do Modelo#

Link to this sectionVisão geral#
O FastSAM foi projetado para abordar as limitações do Segment Anything Model (SAM), um modelo Transformer pesado com requisitos de recursos computacionais substanciais. O FastSAM desacopla a tarefa de segmentar tudo em duas etapas sequenciais: segmentação de instâncias completa e seleção guiada por prompt. A primeira etapa usa 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 ao prompt.
Link to this sectionPrincipais recursos#
-
Solução em tempo real: Ao aproveitar a eficiência computacional das CNNs, o FastSAM fornece uma solução em tempo real para a tarefa de segmentar tudo, tornando-o valioso para aplicações industriais que exigem resultados rápidos.
-
Eficiência e Desempenho: O FastSAM oferece uma redução significativa nas exigências de computação e recursos sem comprometer a qualidade do desempenho. Ele atinge um desempenho comparável ao SAM, mas com recursos computacionais drasticamente reduzidos, permitindo aplicações em tempo real.
-
Segmentação guiada por prompt: O FastSAM pode segmentar qualquer objeto dentro de uma imagem guiado por vários prompts de interação do utilizador possíveis, proporcionando flexibilidade e adaptabilidade em diferentes cenários.
-
Baseado no YOLOv8-seg: O FastSAM é baseado no YOLOv8-seg, um detetor 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 Benchmarks: Na tarefa de proposta de objeto no MS COCO, o FastSAM alcança pontuações altas a 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 solução nova e prática para um grande número de tarefas de visão a uma velocidade realmente alta, dezenas ou centenas de vezes mais rápida que os métodos atuais.
-
Viabilidade de Compressão de 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 grandes modelos para tarefas de visão geral.
Link to this sectionModelos Disponíveis, Tarefas Suportadas e Modos de Operação#
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 operação como Inferência, Validação, Treino e Exportação, indicados pelos emojis ✅ para modos suportados e ❌ para modos não suportados.
| Tipo de Modelo | Pesos Pré-treinados | Tarefas Suportadas | Inferência | Validação | Treinamento | Exportar |
|---|---|---|---|---|---|---|
| FastSAM-s | FastSAM-s.pt | Segmentação de instâncias | ✅ | ❌ | ❌ | ✅ |
| FastSAM-x | FastSAM-x.pt | Segmentação de instâncias | ✅ | ❌ | ❌ | ✅ |
Link to this sectionComparação do FastSAM vs YOLO#
Aqui comparamos os modelos SAM 2 da Meta, incluindo a variante menor SAM2-t, com os modelos de segmentação Ultralytics, incluindo o YOLO26n-seg:
| Modelo | Tamanho (MB) | Parâmetros (M) | Velocidade (CPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s com backbone YOLOv8 | 23.9 | 11.8 | 58.0 |
| YOLOv8n-seg da Ultralytics | 7.1 (11.0x menor) | 3.4 (11.4x menos) | 24.8 (945x mais rápido) |
| YOLO11n-seg da Ultralytics | 6.2 (12.6x menor) | 2.9 (13.4x menos) | 24.3 (964x mais rápido) |
| YOLO26n-seg da Ultralytics | 6.7 (11.7x menor) | 2.7 (14.4x menos) | 25.2 (930x mais rápido) |
Esta comparação demonstra as diferenças substanciais nos tamanhos e velocidades dos modelos entre as variantes do SAM e os modelos de segmentação YOLO. Enquanto o SAM fornece capacidades de segmentação automática únicas, os modelos YOLO, particularmente YOLOv8n-seg, YOLO11n-seg e YOLO26n-seg, são significativamente menores, mais rápidos e computacionalmente mais eficientes.
Velocidades do SAM medidas com PyTorch, velocidades YOLO medidas com ONNX Runtime. Testes realizados num Apple M4 Air de 2025 com 16GB de RAM usando torch==2.10.0, ultralytics==8.4.31 e onnxruntime==1.24.4. Para reproduzir este teste:
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)
model = YOLO(onnx_path)
model(ASSETS)Link to this sectionExemplos de Uso#
Os modelos FastSAM são fáceis de integrar nas tuas aplicações Python. A Ultralytics fornece uma API Python e comandos CLI fáceis de usar para simplificar o desenvolvimento.
Link to this sectionUso de Predição#
Para realizar detecção de objetos em uma imagem, usa o método predict como mostrado abaixo:
from ultralytics import FastSAM
# Define an inference source
source = "path/to/bus.jpg"
# Create a FastSAM model
model = FastSAM("FastSAM-s.pt") # or FastSAM-x.pt
# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)
# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])
# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])
# Run inference with texts prompt
results = model(source, texts="a photo of a dog")
# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")Este trecho demonstra a simplicidade de carregar um modelo pré-treinado e executar uma predição em uma imagem.
Desta forma podes executar a inferência na imagem e obter todos os results da segmentação de uma só vez e executar a inferência de prompts várias vezes sem executar a inferência múltiplas vezes.
from ultralytics.models.fastsam import FastSAMPredictor
# Create FastSAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", model="FastSAM-s.pt", save=False, imgsz=1024)
predictor = FastSAMPredictor(overrides=overrides)
# Segment everything
everything_results = predictor("ultralytics/assets/bus.jpg")
# Prompt inference
bbox_results = predictor.prompt(everything_results, bboxes=[[200, 200, 300, 300]])
point_results = predictor.prompt(everything_results, points=[200, 200])
text_results = predictor.prompt(everything_results, texts="a photo of a dog")Todos os results retornados nos exemplos acima são objetos Results que permitem aceder facilmente às máscaras preditas e à imagem de origem.
Link to this sectionUso de Validação#
A validação do modelo em um conjunto de dados pode ser feita da seguinte forma:
from ultralytics import FastSAM
# Create a FastSAM model
model = FastSAM("FastSAM-s.pt") # or FastSAM-x.pt
# Validate the model
results = model.val(data="coco8-seg.yaml")Por favor, nota que o FastSAM só suporta 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, precisas de converter todos os IDs de categoria de objeto para 0.
Link to this sectionUso de Rastreamento#
Para realizar o rastreamento de objetos em uma imagem, usa o método track como mostrado abaixo:
from ultralytics import FastSAM
# Create a FastSAM model
model = FastSAM("FastSAM-s.pt") # or FastSAM-x.pt
# Track with a FastSAM model on a video
results = model.track(source="path/to/video.mp4", imgsz=640)Link to this sectionUso oficial do FastSAM#
O FastSAM também está disponível diretamente no repositório https://github.com/CASIA-IVA-Lab/FastSAM. Aqui tens uma breve visão geral dos passos típicos que podes seguir para usar o FastSAM:
Link to this sectionInstalação#
-
Clona o repositório FastSAM:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git -
Cria e ativa um ambiente Conda com Python 3.9:
conda create -n FastSAM python=3.9 conda activate FastSAM -
Navega até o repositório clonado e instala os pacotes necessários:
cd FastSAM pip install -r requirements.txt -
Instala o modelo CLIP:
pip install git+https://github.com/ultralytics/CLIP.git
Link to this sectionExemplo de Uso#
-
Descarrega um checkpoint de modelo.
-
Usa o FastSAM para inferência. Comandos de exemplo:
-
Segmenta tudo em uma imagem:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg -
Segmenta objetos específicos usando prompt de texto:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog" -
Segmenta objetos dentro de uma caixa delimitadora (fornece as 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]" -
Segmenta objetos perto de 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, podes experimentar o FastSAM através da demo no Colab do CASIA-IVA-Lab.
Link to this sectionCitações e Agradecimentos#
Gostaríamos de agradecer aos autores do FastSAM pelas suas contribuições significativas no campo da segmentação de instâncias em tempo real:
@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 o seu trabalho publicamente, e a base de código pode ser acedida no GitHub. Apreciamos os seus esforços em avançar o campo e tornar o seu trabalho acessível à comunidade mais ampla.
Link to this sectionFAQ#
Link to this sectionO que é o FastSAM e como difere do SAM?#
FastSAM, abreviação de Fast Segment Anything Model, é uma solução em tempo real baseada em rede neural convolucional (CNN) projetada para reduzir as exigências computacionais enquanto mantém um alto desempenho em tarefas de segmentação de objetos. Ao contrário do Segment Anything Model (SAM), que usa uma arquitetura baseada em Transformer mais pesada, o FastSAM aproveita o Ultralytics YOLOv8-seg para uma segmentação de instâncias eficiente em duas etapas: segmentação de todas as instâncias seguida por seleção guiada por prompt.
Link to this sectionComo o FastSAM atinge o desempenho de segmentação em tempo real?#
O FastSAM atinge a segmentação em tempo real ao desacoplar a tarefa de segmentação em segmentação de todas as instâncias com o YOLOv8-seg e etapas de seleção guiadas por prompt. Ao utilizar a eficiência computacional das CNNs, o FastSAM oferece reduções significativas nas exigências de computação e recursos enquanto mantém um desempenho competitivo. Essa abordagem de duas etapas permite que o FastSAM entregue uma segmentação rápida e eficiente, adequada para aplicações que exigem resultados rápidos.
Link to this sectionQuais são as aplicações práticas do FastSAM?#
O FastSAM é prático para uma variedade de tarefas de visão computacional que exigem desempenho de segmentação em tempo real. As aplicações incluem:
- Automação industrial para controle e garantia de qualidade
- Análise de vídeo em tempo real para segurança e vigilância
- Veículos autónomos para deteção e segmentação de objetos
- Imagens médicas para tarefas de segmentação precisas e rápidas
A sua capacidade de lidar com vários prompts de interação do utilizador torna o FastSAM adaptável e flexível para diversos cenários.
Link to this sectionComo posso usar o modelo FastSAM para inferência em Python?#
Para usar o FastSAM para inferência em Python, podes seguir o exemplo abaixo:
from ultralytics import FastSAM
# Define an inference source
source = "path/to/bus.jpg"
# Create a FastSAM model
model = FastSAM("FastSAM-s.pt") # or FastSAM-x.pt
# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)
# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])
# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])
# Run inference with texts prompt
results = model(source, texts="a photo of a dog")
# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")Para mais detalhes sobre os métodos de inferência, verifica a secção Uso de Predição da documentação.
Link to this sectionQuais tipos de prompts o FastSAM suporta para tarefas de segmentação?#
O FastSAM suporta vários tipos de prompts para guiar as tarefas de segmentação:
- Prompt de Tudo (Everything): Gera segmentação para todos os objetos visíveis.
- Prompt de Caixa Delimitadora (BBox): Segmenta objetos dentro de uma caixa delimitadora especificada.
- Prompt de Texto: Usa um texto descritivo para segmentar objetos que correspondem à descrição.
- Prompt de Ponto: Segmenta objetos próximos de pontos específicos definidos pelo utilizador.
Esta flexibilidade permite que o FastSAM se adapte a uma vasta gama de cenários de interação do utilizador, aumentando a sua utilidade em diferentes aplicações. Para mais informações sobre como usar estes prompts, consulta a secção Principais Características.