[ Paper
] [ ?HuggingFace Demo
] [ Colab demo
] [ Replicate demo & API
] [ ] [ OpenXLab Demo
Model Zoo
] [ BibTeX
] [ Video Demo
]
Модель Fast Segment Anything (FastSAM) — это модель CNN Segment Anything, обученная с использованием только 2% набора данных SA-1B, опубликованного авторами SAM. FastSAM достигает производительности, сравнимой с методом SAM, при скорости выполнения в 50 раз выше .
? Обновления
2024/6/25
Немного улучшена проблема с зубцами по краям #231, а стратегия также синхронизирована с проектом Ultralytics #13939, #13912. Демо-версия Huggingface обновлена.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. Большое спасибо gaoxinge за помощь?.2023/06/29
Выпуск FastSAM_Awesome_TensorRT. Большое спасибо ChuRuaNh0 за предоставление TensorRT-модели FastSAM?.2023/06/26
Выпуск онлайн-демо-версии FastSAM Replication. Большое спасибо 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. Настоятельно рекомендуется установить PyTorch и TorchVision с поддержкой CUDA.
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 | Облако Baidu (пароль: 0000).FastSAM-s
: модель сегментации чего-либо на основе YOLOv8. Все результаты были протестированы на одной NVIDIA GeForce RTX 3090.
Скорость бега под разными номерами подсказок точек (мс).
метод | параметры | 1 | 10 | 100 | Е(16х16) | Е(32x32*) | Е(64x64) |
---|---|---|---|---|---|---|---|
СЭМ-Х | 0,6 г | 446 | 464 | 627 | 852 | 2099 год | 6972 |
ЗРК-Б | 136М | 110 | 125 | 230 | 432 | 1383 | 5417 |
ФастСАМ | 68М | 40 | 40 | 40 | 40 | 40 | 40 |
Набор данных | Метод | Память графического процессора (МБ) |
---|---|---|
КОКО 2017 | ФастСАМ | 2608 |
КОКО 2017 | СЭМ-Х | 7060 |
КОКО 2017 | ЗРК-Б | 4670 |
Протестируйте набор данных BSDB500.
метод | год | ОРВ | ОИС | АП | 50 рандов |
---|---|---|---|---|---|
ХЭД | 2015 год | .788 | .808 | .840 | .923 |
СЭМ | 2023 год | .768 | .786 | .794 | .928 |
ФастСАМ | 2023 год | .750 | .790 | .793 | .903 |
метод | AR10 | АР100 | АР1000 | АУК |
---|---|---|---|---|
САМ-Х Е64 | 15,5 | 45,6 | 67,7 | 32,1 |
САМ-Х Е32 | 18,5 | 49,5 | 62,5 | 33,7 |
ЗРК-Б Е32 | 11.4 | 39,6 | 59,1 | 27,3 |
ФастСАМ | 15,7 | 47,3 | 63,7 | 32,2 |
bbox AR@1000
метод | все | маленький | мед. | большой |
---|---|---|---|---|
ВиТДет-Х | 65,0 | 53,2 | 83,3 | 91,2 |
методы нулевой передачи | ||||
САМ-Х Е64 | 52,1 | 36,6 | 75,1 | 88,2 |
САМ-Х Е32 | 50,3 | 33,1 | 76,2 | 89,8 |
ЗРК-Б Е32 | 45,0 | 29,3 | 68,7 | 80,6 |
ФастСАМ | 57,1 | 44,3 | 77,1 | 85,3 |
метод | АП | АПС | АПМ | АПЛ |
---|---|---|---|---|
ВиТДет-Х | .510 | .320 | .543 | .689 |
СЭМ | .465 | .308 | .510 | .617 |
ФастСАМ | .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}
}