Link to this sectionFast Segment Anything Model (FastSAM)#
El Fast Segment Anything Model (FastSAM) es una novedosa solución basada en CNN en tiempo real para la tarea de Segment Anything. Esta tarea está diseñada para segmentar cualquier objeto dentro de una imagen basándose en varios prompts de interacción de usuario posibles. FastSAM reduce significativamente las demandas computacionales mientras mantiene un rendimiento competitivo, convirtiéndolo en una opción práctica para una variedad de tareas de visión.
Watch: Object Tracking using FastSAM with Ultralytics
Link to this sectionArquitectura del modelo#

Link to this sectionDescripción general#
FastSAM está diseñado para abordar las limitaciones del Segment Anything Model (SAM), un modelo pesado de Transformer con requisitos de recursos computacionales sustanciales. FastSAM desacopla la tarea de segmentar cualquier cosa en dos etapas secuenciales: segmentación de instancias completa y selección guiada por prompts. La primera etapa utiliza YOLOv8-seg para generar las máscaras de segmentación de todas las instancias en la imagen. En la segunda etapa, genera la región de interés correspondiente al prompt.
Link to this sectionCaracterísticas clave#
-
Solución en tiempo real: Al aprovechar la eficiencia computacional de las CNN, FastSAM proporciona una solución en tiempo real para la tarea de segmentar cualquier cosa, lo que lo hace valioso para aplicaciones industriales que requieren resultados rápidos.
-
Eficiencia y rendimiento: FastSAM ofrece una reducción significativa en las demandas de recursos y cómputo sin comprometer la calidad del rendimiento. Logra un rendimiento comparable al de SAM pero con recursos computacionales drásticamente reducidos, permitiendo una aplicación en tiempo real.
-
Segmentación guiada por prompts: FastSAM puede segmentar cualquier objeto dentro de una imagen guiado por varios prompts de interacción de usuario posibles, proporcionando flexibilidad y adaptabilidad en diferentes escenarios.
-
Basado en YOLOv8-seg: FastSAM se basa en YOLOv8-seg, un detector de objetos equipado con una rama de segmentación de instancias. Esto le permite producir eficazmente las máscaras de segmentación de todas las instancias en una imagen.
-
Resultados competitivos en benchmarks: En la tarea de propuesta de objetos en MS COCO, FastSAM logra puntuaciones altas a una velocidad significativamente más rápida que SAM en una única NVIDIA RTX 3090, demostrando su eficiencia y capacidad.
-
Aplicaciones prácticas: El enfoque propuesto proporciona una solución nueva y práctica para un gran número de tareas de visión a una velocidad muy alta, decenas o cientos de veces más rápida que los métodos actuales.
-
Viabilidad de compresión de modelos: FastSAM demuestra la viabilidad de un camino que puede reducir significativamente el esfuerzo computacional al introducir un prior artificial a la estructura, abriendo así nuevas posibilidades para la arquitectura de modelos grandes para tareas de visión general.
Link to this sectionModelos disponibles, tareas soportadas y modos de funcionamiento#
Esta tabla presenta los modelos disponibles con sus pesos preentrenados específicos, las tareas que admiten y su compatibilidad con diferentes modos de funcionamiento como Inferencia, Validación, Entrenamiento y Exportación, indicados con emojis ✅ para los modos admitidos y ❌ para los no admitidos.
| Tipo de modelo | Pesos preentrenados | Tareas soportadas | Inference | Validation | Training | Exportar |
|---|---|---|---|---|---|---|
| FastSAM-s | FastSAM-s.pt | Instance Segmentation | ✅ | ❌ | ❌ | ✅ |
| FastSAM-x | FastSAM-x.pt | Instance Segmentation | ✅ | ❌ | ❌ | ✅ |
Link to this sectionComparación de FastSAM frente a YOLO#
Aquí comparamos los modelos SAM 2 de Meta, incluida la variante SAM2-t más pequeña, con los modelos de segmentación de Ultralytics, incluido YOLO26n-seg:
| Modelo | Tamaño (MB) | Parámetros (M) | Velocidad (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 con backbone de YOLOv8 | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (11.0x más pequeño) | 3.4 (11.4x menos) | 24.8 (945x más rápido) |
| Ultralytics YOLO11n-seg | 6.2 (12.6x más pequeño) | 2.9 (13.4x menos) | 24.3 (964x más rápido) |
| Ultralytics YOLO26n-seg | 6.7 (11.7x más pequeño) | 2.7 (14.4x menos) | 25.2 (930x más rápido) |
Esta comparativa demuestra las diferencias sustanciales en los tamaños y velocidades de los modelos entre las variantes de SAM y los modelos de segmentación YOLO. Mientras que SAM proporciona capacidades de segmentación automática únicas, los modelos YOLO, particularmente YOLOv8n-seg, YOLO11n-seg y YOLO26n-seg, son significativamente más pequeños, rápidos y computacionalmente eficientes.
Velocidades de SAM medidas con PyTorch, velocidades de YOLO medidas con ONNX Runtime. Pruebas realizadas en un Apple M4 Air de 2025 con 16GB de RAM usando torch==2.10.0, ultralytics==8.4.31 y onnxruntime==1.24.4. Para reproducir esta prueba:
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 sectionEjemplos de uso#
Los modelos FastSAM son fáciles de integrar en tus aplicaciones de Python. Ultralytics proporciona una API de Python fácil de usar y comandos de CLI para agilizar el desarrollo.
Link to this sectionUso de Predict#
Para realizar detección de objetos en una imagen, utiliza el método predict como se muestra a continuación:
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 fragmento demuestra la simplicidad de cargar un modelo preentrenado y ejecutar una predicción en una imagen.
De esta forma puedes ejecutar la inferencia en la imagen y obtener todos los results de segmento una vez y ejecutar la inferencia de prompts varias veces sin tener que realizar la inferencia múltiples veces.
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 los results devueltos en los ejemplos anteriores son objetos Results que permiten acceder fácilmente a las máscaras predichas y a la imagen de origen.
Link to this sectionUso de Val#
La validación del modelo en un conjunto de datos se puede realizar de la siguiente manera:
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")Ten en cuenta que FastSAM solo admite la detección y segmentación de una única clase de objeto. Esto significa que reconocerá y segmentará todos los objetos como la misma clase. Por lo tanto, al preparar el conjunto de datos, necesitas convertir todos los ID de categoría de objetos a 0.
Link to this sectionUso de Track#
Para realizar el seguimiento de objetos en una imagen, utiliza el método track como se muestra a continuación:
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 de FastSAM#
FastSAM también está disponible directamente desde el repositorio https://github.com/CASIA-IVA-Lab/FastSAM. Aquí tienes una breve descripción de los pasos típicos que podrías seguir para usar FastSAM:
Link to this sectionInstalación#
-
Clona el repositorio de FastSAM:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git -
Crea y activa un entorno de Conda con Python 3.9:
conda create -n FastSAM python=3.9 conda activate FastSAM -
Navega al repositorio clonado e instala los paquetes necesarios:
cd FastSAM pip install -r requirements.txt -
Instala el modelo CLIP:
pip install git+https://github.com/ultralytics/CLIP.git
Link to this sectionEjemplo de uso#
-
Descarga un punto de control del modelo.
-
Usa FastSAM para la inferencia. Comandos de ejemplo:
-
Segmenta todo en una imagen:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg -
Segmenta objetos específicos usando un 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 un cuadro delimitador (proporciona las coordenadas del cuadro en formato xywh):
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]" -
Segmenta objetos cerca de puntos 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]"
-
Además, puedes probar FastSAM a través de la demo de Colab de CASIA-IVA-Lab.
Link to this sectionCitas y reconocimientos#
Nos gustaría reconocer a los autores de FastSAM por sus importantes contribuciones en el campo de la segmentación de instancias en tiempo 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}
}El artículo original de FastSAM se puede encontrar en arXiv. Los autores han hecho público su trabajo y se puede acceder al código fuente en GitHub. Apreciamos sus esfuerzos para avanzar en el campo y hacer que su trabajo sea accesible para la comunidad en general.
Link to this sectionPreguntas frecuentes (FAQ)#
Link to this section¿Qué es FastSAM y en qué se diferencia de SAM?#
FastSAM, abreviatura de Fast Segment Anything Model, es una solución basada en red neuronal convolucional (CNN) en tiempo real diseñada para reducir las demandas computacionales mientras mantiene un alto rendimiento en tareas de segmentación de objetos. A diferencia del Segment Anything Model (SAM), que utiliza una arquitectura basada en Transformer más pesada, FastSAM aprovecha Ultralytics YOLOv8-seg para una segmentación de instancias eficiente en dos etapas: segmentación de todas las instancias seguida de selección guiada por prompts.
Link to this section¿Cómo logra FastSAM un rendimiento de segmentación en tiempo real?#
FastSAM logra la segmentación en tiempo real desacoplando la tarea de segmentación en segmentación de todas las instancias con YOLOv8-seg y etapas de selección guiada por prompts. Al utilizar la eficiencia computacional de las CNN, FastSAM ofrece reducciones significativas en las demandas de recursos y cómputo mientras mantiene un rendimiento competitivo. Este enfoque de doble etapa permite a FastSAM ofrecer una segmentación rápida y eficiente adecuada para aplicaciones que requieren resultados rápidos.
Link to this section¿Cuáles son las aplicaciones prácticas de FastSAM?#
FastSAM es práctico para una variedad de tareas de visión artificial que requieren un rendimiento de segmentación en tiempo real. Las aplicaciones incluyen:
- Automatización industrial para control y aseguramiento de calidad
- Análisis de vídeo en tiempo real para seguridad y vigilancia
- Vehículos autónomos para detección y segmentación de objetos
- Imágenes médicas para tareas de segmentación precisas y rápidas
Su capacidad para manejar varios prompts de interacción de usuario hace que FastSAM sea adaptable y flexible para diversos escenarios.
Link to this section¿Cómo uso el modelo FastSAM para inferencia en Python?#
Para usar FastSAM para inferencia en Python, puedes seguir el ejemplo a continuación:
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 obtener más detalles sobre los métodos de inferencia, consulta la sección Uso de Predict de la documentación.
Link to this section¿Qué tipos de prompts admite FastSAM para tareas de segmentación?#
FastSAM admite múltiples tipos de prompts para guiar las tareas de segmentación:
- Prompt de Todo: Genera segmentación para todos los objetos visibles.
- Prompt de Cuadro Delimitador (BBox): Segmenta objetos dentro de un cuadro delimitador especificado.
- Prompt de Texto: Utiliza un texto descriptivo para segmentar objetos que coincidan con la descripción.
- Prompt de Punto: Segmenta objetos cerca de puntos específicos definidos por el usuario.
Esta flexibilidad permite a FastSAM adaptarse a una amplia gama de escenarios de interacción de usuario, mejorando su utilidad en diferentes aplicaciones. Para obtener más información sobre el uso de estos prompts, consulta la sección Características clave.