Repositori resmi untuk RobustSAM: Segmentasikan Apa Pun dengan Kuat pada Gambar yang Terdegradasi
Halaman Proyek | Kertas | Video | Kumpulan data
Agustus 2024: Anda dapat merujuk ke kartu model & demo Hugging Face yang dibuat oleh @jadecoghari untuk penggunaan yang lebih mudah melalui tautan ini.
Juli 2024: Kode pelatihan, data, dan pos pemeriksaan model untuk tulang punggung ViT yang berbeda dirilis!
Juni 2024: Kode inferensi telah dirilis!
Feb 2024: RobustSAM diterima di CVPR 2024!
Segment Anything Model (SAM) telah muncul sebagai pendekatan transformatif dalam segmentasi gambar, yang terkenal dengan kemampuan segmentasi zero-shot yang kuat dan sistem prompt yang fleksibel. Meskipun demikian, kinerjanya ditantang oleh gambar dengan kualitas yang menurun. Untuk mengatasi keterbatasan ini, kami mengusulkan Robust Segment Anything Model (RobustSAM), yang meningkatkan kinerja SAM pada gambar berkualitas rendah sambil mempertahankan ketepatan dan generalisasi zero-shot.
Metode kami memanfaatkan model SAM terlatih dengan hanya peningkatan parameter marginal dan persyaratan komputasi. Parameter tambahan RobustSAM dapat dioptimalkan dalam waktu 30 jam pada delapan GPU, menunjukkan kelayakan dan kepraktisan untuk laboratorium penelitian pada umumnya. Kami juga memperkenalkan kumpulan data Robust-Seg, kumpulan 688 ribu pasangan masker gambar dengan degradasi berbeda yang dirancang untuk melatih dan mengevaluasi model kami secara optimal. Eksperimen ekstensif di berbagai tugas segmentasi dan kumpulan data mengkonfirmasi kinerja RobustSAM yang unggul, terutama dalam kondisi zero-shot, yang menggarisbawahi potensinya untuk penerapan luas di dunia nyata. Selain itu, metode kami telah terbukti secara efektif meningkatkan kinerja tugas hilir berbasis SAM seperti penghilangan kabut dan penghilangan gambar tunggal.
Buat lingkungan conda dan aktifkan.
conda create --name robustsam python=3.10 -y conda activate robustsam
Kloning dan masuk ke direktori repo.
git clone https://github.com/robustsam/RobustSAM cd RobustSAM
Gunakan perintah di bawah ini untuk memeriksa versi CUDA Anda.
nvidia-smi
Ganti versi CUDA dengan versi Anda pada perintah di bawah ini.
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu[$YOUR_CUDA_VERSION] # For example: pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 # cu117 = CUDA_version_11.7
Instal dependensi yang tersisa
pip install -r requirements.txt
Unduh pos pemeriksaan RobustSAM yang telah dilatih sebelumnya dengan berbagai ukuran dan tempatkan di direktori saat ini.
Pos pemeriksaan ViT-B RobustSAM
Pos pemeriksaan ViT-L RobustSAM
Pos pemeriksaan ViT-H RobustSAM
Ubah direktori saat ini ke direktori "data".
cd data
Unduh kumpulan data kereta, val, pengujian, dan tambahan COCO & LVIS. (CATATAN: Gambar dalam kumpulan data train, val, dan pengujian terdiri dari gambar dari LVIS, MSRA10K, ThinObject-5k, NDD20, STREETS, dan FSS-1000)
bash download.sh
Yang ada hanya gambar jernih yang didownload pada langkah sebelumnya. Gunakan perintah di bawah ini untuk menghasilkan gambar terdegradasi yang sesuai.
bash gen_data.sh
Jika Anda ingin berlatih dari awal, gunakan perintah di bawah ini.
python -m torch.distributed.launch train_ddp.py --multiprocessing-distributed --exp_name [$YOUR_EXP_NAME] --model_size [$MODEL_SIZE] # Example usage: python -m torch.distributed.launch train_ddp.py --multiprocessing-distributed --exp_name test --model_size l
Jika Anda ingin berlatih dari pos pemeriksaan yang telah dilatih sebelumnya, gunakan perintah di bawah ini.
python -m torch.distributed.launch train_ddp.py --multiprocessing-distributed --exp_name [$YOUR_EXP_NAME] --model_size [$MODEL_SIZE] --load_model [$CHECKPOINT_PATH] # Example usage: python -m torch.distributed.launch train_ddp.py --multiprocessing-distributed --exp_name test --model_size l --load_model robustsam_checkpoint_l.pth
python gradio_app.py
Kami telah menyiapkan beberapa gambar di folder demo_images untuk tujuan demo. Selain itu, tersedia dua mode prompt (petunjuk kotak dan petunjuk titik).
Untuk kotak prompt:
python eval.py --bbox --model_size l
Untuk petunjuk poin:
python eval.py --model_size l
Secara default, hasil demo akan disimpan ke demo_result/[$PROMPT_TYPE] .
Jika Anda merasa karya ini bermanfaat, mohon pertimbangkan untuk mengutip kami!
@inproceedings{chen2024robustsam, title={RobustSAM: Segmentasikan Apa Pun dengan Kuat pada Gambar yang Terdegradasi}, author={Chen, Wei-Ting dan Vong, Yu-Jiet dan Kuo, Sy-Yen dan Ma, Sizhou dan Wang, Jian}, journal= {CVPR}, tahun={2024}}
Kami berterima kasih kepada penulis SAM yang menjadi dasar repo kami.