[ Paper
] [ ?HuggingFace Demo
] [ Colab demo
] [ Replicate demo & API
] [ ] [ OpenXLab Demo
Model Zoo
] [ BibTeX
] [ Video Demo
]
Fast Segment Anything Model (FastSAM) adalah CNN Segment Anything Model yang dilatih hanya menggunakan 2% dari kumpulan data SA-1B yang diterbitkan oleh penulis SAM. FastSAM mencapai kinerja yang sebanding dengan metode SAM pada kecepatan run-time 50x lebih tinggi .
? Pembaruan
2024/6/25
Masalah edge jaggies telah sedikit diperbaiki #231, dan strateginya juga telah disinkronkan ke proyek ultralytics#13939,#13912. Demo pelukan telah diperbarui.2023/11/28
: FastSAM Semantik, yang menambahkan label kelas semantik ke FastSAM. Terima kasih kepada KBH00 atas kontribusi berharga ini.2023/09/11
.2023/08/17
Rilis Demo OpenXLab. Terima kasih kepada Tim OpenXLab atas bantuannya.2023/07/06
Ditambahkan ke Hub Model Ultralytics (YOLOv8). Terima kasih kepada Ultralytics atas bantuannya?.2023/06/29
Mendukung mode teks di HuggingFace Space. Terima kasih banyak kepada gaoxinge atas bantuannya?.2023/06/29
Rilis FastSAM_Awesome_TensorRT. Terima kasih banyak kepada ChuRuaNh0 karena telah menyediakan model TensorRT FastSAM?.2023/06/26
Rilis Demo Online Replikasi FastSAM. Terima kasih banyak kepada Chenxi karena telah menyediakan demo yang bagus ini?.2023/06/26
Mode titik dukungan di HuggingFace Space. Interaksi yang lebih baik dan lebih cepat akan segera hadir!2023/06/24
Terima kasih banyak kepada Grounding-SAM yang telah Menggabungkan Grounding-DINO dengan FastSAM di Grounded-FastSAM?. Kloning repositori secara lokal:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
Buat conda env. Kode ini memerlukan python>=3.7
, serta pytorch>=1.7
dan torchvision>=0.8
. Silakan ikuti petunjuk di sini untuk menginstal dependensi PyTorch dan TorchVision. Menginstal PyTorch dan TorchVision dengan dukungan CUDA sangat disarankan.
conda create -n FastSAM python=3.9
conda activate FastSAM
Instal paket:
cd FastSAM
pip install -r requirements.txt
Instal CLIP (Diperlukan jika prompt teks sedang diuji.):
pip install git+https://github.com/openai/CLIP.git
Pertama unduh model pos pemeriksaan.
Kemudian, Anda dapat menjalankan skrip untuk mencoba mode semuanya dan tiga mode prompt.
# 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] "
Anda dapat menggunakan kode berikut untuk membuat semua masker dan memvisualisasikan hasilnya.
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 ' ,)
Untuk perintah mode titik/kotak/teks, gunakan:
# 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',)
Anda juga dapat mencoba demo Colab kami: FastSAM_example.ipynb.
Kami menyediakan berbagai opsi untuk tujuan berbeda, detailnya ada di MORE_USAGES.md.
Pelatihan dari awal atau validasi: Kode Pelatihan dan Validasi.
# Download the pre-trained model in "./weights/FastSAM.pt"
python app_gradio.py
Tersedia dua versi model model dengan ukuran berbeda. Klik tautan di bawah untuk mengunduh pos pemeriksaan untuk jenis model yang sesuai.
default
atau FastSAM
: Model Apa Pun Segmen berbasis YOLOv8x | Baidu Cloud (pwd: 0000).FastSAM-s
: Model Segmen Apapun berbasis YOLOv8. Semua hasil diuji pada satu NVIDIA GeForce RTX 3090.
Kecepatan Berjalan di bawah Nomor Prompt Titik Berbeda (ms).
metode | param | 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 |
SAM cepat | 68M | 40 | 40 | 40 | 40 | 40 | 40 |
Kumpulan data | Metode | Memori GPU (MB) |
---|---|---|
COCO 2017 | SAM cepat | 2608 |
COCO 2017 | SAM-H | 7060 |
COCO 2017 | SAM-B | 4670 |
Uji pada dataset BSDB500.
metode | tahun | BODOH | OIS | AP | R50 |
---|---|---|---|---|---|
DIA | 2015 | .788 | .808 | .840 | .923 |
SAM | 2023 | .768 | .786 | .794 | .928 |
SAM cepat | 2023 | 0,750 | .790 | .793 | .903 |
metode | 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 |
SAM cepat | 15.7 | 47.3 | 63.7 | 32.2 |
bbox AR@1000
metode | semua | kecil | med. | besar |
---|---|---|---|---|
ViTDet-H | 65.0 | 53.2 | 83.3 | 91.2 |
metode transfer zero-shot | ||||
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 |
SAM cepat | 57.1 | 44.3 | 77.1 | 85.3 |
metode | AP | APS | APM | APL |
---|---|---|---|---|
ViTDet-H | .510 | .320 | .543 | .689 |
SAM | .465 | .308 | .510 | .617 |
SAM cepat | .379 | .239 | .434 | 0,500 |
Beberapa hasil segmentasi:
Hasil beberapa tugas hilir menunjukkan efektivitas.
Model ini dilisensikan di bawah lisensi Apache 2.0.
Proyek kami tidak akan mungkin terwujud tanpa kontribusi dari orang-orang luar biasa ini! Terima kasih semuanya telah menjadikan proyek ini lebih baik.
Jika Anda merasa proyek ini berguna untuk penelitian Anda, mohon pertimbangkan untuk mengutip entri BibTeX berikut.
@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}
}