[ 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 segmentation 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}
}