[ Paper
] [ ?HuggingFace Demo
] [ Colab demo
] [ Replicate demo & API
] [ ] [ OpenXLab Demo
Model Zoo
] [ BibTeX
] [ Video Demo
]
Fast Segment Anything Model(FastSAM)は、SAM 著者によって公開された SA-1B データセットのわずか 2% を使用してトレーニングされた CNN セグメント Anything モデルです。 FastSAM は、50 倍の実行速度で SAM 方式と同等のパフォーマンスを実現します。
?アップデート
2024/6/25
エッジのジャギーの問題は #231 でわずかに改善され、戦略も Ultralytics プロジェクト #13939、#13912 に同期されました。ハグフェイスのデモが更新されました。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
Grounding-FastSAM ? で Grounding-DINO と FastSAM を組み合わせてくださった Grounding-SAM に感謝します。 リポジトリのクローンをローカルに作成します。
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
conda 環境を作成します。このコードには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
まずモデル チェックポイントをダウンロードします。
次に、スクリプトを実行して、すべてモードと 3 つのプロンプト モードを試すことができます。
# 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
サイズ違いで2モデルをご用意しております。以下のリンクをクリックして、対応するモデル タイプのチェックポイントをダウンロードしてください。
default
またはFastSAM
: YOLOv8x ベースのセグメント何でもモデル |百度クラウド (パスワード: 0000)。FastSAM-s
: YOLOv8s ベースのセグメント何でもモデル。 すべての結果は、単一の NVIDIA GeForce RTX 3090 でテストされました。
異なるポイントプロンプト番号での実行速度(ミリ秒)。
方法 | パラメータ | 1 | 10 | 100 | E(16x16) | E(32x32*) | E(64x64) |
---|---|---|---|---|---|---|---|
サム-H | 0.6G | 446 | 464 | 627 | 852 | 2099年 | 6972 |
サムB | 136M | 110 | 125 | 230 | 432 | 1383 | 5417 |
高速SAM | 68M | 40 | 40 | 40 | 40 | 40 | 40 |
データセット | 方法 | GPU メモリ (MB) |
---|---|---|
ココ2017 | 高速SAM | 2608 |
ココ2017 | サム-H | 7060 |
ココ2017 | サムB | 4670 |
BSDB500 データセットでテストします。
方法 | 年 | ODS | OIS | AP | R50 |
---|---|---|---|---|---|
ヘッド | 2015年 | .788 | .808 | .840 | .923 |
サム | 2023年 | .768 | .786 | .794 | .928 |
高速SAM | 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 |
高速SAM | 15.7 | 47.3 | 63.7 | 32.2 |
bbox 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 |
高速SAM | 57.1 | 44.3 | 77.1 | 85.3 |
方法 | AP | APS | APM | APL |
---|---|---|---|---|
ViTDet-H | .510 | .320 | .543 | .689 |
サム | .465 | .308 | .510 | .617 |
高速SAM | .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}
}