[ Paper
] [ ?HuggingFace Demo
] [ Colab demo
] [ Replicate demo & API
] [ ] [ OpenXLab Demo
Model Zoo
] [ BibTeX
] [ Video Demo
]
El modelo Fast Segment Anything (FastSAM) es un modelo CNN Segment Anything entrenado utilizando solo el 2% del conjunto de datos SA-1B publicado por los autores de SAM. FastSAM logra un rendimiento comparable con el método SAM a una velocidad de tiempo de ejecución 50 veces mayor .
? Actualizaciones
2024/6/25
El problema de los bordes irregulares se mejoró ligeramente #231 y la estrategia también se sincronizó con el proyecto ultralítico #13939,#13912. La demostración de Huggingface está actualizada.2023/11/28
Recomendación: Semantic FastSAM, que agregan las etiquetas de clases semánticas a FastSAM. Gracias a KBH00 por este valioso aporte.2023/09/11
Lanzamiento del código de capacitación y validación.2023/08/17
Lanzamiento de demostración de OpenXLab. Gracias al equipo de OpenXLab por su ayuda.2023/07/06
Agregado al centro de modelos Ultralytics (YOLOv8). ¿Gracias a Ultralytics por la ayuda?.2023/06/29
Admite el modo de texto en HuggingFace Space. ¿Muchas gracias a gaoxinge por su ayuda?2023/06/29
Lanzamiento FastSAM_Awesome_TensorRT. Muchas gracias a ChuRuaNh0 por proporcionar el modelo TensorRT de FastSAM?.2023/06/26
Lanzamiento de la demostración en línea de FastSAM Replicate. Muchas gracias a Chenxi por proporcionar esta bonita demostración.2023/06/26
Modo puntos de apoyo en HuggingFace Space. ¡Pronto habrá una interacción mejor y más rápida!2023/06/24
Muchas gracias a Grounding-SAM por combinar Grounding-DINO con FastSAM en Grounded-FastSAM?. Clona el repositorio localmente:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
Crea el entorno conda. El código requiere python>=3.7
, así como pytorch>=1.7
y torchvision>=0.8
. Siga las instrucciones aquí para instalar las dependencias de PyTorch y TorchVision. Se recomienda encarecidamente instalar PyTorch y TorchVision con soporte CUDA.
conda create -n FastSAM python=3.9
conda activate FastSAM
Instale los paquetes:
cd FastSAM
pip install -r requirements.txt
Instale CLIP (obligatorio si se está probando el mensaje de texto):
pip install git+https://github.com/openai/CLIP.git
Primero descargue un punto de control modelo.
Luego, puede ejecutar los scripts para probar el modo todo y los tres modos de aviso.
# Everything mode
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
# Text prompt
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt " the yellow dog "
# Box prompt (xywh)
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt " [[570,200,230,400]] "
# Points prompt
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --point_prompt " [[520,360],[620,300]] " --point_label " [1,0] "
Puede utilizar el siguiente código para generar todas las máscaras y visualizar los resultados.
from fastsam import FastSAM, FastSAMPrompt
model = FastSAM( ' ./weights/FastSAM.pt ' )
IMAGE_PATH = ' ./images/dogs.jpg '
DEVICE = ' cpu '
everything_results = model(IMAGE_PATH, device=DEVICE, retina_masks=True, imgsz=1024, conf=0.4, iou=0.9,)
prompt_process = FastSAMPrompt(IMAGE_PATH, everything_results, device=DEVICE)
# everything prompt
ann = prompt_process.everything_prompt ()
prompt_process.plot(annotations=ann,output_path= ' ./output/dog.jpg ' ,)
Para indicaciones en modo punto/cuadro/texto, utilice:
# bbox default shape [0,0,0,0] -> [x1,y1,x2,y2]
ann = prompt_process.box_prompt(bboxes=[[200, 200, 300, 300]])
# text prompt
ann = prompt_process.text_prompt(text='a photo of a dog')
# point prompt
# points default [[0,0]] [[x1,y1],[x2,y2]]
# point_label default [0] [1,0] 0:background, 1:foreground
ann = prompt_process.point_prompt(points=[[620, 360]], pointlabel=[1])
prompt_process.plot(annotations=ann,output_path='./output/dog.jpg',)
También puede probar nuestra demostración de Colab: FastSAM_example.ipynb.
Ofrecemos varias opciones para diferentes propósitos, los detalles se encuentran en MORE_USAGES.md.
Formación desde cero o validación: Código de Formación y Validación.
# Download the pre-trained model in "./weights/FastSAM.pt"
python app_gradio.py
Hay dos versiones del modelo disponibles con diferentes tamaños. Haga clic en los enlaces a continuación para descargar el punto de control para el tipo de modelo correspondiente.
default
o FastSAM
: modelo de cualquier segmento basado en YOLOv8x | Nube Baidu (contraseña: 0000).FastSAM-s
: modelo Segment Anything basado en YOLOv8s. Todos los resultados se probaron en una única NVIDIA GeForce RTX 3090.
Velocidad de carrera bajo diferentes números de indicación de puntos (ms).
método | parámetros | 1 | 10 | 100 | mi(16x16) | mi(32x32*) | mi(64x64) |
---|---|---|---|---|---|---|---|
SAM-H | 0,6G | 446 | 464 | 627 | 852 | 2099 | 6972 |
SAM-B | 136M | 110 | 125 | 230 | 432 | 1383 | 5417 |
rápidoSAM | 68M | 40 | 40 | 40 | 40 | 40 | 40 |
Conjunto de datos | Método | Memoria GPU (MB) |
---|---|---|
COCO 2017 | rápidoSAM | 2608 |
COCO 2017 | SAM-H | 7060 |
COCO 2017 | SAM-B | 4670 |
Pruebe en el conjunto de datos BSDB500.
método | año | SAO | OIS | AP | 50€ |
---|---|---|---|---|---|
HED | 2015 | .788 | .808 | .840 | .923 |
Sam | 2023 | .768 | .786 | .794 | .928 |
rápidoSAM | 2023 | .750 | .790 | .793 | .903 |
método | AR10 | AR100 | AR1000 | AUC |
---|---|---|---|---|
SAM-H E64 | 15.5 | 45,6 | 67,7 | 32.1 |
SAM-H E32 | 18.5 | 49,5 | 62,5 | 33,7 |
SAM-B E32 | 11.4 | 39,6 | 59.1 | 27.3 |
rápidoSAM | 15.7 | 47.3 | 63,7 | 32.2 |
bboxAR@1000
método | todo | pequeño | medicina | grande |
---|---|---|---|---|
ViTDet-H | 65.0 | 53.2 | 83.3 | 91.2 |
métodos de transferencia de disparo cero | ||||
SAM-H E64 | 52.1 | 36,6 | 75.1 | 88.2 |
SAM-H E32 | 50.3 | 33.1 | 76.2 | 89,8 |
SAM-B E32 | 45.0 | 29.3 | 68,7 | 80,6 |
rápidoSAM | 57.1 | 44.3 | 77.1 | 85,3 |
método | AP | APS | APM | APL |
---|---|---|---|---|
ViTDet-H | .510 | .320 | .543 | .689 |
Sam | .465 | .308 | .510 | .617 |
rápidoSAM | .379 | .239 | .434 | .500 |
Varios resultados de segmentación:
Los resultados de varias tareas posteriores para mostrar la efectividad.
El modelo tiene la licencia Apache 2.0.
¡Nuestro proyecto no sería posible sin las contribuciones de estas personas increíbles! Gracias a todos por hacer este proyecto mejor.
Si encuentra útil este proyecto para su investigación, considere citar la siguiente entrada de 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}
}