YOLO Vision 2026:

Fast 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

Arquitetura do Modelo#

Visão geral da arquitetura do Fast Segment Anything Model (FastSAM)

Visão geral#

O FastSAM foi concebido para resolver as limitações do Segment Anything Model (SAM), um modelo Transformer pesado com requisitos substanciais de recursos computacionais. O FastSAM divide a tarefa de segmentação em duas etapas sequenciais: segmentação de instâncias geral e seleção guiada por comandos (prompt). A primeira etapa utiliza 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 ao comando.

Principais recursos#

  1. 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.

  2. 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.

  3. 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.

  4. Baseado no YOLOv8-seg: O FastSAM baseia-se no YOLOv8-seg, um detector de objetos equipado com uma ramificação de segmentação de instâncias. Isto permite-lhe produzir eficazmente as máscaras de segmentação de todas as instâncias numa imagem.

  5. Resultados competitivos em benchmarks: Na tarefa de proposta de objetos no MS COCO, o FastSAM alcança pontuações elevadas a uma velocidade significativamente superior à do SAM numa única NVIDIA RTX 3090, demonstrando a sua eficiência e capacidade.

  6. 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.

  7. 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.

Modelos Disponíveis, Tarefas Suportadas e Modos de Operação#

Esta tabela apresenta os modelos disponíveis com os seus respectivos pesos pré-treinados, as tarefas que suportam e a sua compatibilidade com diferentes modos de funcionamento, como Inference, Validation, Training e Export, indicados por emojis ✅ para os modos suportados e emojis ❌ para os modos não suportados.

Tipo de ModeloPesos Pré-treinadosTarefas SuportadasTreinamentoValidaçãoInferênciaExportar
FastSAM-sFastSAM-s.ptSegmentação de Instância
FastSAM-xFastSAM-x.ptSegmentação de Instância

Comparação do FastSAM vs YOLO#

Aqui comparamos os modelos SAM 2 da Meta, incluindo a variante mais pequena SAM2-t, com os modelos de segmentação da Ultralytics, incluindo o YOLO26n-seg:

ModeloTamanho
(MB)
Parâmetros
(M)
Velocidade (CPU)
(ms/im)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s com backbone YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7.1 (11.0x menor)3.4 (11.4x menos)24.8 (945x mais rápido)
Ultralytics YOLO11n-seg6.2 (12.6x menor)2.9 (13.4x menos)24.3 (964x mais rápido)
Ultralytics YOLO26n-seg6.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 do YOLO medidas com ONNX Runtime. Testes executados num Apple M4 Air de 2025 com 16 GB de RAM utilizando torch==2.10.0, ultralytics==8.4.31 e onnxruntime==1.24.4. Para reproduzir este teste:

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

Exemplos 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.

Uso de Predição#

Para realizar object detection numa imagem, utiliza o método predict conforme mostrado abaixo:

Exemplo
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.

Exemplo do FastSAMPredictor

Desta forma, podes executar a inferência na imagem e obter todos os results de segmentação de uma só vez, e executar a inferência com comandos (prompts) várias vezes sem ter de correr a inferência repetidamente.

from ultralytics.models.fastsam import FastSAMPredictor

# Create FastSAMPredictor
overrides = {"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")
Nota

Todos os results devolvidos nos exemplos acima são objetos Results que permitem aceder facilmente às máscaras previstas e à imagem de origem.

Uso de Validação#

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.

A validação do modelo em um conjunto de dados pode ser feita da seguinte forma:

Exemplo
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")

Uso de Rastreamento#

Para realizar o rastreio de objetos numa imagem, utiliza o método track conforme mostrado abaixo:

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

Uso oficial do FastSAM#

O FastSAM também está disponível diretamente a partir do repositório https://github.com/CASIA-IVA-Lab/FastSAM. Aqui tens uma breve visão geral dos passos típicos que podes seguir para utilizar o FastSAM:

Instalação#

  1. Clona o repositório FastSAM:

    git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
  2. Cria e ativa um ambiente Conda com Python 3.9:

    conda create -n FastSAM python=3.9
    conda activate FastSAM
  3. Navega até o repositório clonado e instala os pacotes necessários:

    cd FastSAM
    pip install -r requirements.txt
  4. Instala o modelo CLIP:

    pip install git+https://github.com/ultralytics/CLIP.git

Exemplo de Uso#

  1. Descarrega um model checkpoint.

  2. 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 bounding box (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]"

Adicionalmente, podes experimentar o FastSAM através da Colab demo do CASIA-IVA-Lab.

Citaçõ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:

Citação
  @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 tornaram o seu trabalho publicamente disponível, e o código-fonte pode ser acedido no GitHub. Agradecemos os seus esforços para fazer avançar a área e tornar o seu trabalho acessível à comunidade em geral.

FAQ#

O que é o FastSAM e como difere do SAM?#

O FastSAM, abreviatura de Fast Segment Anything Model, é uma solução baseada numa convolutional neural network (CNN) em tempo real, concebida para reduzir as exigências computacionais, mantendo um elevado desempenho em tarefas de segmentação de objetos. Ao contrário do Segment Anything Model (SAM), que utiliza uma arquitetura baseada em Transformer mais pesada, o FastSAM tira partido do Ultralytics YOLOv8-seg para uma segmentação de instâncias eficiente em duas etapas: segmentação de todas as instâncias seguida de seleção guiada por comandos.

Como 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.

Quais são as aplicações práticas do FastSAM?#

O FastSAM é prático para uma variedade de tarefas de computer vision que requerem um 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
  • Autonomous vehicles para detecçã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.

Como 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, consulta a secção Predict Usage da documentação.

Quais 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 ampla gama de cenários de interação com o utilizador, melhorando a sua utilidade em diferentes aplicações. Para mais informações sobre a utilização destes comandos, consulta a secção Key Features.

Comentários