[ Paper
] [ ?HuggingFace Demo
] [ Colab demo
] [ Replicate demo & API
] [ ] [ OpenXLab Demo
Model Zoo
] [ BibTeX
] [ Video Demo
]
O Fast Segment Anything Model (FastSAM) é um modelo CNN Segment Anything treinado usando apenas 2% do conjunto de dados SA-1B publicado pelos autores do SAM. FastSAM alcança desempenho comparável com o método SAM com velocidade de tempo de execução 50x maior .
? Atualizações
2024/6/25
O problema dos edge jaggies foi ligeiramente melhorado #231, e a estratégia também foi sincronizada com o projeto ultralítico#13939,#13912. A demonstração huggingface foi atualizada.2023/11/28
: Semantic FastSAM, que adiciona os rótulos de classe semântica ao FastSAM. Obrigado ao KBH00 por esta valiosa contribuição.2023/09/11
Liberação do Código de Treinamento e Validação.2023/08/17
Lançamento da demonstração do OpenXLab. Obrigado à equipe OpenXLab pela ajuda.2023/07/06
Adicionado ao Hub do modelo Ultralytics (YOLOv8). Obrigado ao Ultralytics pela ajuda?2023/06/29
Suporte ao modo de texto no HuggingFace Space. Muito obrigado ao gaoxinge pela ajuda?2023/06/29
Lançamento FastSAM_Awesome_TensorRT. Muito obrigado a ChuRuaNh0 por fornecer o modelo TensorRT do FastSAM?.2023/06/26
Lançamento da demonstração on-line do FastSAM Replicate. Muito obrigado a Chenxi por fornecer esta bela demonstração?2023/06/26
Modo de pontos de apoio no HuggingFace Space. Uma interação melhor e mais rápida virá em breve!2023/06/24
Muito obrigado ao Grounding-SAM por combinar Grounding-DINO com FastSAM em Grounded-FastSAM?. Clone o repositório localmente:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
Crie o ambiente conda. O código requer python>=3.7
, bem como pytorch>=1.7
e torchvision>=0.8
. Siga as instruções aqui para instalar as dependências PyTorch e TorchVision. É altamente recomendável instalar PyTorch e TorchVision com suporte CUDA.
conda create -n FastSAM python=3.9
conda activate FastSAM
Instale os pacotes:
cd FastSAM
pip install -r requirements.txt
Instale o CLIP (obrigatório se o prompt de texto estiver sendo testado.):
pip install git+https://github.com/openai/CLIP.git
Primeiro baixe um ponto de verificação do modelo.
Em seguida, você pode executar os scripts para experimentar o modo tudo e três modos de 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] "
Você pode usar o código a seguir para gerar todas as máscaras e visualizar os 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 prompts em modo ponto/caixa/texto, use:
# 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',)
Você também é bem-vindo para experimentar nossa demonstração do Colab: FastSAM_example.ipynb.
Oferecemos várias opções para diferentes finalidades. Os detalhes estão em MORE_USAGES.md.
Treinamento do zero ou validação: Código de Treinamento e Validação.
# Download the pre-trained model in "./weights/FastSAM.pt"
python app_gradio.py
Duas versões do modelo estão disponíveis em tamanhos diferentes. Clique nos links abaixo para baixar o ponto de verificação para o tipo de modelo correspondente.
default
ou FastSAM
: modelo Segment Anything baseado em YOLOv8x | Nuvem Baidu (senha: 0000).FastSAM-s
: modelo de segmento qualquer coisa baseado em YOLOv8s. Todos os resultados foram testados em uma única NVIDIA GeForce RTX 3090.
Velocidade de execução sob diferentes números de prompt de ponto (ms).
método | parâmetros | 1 | 10 | 100 | E(16x16) | E(32x32*) | E(64x64) |
---|---|---|---|---|---|---|---|
SAM-H | 0,6G | 446 | 464 | 627 | 852 | 2099 | 6972 |
SAM-B | 136 milhões | 110 | 125 | 230 | 432 | 1383 | 5417 |
FastSAM | 68 milhões | 40 | 40 | 40 | 40 | 40 | 40 |
Conjunto de dados | Método | Memória GPU (MB) |
---|---|---|
COCO 2017 | FastSAM | 2608 |
COCO 2017 | SAM-H | 7060 |
COCO 2017 | SAM-B | 4670 |
Teste no conjunto de dados BSDB500.
método | ano | ODS | OIS | PA | R50 |
---|---|---|---|---|---|
DEC | 2015 | 0,788 | 0,808 | 0,840 | 0,923 |
SAM | 2023 | 0,768 | 0,786 | 0,794 | 0,928 |
FastSAM | 2023 | 0,750 | 0,790 | 0,793 | .903 |
método | AR10 | AR100 | AR1000 | CUA |
---|---|---|---|---|
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
método | todos | pequeno | médico. | grande |
---|---|---|---|---|
ViTDet-H | 65,0 | 53,2 | 83,3 | 91,2 |
métodos de transferência 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 |
FastSAM | 57.1 | 44,3 | 77,1 | 85,3 |
método | PA | APS | APM | APL |
---|---|---|---|---|
ViTDet-H | .510 | 0,320 | 0,543 | 0,689 |
SAM | 0,465 | .308 | .510 | 0,617 |
FastSAM | 0,379 | 0,239 | 0,434 | 0,500 |
Vários resultados de segmentação:
Os resultados de várias tarefas posteriores para mostrar a eficácia.
O modelo é licenciado sob a licença Apache 2.0.
Nosso projeto não seria possível sem a contribuição dessas pessoas incríveis! Obrigado a todos por tornar este projeto melhor.
Se você achar este projeto útil para sua pesquisa, considere citar a seguinte entrada do 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}
}