[ Paper
] [ ?HuggingFace Demo
] [ Colab demo
] [ Replicate demo & API
] [ ] [ OpenXLab Demo
Model Zoo
] [ BibTeX
] [ Video Demo
]
快速分段任意模型 (FastSAM)是僅使用 SAM 作者發布的 SA-1B 資料集的 2% 進行訓練的 CNN 分段任意模型。 FastSAM 的效能與 SAM 方法相當,運轉速度提高了 50 倍。
?更新
2024/6/25
邊緣鋸齒問題略有改善#231,策略也同步到ultralytics專案#13939,#13912。擁抱臉演示已更新。2023/11/28
推薦:Semantic FastSAM,為FastSAM新增語意類別標籤。感謝 KBH00 的寶貴貢獻。2023/09/11
發布培訓和驗證代碼。2023/08/17
發布 OpenXLab 演示。感謝 OpenXLab 團隊的協助。2023/07/06
新增至 Ultralytics (YOLOv8) 模型中心。感謝 Ultralytics 的協助?2023/06/29
HuggingFace Space 支援文字模式。非常感謝高新哥的幫助?2023/06/29
發布 FastSAM_Awesome_TensorRT。非常感謝 ChuRuaNh0 提供 FastSAM 的 TensorRT 模型?2023/06/26
發布FastSAM Replicate線上演示。非常感謝 Chenxi 提供這個不錯的演示?2023/06/26
HuggingFace Space 支援點模式。更好更快的互動即將到來!2023/06/24
非常感謝 Grounding-SAM 將 Grounding-DINO 與 FastSAM 結合在 Grounded-FastSAM ? 中。 將儲存庫克隆到本地:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
創建 conda 環境。程式碼需要python>=3.7
,以及pytorch>=1.7
和torchvision>=0.8
。請依照此處的說明安裝 PyTorch 和 TorchVision 依賴項。強烈建議安裝支援 CUDA 的 PyTorch 和 TorchVision。
conda create -n FastSAM python=3.9
conda activate FastSAM
安裝軟體包:
cd FastSAM
pip install -r requirements.txt
安裝CLIP(測試文字提示時需要):
pip install git+https://github.com/openai/CLIP.git
首先下載一個模型檢查點。
然後,您可以執行腳本來嘗試一切模式和三種提示模式。
# 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] "
您可以使用以下程式碼產生所有蒙版並視覺化結果。
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 ' ,)
對於點/框/文字模式提示,請使用:
# 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',)
也歡迎您嘗試我們的 Colab 示範:FastSAM_example.ipynb。
我們針對不同的目的提供了多種選項,詳細資訊請參閱 MORE_USAGES.md。
從頭開始訓練或驗證:訓練和驗證程式碼。
# Download the pre-trained model in "./weights/FastSAM.pt"
python app_gradio.py
該模型有兩種不同尺寸的型號版本。點擊下面的連結下載對應模型類型的檢查點。
default
或FastSAM
:基於 YOLOv8x 的分段任意模型 |百度雲(密碼:0000)。FastSAM-s
:基於 YOLOv8s 的分段任意模型。 所有結果均在單一 NVIDIA GeForce RTX 3090 上進行測試。
不同點提示數下的運轉速度(ms)。
方法 | 參數 | 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 | 68M | 40 | 40 | 40 | 40 | 40 | 40 |
數據集 | 方法 | GPU 記憶體 (MB) |
---|---|---|
可可2017 | 快速SAM | 2608 |
可可2017 | SAM-H | 7060 |
可可2017 | SAM-B | 4670 |
在 BSDB500 資料集上進行測試。
方法 | 年 | 消耗臭氧層物質 | 光學防手震 | 美聯社 | R50 |
---|---|---|---|---|---|
哈德 | 2015年 | .788 | .808 | .840 | .923 |
薩姆 | 2023年 | .768 | .786 | .794 | .928 |
快速SAM | 2023年 | .750 | .790 | .793 | .903 |
方法 | AR10 | AR100 | AR1000 | 曲線下面積 |
---|---|---|---|---|
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 | 15.7 | 47.3 | 63.7 | 32.2 |
bbox AR@1000
方法 | 全部 | 小的 | 醫學。 | 大的 |
---|---|---|---|---|
ViTDet-H | 65.0 | 53.2 | 83.3 | 91.2 |
零樣本傳輸方法 | ||||
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 | 57.1 | 44.3 | 77.1 | 85.3 |
方法 | 美聯社 | APS | APM | APL |
---|---|---|---|---|
ViTDet-H | .510 | .320 | .543 | .689 |
薩姆 | .465 | .308 | .510 | .617 |
快速SAM | .379 | .239 | .434 | .500 |
幾種分割結果:
幾個下游任務的結果顯示了有效性。
該模型根據 Apache 2.0 許可證獲得許可。
如果沒有這些了不起的人們的貢獻,我們的專案就不可能實現!感謝大家讓這個專案變得更好。
如果您發現該項目對您的研究有用,請考慮引用以下 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}
}