[ Paper
] [ ?HuggingFace Demo
] [ Colab demo
] [ Replicate demo & API
] [ ] [ OpenXLab Demo
Model Zoo
] [ BibTeX
] [ Video Demo
]
Das Fast Segment Anything Model (FastSAM) ist ein CNN Segment Anything Model, das mit nur 2 % des von SAM-Autoren veröffentlichten SA-1B-Datensatzes trainiert wurde. FastSAM erreicht eine mit der SAM-Methode vergleichbare Leistung bei einer 50-fach höheren Laufzeitgeschwindigkeit .
? Aktualisierungen
2024/6/25
Das Problem mit den Kantenzacken wurde leicht verbessert #231, und die Strategie wurde auch mit dem Ultralytics-Projekt #13939, #13912 synchronisiert. Die Huggingface-Demo wurde aktualisiert.2023/11/28
Empfehlung: Semantic FastSAM, das die semantischen Klassenbezeichnungen zu FastSAM hinzufügt. Vielen Dank an KBH00 für diesen wertvollen Beitrag.2023/09/11
Release-Schulungs- und Validierungscode.2023/08/17
Veröffentlichung der OpenXLab-Demo. Vielen Dank an das OpenXLab-Team für die Hilfe.2023/07/06
Zum Ultralytics (YOLOv8) Model Hub hinzugefügt. Vielen Dank an Ultralytics für die Hilfe?2023/06/29
Unterstützt den Textmodus im HuggingFace Space. Vielen Dank an Gaoxinge für die Hilfe?2023/06/29
Veröffentlichung FastSAM_Awesome_TensorRT. Vielen Dank an ChuRuaNh0 für die Bereitstellung des TensorRT-Modells von FastSAM?2023/06/26
Veröffentlichung der FastSAM Replicate Online-Demo. Vielen Dank an Chenxi für die Bereitstellung dieser schönen Demo?2023/06/26
Unterstützungspunktemodus im HuggingFace Space. Eine bessere und schnellere Interaktion wird es bald geben!2023/06/24
Vielen Dank an Grounding-SAM für die Kombination von Grounding-DINO mit FastSAM in Grounded-FastSAM? Klonen Sie das Repository lokal:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
Erstellen Sie die Conda-Umgebung. Der Code erfordert python>=3.7
sowie pytorch>=1.7
und torchvision>=0.8
. Bitte befolgen Sie die Anweisungen hier, um sowohl PyTorch- als auch TorchVision-Abhängigkeiten zu installieren. Es wird dringend empfohlen, sowohl PyTorch als auch TorchVision mit CUDA-Unterstützung zu installieren.
conda create -n FastSAM python=3.9
conda activate FastSAM
Installieren Sie die Pakete:
cd FastSAM
pip install -r requirements.txt
CLIP installieren (erforderlich, wenn die Textaufforderung getestet wird.):
pip install git+https://github.com/openai/CLIP.git
Laden Sie zunächst einen Modellprüfpunkt herunter.
Anschließend können Sie die Skripts ausführen, um den Alles-Modus und drei Eingabeaufforderungsmodi auszuprobieren.
# 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] "
Mit dem folgenden Code können Sie alle Masken generieren und die Ergebnisse visualisieren.
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 ' ,)
Für Eingabeaufforderungen im Punkt-/Box-/Textmodus verwenden Sie:
# 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',)
Gerne können Sie auch unsere Colab-Demo ausprobieren: FastSAM_example.ipynb.
Wir bieten verschiedene Optionen für unterschiedliche Zwecke an. Einzelheiten finden Sie in MORE_USAGES.md.
Training von Grund auf oder Validierung: Trainings- und Validierungscode.
# Download the pre-trained model in "./weights/FastSAM.pt"
python app_gradio.py
Es stehen zwei Modellvarianten des Modells mit unterschiedlichen Größen zur Verfügung. Klicken Sie auf die untenstehenden Links, um den Prüfpunkt für den entsprechenden Modelltyp herunterzuladen.
default
oder FastSAM
: YOLOv8x-basiertes Segment-Anything-Modell | Baidu Cloud (pwd: 0000).FastSAM-s
: YOLOv8s-basiertes Segment-Anything-Modell. Alle Ergebnisse wurden auf einer einzelnen NVIDIA GeForce RTX 3090 getestet.
Laufgeschwindigkeit unter verschiedenen Punkt-Prompt-Zahlen (ms).
Verfahren | Parameter | 1 | 10 | 100 | E(16x16) | E(32x32*) | E(64x64) |
---|---|---|---|---|---|---|---|
SAM-H | 0,6G | 446 | 464 | 627 | 852 | 2099 | 6972 |
SAM-B | 136M | 110 | 125 | 230 | 432 | 1383 | 5417 |
FastSAM | 68M | 40 | 40 | 40 | 40 | 40 | 40 |
Datensatz | Verfahren | GPU-Speicher (MB) |
---|---|---|
COCO 2017 | FastSAM | 2608 |
COCO 2017 | SAM-H | 7060 |
COCO 2017 | SAM-B | 4670 |
Testen Sie den BSDB500-Datensatz.
Verfahren | Jahr | ODS | OIS | AP | R50 |
---|---|---|---|---|---|
HED | 2015 | .788 | .808 | .840 | .923 |
SAM | 2023 | .768 | .786 | .794 | .928 |
FastSAM | 2023 | .750 | .790 | .793 | .903 |
Verfahren | 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 |
FastSAM | 15.7 | 47.3 | 63,7 | 32.2 |
bbox AR@1000
Verfahren | alle | klein | med. | groß |
---|---|---|---|---|
ViTDet-H | 65,0 | 53.2 | 83,3 | 91,2 |
Zero-Shot-Übertragungsmethoden | ||||
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 |
FastSAM | 57.1 | 44.3 | 77.1 | 85,3 |
Verfahren | AP | APS | APM | APL |
---|---|---|---|---|
ViTDet-H | .510 | .320 | .543 | .689 |
SAM | .465 | .308 | .510 | .617 |
FastSAM | .379 | .239 | .434 | .500 |
Mehrere Segmentierungsergebnisse:
Die Ergebnisse mehrerer nachgelagerter Aufgaben zeigen die Wirksamkeit.
Das Modell ist unter der Apache 2.0-Lizenz lizenziert.
Unser Projekt wäre ohne die Beiträge dieser großartigen Menschen nicht möglich! Vielen Dank an alle, die dieses Projekt verbessert haben.
Wenn Sie dieses Projekt für Ihre Forschung nützlich finden, denken Sie bitte darüber nach, den folgenden BibTeX-Eintrag zu zitieren.
@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}
}