[ Paper
] [ ?HuggingFace Demo
] [ Colab demo
] [ Replicate demo & API
] [ ] [ OpenXLab Demo
Model Zoo
] [ BibTeX
] [ Video Demo
]
Le modèle Fast Segment Anything (FastSAM) est un modèle CNN Segment Anything formé en utilisant seulement 2 % de l'ensemble de données SA-1B publié par les auteurs de SAM. FastSAM atteint des performances comparables à celles de la méthode SAM à une vitesse d'exécution 50 fois supérieure .
? Mises à jour
2024/6/25
Le problème des bords irréguliers a été légèrement amélioré #231, et la stratégie a également été synchronisée avec le projet ultralytique#13939,#13912. La démo huggingface est mise à jour.2023/11/28
: Semantic FastSAM, qui ajoute les étiquettes de classe sémantique à FastSAM. Merci à KBH00 pour cette précieuse contribution.2023/09/11
Libérer le code de formation et de validation.2023/08/17
Sortie de la démo OpenXLab. Merci à l'équipe OpenXLab pour son aide.2023/07/06
Ajouté au hub de modèles Ultralytics (YOLOv8). Merci à Ultralytics pour votre aide ?.2023/06/29
Prise en charge du mode texte dans HuggingFace Space. Merci beaucoup à Gaoxinge pour son aide ?.2023/06/29
Sortie FastSAM_Awesome_TensorRT. Merci beaucoup à ChuRuaNh0 pour avoir fourni le modèle TensorRT de FastSAM ?.2023/06/26
Sortie de la démo en ligne FastSAM Replicate. Merci beaucoup à Chenxi d'avoir fourni cette belle démo ?.2023/06/26
Mode points de support dans HuggingFace Space. Une interaction meilleure et plus rapide sera bientôt disponible !2023/06/24
Merci beaucoup à Grounding-SAM pour avoir combiné Grounding-DINO avec FastSAM dans Grounded-FastSAM ?. Clonez le dépôt localement :
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
Créez l'environnement conda. Le code nécessite python>=3.7
, ainsi que pytorch>=1.7
et torchvision>=0.8
. Veuillez suivre les instructions ici pour installer les dépendances PyTorch et TorchVision. L'installation de PyTorch et TorchVision avec la prise en charge de CUDA est fortement recommandée.
conda create -n FastSAM python=3.9
conda activate FastSAM
Installez les packages :
cd FastSAM
pip install -r requirements.txt
Installez CLIP (obligatoire si l'invite de texte est en cours de test.) :
pip install git+https://github.com/openai/CLIP.git
Téléchargez d’abord un modèle de point de contrôle.
Ensuite, vous pouvez exécuter les scripts pour essayer le mode Tout et les trois modes d'invite.
# 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] "
Vous pouvez utiliser le code suivant pour générer tous les masques et visualiser les résultats.
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 ' ,)
Pour les invites en mode point/boîte/texte, utilisez :
# 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',)
Vous êtes également invités à essayer notre démo Colab : FastSAM_example.ipynb.
Nous proposons diverses options à des fins différentes, les détails se trouvent dans MORE_USAGES.md.
Formation from scratch ou validation : Code de formation et de validation.
# Download the pre-trained model in "./weights/FastSAM.pt"
python app_gradio.py
Deux versions du modèle sont disponibles avec des tailles différentes. Cliquez sur les liens ci-dessous pour télécharger le point de contrôle pour le type de modèle correspondant.
default
ou FastSAM
: modèle de segment n'importe quoi basé sur YOLOv8x | Baidu Cloud (mot de passe : 0000).FastSAM-s
: modèle de segment n'importe quoi basé sur YOLOv8s. Tous les résultats ont été testés sur une seule NVIDIA GeForce RTX 3090.
Vitesse de fonctionnement sous différents numéros d'invite de point (ms).
méthode | paramètres | 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 |
Ensemble de données | Méthode | Mémoire GPU (Mo) |
---|---|---|
COCO 2017 | FastSAM | 2608 |
COCO 2017 | SAM-H | 7060 |
COCO 2017 | SAM-B | 4670 |
Testez sur l'ensemble de données BSDB500.
méthode | année | SAO | OIS | PA | R50 |
---|---|---|---|---|---|
IL | 2015 | .788 | .808 | .840 | .923 |
SAM | 2023 | .768 | .786 | .794 | .928 |
FastSAM | 2023 | .750 | .790 | .793 | .903 |
méthode | 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
méthode | tous | petit | méd. | grand |
---|---|---|---|---|
ViTDet-H | 65,0 | 53.2 | 83,3 | 91.2 |
méthodes de transfert sans tir | ||||
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éthode | PA | APS | APM | APL |
---|---|---|---|---|
ViTDet-H | .510 | .320 | .543 | .689 |
SAM | .465 | .308 | .510 | .617 |
FastSAM | .379 | .239 | .434 | .500 |
Plusieurs résultats de segmentation :
Les résultats de plusieurs tâches en aval pour montrer l’efficacité.
Le modèle est sous licence Apache 2.0.
Notre projet ne serait pas possible sans la contribution de ces personnes extraordinaires ! Merci à tous d'avoir rendu ce projet meilleur.
Si vous trouvez ce projet utile pour votre recherche, pensez à citer l'entrée BibTeX suivante.
@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}
}