[ Paper
] [ ?HuggingFace Demo
] [ Colab demo
] [ Replicate demo & API
] [ ] [ OpenXLab Demo
Model Zoo
] [ BibTeX
] [ Video Demo
]
FastSAM(Fast Segment Anything Model)은 SAM 작성자가 게시한 SA-1B 데이터 세트의 2%만을 사용하여 훈련된 CNN Segment Anything 모델입니다. FastSAM은 50배 더 빠른 런타임 속도 에서 SAM 방법과 비슷한 성능을 달성합니다.
? 업데이트
2024/6/25
Edge Jaggies 문제가 약간 개선되었습니다 #231. 전략도 Ultralytics 프로젝트#13939,#13912와 동기화되었습니다. Huggingface 데모가 업데이트되었습니다.2023/11/28
추천: FastSAM에 의미 클래스 레이블을 추가하는 Semantic FastSAM. 귀중한 기여를 해주신 KBH00에게 감사드립니다.2023/09/11
교육 및 검증 코드 출시.2023/08/17
OpenXLab 데모 출시. 도움을 주신 OpenXLab 팀에 감사드립니다.2023/07/06
Ultralytics(YOLOv8) 모델 허브에 추가되었습니다. 도움을 주신 Ultralytics에게 감사드립니다.2023/06/29
HuggingFace Space에서 텍스트 모드를 지원합니다. 도움을 주신 gaoxinge에게 많은 감사를 드립니다.2023/06/29
FastSAM_Awesome_TensorRT 출시. FastSAM의 TensorRT 모델을 제공한 ChuRuaNh0에게 많은 감사를 드립니다.2023/06/26
FastSAM Replicate 온라인 데모 출시. 이 멋진 데모를 제공해 주신 Chenxi에게 정말 감사드립니다.2023/06/26
HuggingFace Space의 지원 포인트 모드입니다. 더 좋고 더 빠른 상호작용이 곧 이루어질 것입니다!2023/06/24
Grounded-FastSAM에서 Grounding-DINO와 FastSAM을 결합한 Grounding-SAM에 많은 감사를 드립니다. 저장소를 로컬로 복제합니다.
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
콘다 환경을 생성합니다. 코드에는 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 기반 Segment Anything 모델. 모든 결과는 단일 NVIDIA GeForce RTX 3090에서 테스트되었습니다.
다양한 포인트 프롬프트 번호(ms)에서의 실행 속도.
방법 | 매개변수 | 1 | 10 | 100 | 전자(16x16) | 전자(32x32*) | E(64x64) |
---|---|---|---|---|---|---|---|
샘-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 |
데이터세트 | 방법 | GPU 메모리(MB) |
---|---|---|
코코 2017 | FastSAM | 2608 |
코코 2017 | 샘-H | 7060 |
코코 2017 | SAM-B | 4670 |
BSDB500 데이터 세트에서 테스트합니다.
방법 | 년도 | ODS | OIS | AP | R50 |
---|---|---|---|---|---|
헤드 | 2015년 | .788 | .808 | .840 | .923 |
샘 | 2023년 | .768 | .786 | .794 | .928 |
FastSAM | 2023년 | .750 | .790 | .793 | .903 |
방법 | 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 |
비박스 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 |
FastSAM | 57.1 | 44.3 | 77.1 | 85.3 |
방법 | AP | APS | APM | APL |
---|---|---|---|---|
ViTDet-H | .510 | .320 | .543 | .689 |
샘 | .465 | .308 | .510 | .617 |
FastSAM | .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}
}