🚀 Tidak Ada Waktu untuk Melatih!
Segmentasi Instance Berbasis Referensi Tanpa Pelatihan
State-of-the-art (Makalah dengan Kode)
_SOTA 1-shot_ | -21CBCE?style=flat&logo=paperswithcode)
🚨 Pembaruan (5 Februari 2026): Manuskrip makalah telah diperbarui dengan studi ablation yang ekstensif, visualisasi dan eksperimen tambahan.
🚨 Pembaruan (22 Juli 2025): Instruksi untuk letting data kustom telah ditambahkan!
🔔 Pembaruan (16 Juli 2025): Kode telah diperbarui beserta instruksinya!
📋 Daftar Isi
- 🎯 Sorotan
- 📜 Abstrak
- 🧠 Arsitektur
- 🛠️ Instruksi instalasi
- 1. Klon repositori
- 2. Buat – environment conda
- 3. Instal SAM2 dan DINOv2
- 4. Unduh dataset
- 5. Unduh checkpoint SAM2 dan DINOv2
- 📊 Kode inferensi: Reproduksi hasil SOTA 30-shot pada Few-shot COCO
- 0. Buat set referensi
- 1. Isi memori dengan referensi
- 2. Pasca-proses bank memori
- 3. Inferensi pada gambar target
- Hasil
- 🔍 Dataset kustom
- 0. Siapkan dataset kustom ⛵🐦
- 0.1 Jika hanya anotasi bbox yang tersedia
- 0.2 Konversi anotasi coco ke file pickle
- 1. Isi memori dengan referensi
- 2. Proses lanjutan bank memori
- 📚 Sitasi
🎯 Sorotan
- 💡 Tanpa Pelatihan: Tidak perlu fine-tuning, tidak perlu rekayasa prompt—cukup gambar referensi saja.
- 🖼️ Berbasis Referensi: Segmentasi objek baru hanya dengan beberapa contoh.
- 🔥 Performa SOTA: Mengungguli pendekatan tanpa pelatihan sebelumnya pada COCO, PASCAL VOC, dan Cross-Domain FSOD.
📜 Abstrak
The performance of image segmentation models has historically been constrained by the high cost of collecting large-scale annotated data. The Segment Anything Model (SAM) alleviates this original problem through a promptable, semantics-agnostic, segmentation paradigm and yet still requires manual visual-prompts or complex domain-dependent prompt-generation rules to process a new image. Towards reducing this new burden, our work investigates the task of object segmentation when provided with, alternatively, only a small set of reference images. Our key insight is to leverage strong semantic priors, as learned by foundation models, to identify corresponding regions between a reference and a target image. We find that correspondences enable automatic generation of instance-level segmentation masks for downstream tasks and instantiate our ideas via a multi-stage, training-free method incorporating (1) memory bank construction; (2) representation aggregation and (3) semantic-aware feature matching. Our experiments show significant improvements on segmentation metrics, leading to state-of-the-art performance on COCO FSOD (36.8% nAP), PASCAL VOC Few-Shot (71.2% nAP50) and outperforming existing training-free approaches on the Cross-Domain FSOD benchmark (22.4% nAP).
🧠 Architecture
🛠️ Installation instructions
1. Clone the repository
git clone https://github.com/miquel-espinosa/no-time-to-train.git
cd no-time-to-train
2. Membuat lingkungan conda
Kita akan membuat lingkungan conda dengan paket-paket yang diperlukan.
conda env create -f environment.yml
conda activate no-time-to-train3. Instal SAM2 dan DINOv2
Kita akan menginstal SAM2 dan DINOv2 dari sumbernya.
pip install -e .
cd dinov2
pip install -e .
cd ..4. Unduh dataset
Silakan unduh dataset COCO dan letakkan di data/coco
5. Unduh checkpoint SAM2 dan DINOv2
Kami akan mengunduh checkpoint SAM2 yang persis digunakan dalam makalah. (Catat, bagaimanapun, bahwa checkpoint SAM2.1 sudah tersedia dan mungkin memberikan performa yang lebih baik.)
mkdir -p checkpoints/dinov2
cd checkpoints
wget https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_large.pt
cd dinov2
wget https://dl.fbaipublicfiles.com/dinov2/dinov2_vitl14/dinov2_vitl14_pretrain.pth
cd ../..
📊 Kode Inferensi
⚠️ Penafian: Ini adalah kode penelitian — harap maklum jika ada sedikit kekacauan!
Mereproduksi hasil SOTA 30-shot pada Few-shot COCO
Definisikan variabel yang diperlukan dan buat folder untuk hasil:
CONFIG=./no_time_to_train/new_exps/coco_fewshot_10shot_Sam2L.yaml
CLASS_SPLIT="few_shot_classes"
RESULTS_DIR=work_dirs/few_shot_results
SHOTS=30
SEED=33
GPUS=4mkdir -p $RESULTS_DIR
FILENAME=few_shot_${SHOTS}shot_seed${SEED}.pkl
#### 0. Buat set referensipython no_time_to_train/dataset/few_shot_sampling.py \
--n-shot $SHOTS \
--out-path ${RESULTS_DIR}/${FILENAME} \
--seed $SEED \
--dataset $CLASS_SPLIT
#### 1. Isi memori dengan referensipython run_lightening.py test --config $CONFIG \
--model.test_mode fill_memory \
--out_path ${RESULTS_DIR}/memory.ckpt \
--model.init_args.model_cfg.memory_bank_cfg.length $SHOTS \
--model.init_args.dataset_cfgs.fill_memory.memory_pkl ${RESULTS_DIR}/${FILENAME} \
--model.init_args.dataset_cfgs.fill_memory.memory_length $SHOTS \
--model.init_args.dataset_cfgs.fill_memory.class_split $CLASS_SPLIT \
--trainer.logger.save_dir ${RESULTS_DIR}/ \
--trainer.devices $GPUS
#### 2. Memori bank pasca-prosespython run_lightening.py test --config $CONFIG \
--model.test_mode postprocess_memory \
--model.init_args.model_cfg.memory_bank_cfg.length $SHOTS \
--ckpt_path ${RESULTS_DIR}/memory.ckpt \
--out_path ${RESULTS_DIR}/memory_postprocessed.ckpt \
--trainer.devices 1
#### 3. Inferensi pada gambar targetpython run_lightening.py test --config $CONFIG \
--ckpt_path ${RESULTS_DIR}/memory_postprocessed.ckpt \
--model.init_args.test_mode test \
--model.init_args.model_cfg.memory_bank_cfg.length $SHOTS \
--model.init_args.model_cfg.dataset_name $CLASS_SPLIT \
--model.init_args.dataset_cfgs.test.class_split $CLASS_SPLIT \
--trainer.logger.save_dir ${RESULTS_DIR}/ \
--trainer.devices $GPUS
Jika Anda ingin melihat hasil inferensi secara online (saat sedang dihitung), tambahkan argumen: --model.init_args.model_cfg.test.online_vis True
Untuk menyesuaikan parameter ambang skor score_thr, tambahkan argumen (misalnya, memvisualisasikan semua instance dengan skor lebih tinggi dari 0.4):
--model.init_args.model_cfg.test.vis_thr 0.4
Gambar sekarang akan disimpan di results_analysis/few_shot_classes/. Gambar di sebelah kiri menunjukkan ground truth, gambar di sebelah kanan menunjukkan instance tersegmentasi yang ditemukan oleh metode tanpa pelatihan kami.Perhatikan bahwa dalam contoh ini kami menggunakan split few_shot_classes, sehingga, kita hanya akan melihat instance tersegmentasi dari kelas-kelas dalam split ini (bukan semua kelas di COCO).
#### Hasil
Setelah menjalankan semua gambar dalam set validasi, Anda seharusnya mendapatkan:
BBOX RESULTS:
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.368SEGM RESULTS:
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.342
🔍 Dataset kustom
Kami menyediakan instruksi untuk menjalankan pipeline kami pada dataset kustom. Format anotasi selalu menggunakan format COCO.
TLDR; Untuk langsung melihat cara menjalankan pipeline lengkap pada dataset kustom, temukanscripts/matching_cdfsod_pipeline.shbersama dengan contoh skrip dataset CD-FSOD (misalscripts/dior_fish.sh)
0. Siapkan dataset kustom ⛵🐦
Bayangkan kita ingin mendeteksi perahu⛵ dan burung🐦 dalam dataset kustom. Untuk menggunakan metode kami, kita akan membutuhkan:
- Minimal 1 gambar referensi yang sudah dianotasi untuk setiap kelas (yaitu 1 gambar referensi untuk perahu dan 1 gambar referensi untuk burung)
- Beberapa gambar target untuk menemukan instance dari kelas yang diinginkan.
mkdir -p data/my_custom_dataset
python scripts/make_custom_dataset.py
Ini akan membuat dataset khusus dengan struktur folder sebagai berikut:
data/my_custom_dataset/
├── annotations/
│ ├── custom_references.json
│ ├── custom_targets.json
│ └── references_visualisations/
│ ├── bird_1.jpg
│ └── boat_1.jpg
└── images/
├── 429819.jpg
├── 101435.jpg
└── (all target and reference images)
Visualisasi gambar referensi (1-shot):| Gambar Referensi 1-shot untuk BURUNG 🐦 | Gambar Referensi 1-shot untuk PERAHU ⛵ |
|:---------------------------------------:|:--------------------------------------:|
| |
|
0.1 Jika hanya anotasi bbox yang tersedia
Kami juga menyediakan skrip untuk menghasilkan mask segmentasi tingkat instansi dengan menggunakan SAM2. Ini berguna jika Anda hanya memiliki anotasi bounding box untuk gambar referensi.
# Download sam_h checkpoint. Feel free to use more recent checkpoints (note: code might need to be adapted)
wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth -O checkpoints/sam_vit_h_4b8939.pth
Run automatic instance segmentation from ground truth bounding boxes.
python no_time_to_train/dataset/sam_bbox_to_segm_batch.py \
--input_json data/my_custom_dataset/annotations/custom_references.json \
--image_dir data/my_custom_dataset/images \
--sam_checkpoint checkpoints/sam_vit_h_4b8939.pth \
--model_type vit_h \
--device cuda \
--batch_size 8 \
--visualize
Gambar referensi dengan masker segmentasi tingkat instansi (dihasilkan oleh SAM2 dari kotak pembatas gt, 1-shot):Visualisasi dari masker segmentasi yang dihasilkan disimpan di data/my_custom_dataset/annotations/custom_references_with_SAM_segm/references_visualisations/.
| Gambar Referensi 1-shot untuk BURUNG 🐦 (disegmentasi otomatis dengan SAM) | Gambar Referensi 1-shot untuk PERAHU ⛵ (disegmentasi otomatis dengan SAM) |
|:---------------------------------:|:----------------------------------:|
| |
|
0.2 Konversi anotasi coco ke file pickle
python no_time_to_train/dataset/coco_to_pkl.py \
data/my_custom_dataset/annotations/custom_references_with_segm.json \
data/my_custom_dataset/annotations/custom_references_with_segm.pkl \
1
1. Mengisi memori dengan referensi
Pertama, definisikan variabel yang diperlukan dan buat folder untuk hasil. Untuk visualisasi label yang benar, nama kelas harus diurutkan berdasarkan id kategori seperti yang muncul di file json. Misalnya, bird memiliki id kategori 16, boat memiliki id kategori 9. Jadi, CAT_NAMES=boat,bird.
DATASET_NAME=my_custom_dataset
DATASET_PATH=data/my_custom_dataset
CAT_NAMES=boat,bird
CATEGORY_NUM=2
SHOT=1
YAML_PATH=no_time_to_train/pl_configs/matching_cdfsod_template.yaml
PATH_TO_SAVE_CKPTS=./tmp_ckpts/my_custom_dataset
mkdir -p $PATH_TO_SAVE_CKPTS
Jalankan langkah 1:python run_lightening.py test --config $YAML_PATH \
--model.test_mode fill_memory \
--out_path $PATH_TO_SAVE_CKPTS/$DATASET_NAME\_$SHOT\_refs_memory.pth \
--model.init_args.dataset_cfgs.fill_memory.root $DATASET_PATH/images \
--model.init_args.dataset_cfgs.fill_memory.json_file $DATASET_PATH/annotations/custom_references_with_segm.json \
--model.init_args.dataset_cfgs.fill_memory.memory_pkl $DATASET_PATH/annotations/custom_references_with_segm.pkl \
--model.init_args.dataset_cfgs.fill_memory.memory_length $SHOT \
--model.init_args.dataset_cfgs.fill_memory.cat_names $CAT_NAMES \
--model.init_args.model_cfg.dataset_name $DATASET_NAME \
--model.init_args.model_cfg.memory_bank_cfg.length $SHOT \
--model.init_args.model_cfg.memory_bank_cfg.category_num $CATEGORY_NUM \
--trainer.devices 1
2. Bank memori pasca-proses
python run_lightening.py test --config $YAML_PATH \
--model.test_mode postprocess_memory \
--ckpt_path $PATH_TO_SAVE_CKPTS/$DATASET_NAME\_$SHOT\_refs_memory.pth \
--out_path $PATH_TO_SAVE_CKPTS/$DATASET_NAME\_$SHOT\_refs_memory_postprocessed.pth \
--model.init_args.model_cfg.dataset_name $DATASET_NAME \
--model.init_args.model_cfg.memory_bank_cfg.length $SHOT \
--model.init_args.model_cfg.memory_bank_cfg.category_num $CATEGORY_NUM \
--trainer.devices 1#### 2.1 Visualisasikan bank memori yang telah diproses pasca
python run_lightening.py test --config $YAML_PATH \
--model.test_mode vis_memory \
--ckpt_path $PATH_TO_SAVE_CKPTS/$DATASET_NAME\_$SHOT\_refs_memory_postprocessed.pth \
--model.init_args.dataset_cfgs.fill_memory.root $DATASET_PATH/images \
--model.init_args.dataset_cfgs.fill_memory.json_file $DATASET_PATH/annotations/custom_references_with_segm.json \
--model.init_args.dataset_cfgs.fill_memory.memory_pkl $DATASET_PATH/annotations/custom_references_with_segm.pkl \
--model.init_args.dataset_cfgs.fill_memory.memory_length $SHOT \
--model.init_args.dataset_cfgs.fill_memory.cat_names $CAT_NAMES \
--model.init_args.model_cfg.dataset_name $DATASET_NAME \
--model.init_args.model_cfg.memory_bank_cfg.length $SHOT \
--model.init_args.model_cfg.memory_bank_cfg.category_num $CATEGORY_NUM \
--trainer.devices 1
Visualisasi PCA dan K-means untuk gambar memory bank disimpan di results_analysis/memory_vis/my_custom_dataset.3. Inferensi pada gambar target
Jika ONLINE_VIS disetel ke True, hasil prediksi akan disimpan di results_analysis/my_custom_dataset/ dan ditampilkan saat dihitung. PERHATIKAN bahwa menjalankan dengan visualisasi online jauh lebih lambat.
Silakan ubah ambang skor VIS_THR untuk melihat lebih banyak atau lebih sedikit instance yang tersegmentasi.
ONLINE_VIS=True
VIS_THR=0.4
python run_lightening.py test --config $YAML_PATH \
--model.test_mode test \
--ckpt_path $PATH_TO_SAVE_CKPTS/$DATASET_NAME\_$SHOT\_refs_memory_postprocessed.pth \
--model.init_args.model_cfg.dataset_name $DATASET_NAME \
--model.init_args.model_cfg.memory_bank_cfg.length $SHOT \
--model.init_args.model_cfg.memory_bank_cfg.category_num $CATEGORY_NUM \
--model.init_args.model_cfg.test.imgs_path $DATASET_PATH/images \
--model.init_args.model_cfg.test.online_vis $ONLINE_VIS \
--model.init_args.model_cfg.test.vis_thr $VIS_THR \
--model.init_args.dataset_cfgs.test.root $DATASET_PATH/images \
--model.init_args.dataset_cfgs.test.json_file $DATASET_PATH/annotations/custom_targets.json \
--model.init_args.dataset_cfgs.test.cat_names $CAT_NAMES \
--trainer.devices 1
Hasil
Metode pengukuran kinerja (dengan parameter yang sama persis seperti perintah di atas) seharusnya:
BBOX RESULTS:
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.478SEGM RESULTS:
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.458
Hasil visual disimpan di results_analysis/my_custom_dataset/. Perhatikan bahwa metode kami bekerja untuk false negatives, yaitu gambar yang tidak mengandung instance dari kelas yang diinginkan.
Klik gambar untuk memperbesar ⬇️
| Gambar target dengan perahu ⛵ (kiri GT, kanan prediksi) | Gambar target dengan burung 🐦 (kiri GT, kanan prediksi) |
|:----------------------:|:----------------------:|
| |
|
| Gambar target dengan perahu dan burung ⛵🐦 (kiri GT, kanan prediksi) | Gambar target tanpa perahu atau burung 🚫 (kiri GT, kanan prediksi) |
|:---------------------------------:|:----------------------------------:|
| |
|
🔬 Ablasi
Ablasi backbone
Untuk mengevaluasi transferabilitas metode kami di berbagai foundation model, kami mengganti baik encoder semantik (DINOv2) maupun segmenter berbasis SAM dengan beberapa alternatif.
Ablasi encoder semantik:
# CLIP (Sizes: b16, b32, l14, l14@336px)
bash scripts/clip/clipl14@336px.sh
bash scripts/clip/clipl14.sh
bash scripts/clip/clipb16.sh
bash scripts/clip/clipb32.shDINOV3 (Sizes: b, l, h)
bash scripts/dinov3/dinov3b.sh
bash scripts/dinov3/dinov3l.sh
bash scripts/dinov3/dinov3h.shPE (Sizes: g14, l14)
bash scripts/pe/PEg14.sh
bash scripts/pe/PEl14.shAblasi segmenter:
# SAM2 (Sizes: tiny, small, base+, large)
bash scripts/sam2/sam2_tiny.sh
bash scripts/sam2/sam2_small.sh
bash scripts/sam2/sam2_base_plus.sh
bash scripts/baseline/dinov2_sam_baseline.sh # SAM2 LargeEvaluasi VLM pada dataset few-shot COCO
Kami mengevaluasi QWEN VLM pada dataset few-shot COCO.
bash scripts/vl-qwen/ablation-vl-qwen.shHeuristik gambar referensi
Untuk memahami mengapa gambar referensi yang berbeda menyebabkan variasi performa, kami menganalisis properti statistik anotasi kelas baru COCO.
#### ANALISIS
Kami mempelajari tiga karakteristik anotasi: (1) luas mask (ukuran objek), (2) lokasi pusat mask, dan (3) jarak ke tepi gambar.
Instruksi:
# Mask area distribution
python no_time_to_train/make_plots/mask_area_distribution.py \
--input data/coco/annotations/instances_val2017.json \
--output no_time_to_train/make_plots/mask_area_distribution/mask_area_distribution.png \
--edges-output no_time_to_train/make_plots/mask_area_distribution/bbox_edge_distance_histograms.png \
--center-output no_time_to_train/make_plots/mask_area_distribution/bbox_center_density.png \
--bins 80 \
--distance-bins 80 \
--disable-center-densityBbox center positions
python no_time_to_train/make_plots/bbox_positions.py \
--per-class-root data/coco/annotations/per_class_instances \
--filename centeredness_2d_hist_plain.png \
--max-cols 6 \
--output-dir ./no_time_to_train/make_plots/bbox_positions \
--outfile grid_bbox_positions.png
[OUTPUT] Distribusi area mask
[OUTPUT] Densitas pusat Bbox
[OUTPUT] Histogram jarak tepi Bbox
#### SELEKSI
Kami mengambil sampel 100 gambar referensi yang beragam per kelas, secara eksplisit mencakup berbagai ukuran mask, pusat, dan jarak tepi. Setiap referensi dievaluasi pada subset validasi yang telah dikurangi secara tetap.
Instruksi:
Script setup: scripts/1shot_ref_ablation/setup.sh:
- Membuat file json per kelas
- Menganalisis kelas tertentu
- Membuat set referensi dengan berbagai heuristik
bash scripts/1shot_ref_ablation/setup.shJalankan skrip: scripts/1shot_ref_ablation/gpu*.sh:
- Jalankan pipeline untuk setiap set referensi
# Example launch script that calls template script for each reference set
bash scripts/1shot_ref_ablation/gpu0.sh#### HASIL
Kami menganalisis bagaimana skor deteksi berkorelasi dengan karakteristik gambar referensi (ukuran masker, posisi tengah, jarak tepi).
Instruksi:
python no_time_to_train/make_plots/heuristics_analysis.py
Outputs:
- no_time_to_train/make_plots/heuristics_analysis/heatmap_bbox_norm_scores.png
- no_time_to_train/make_plots/heuristics_analysis/heatmap_segm_norm_scores.png
- no_time_to_train/make_plots/heuristics_analysis/heatmap_center_bbox_norm_scores_kde_smooth.png
- no_time_to_train/make_plots/heuristics_analysis/heatmap_center_bbox_norm_scores.png
- no_time_to_train/make_plots/heuristics_analysis/heatmap_center_segm_norm_scores_kde_smooth.png
- no_time_to_train/make_plots/heuristics_analysis/heatmap_center_segm_norm_scores.png
- no_time_to_train/make_plots/heuristics_analysis/per_class_area_vs_raw_scores.png
- no_time_to_train/make_plots/heuristics_analysis/all_classes_area_vs_norm_scores.png
- no_time_to_train/make_plots/heuristics_analysis/edge_distance_vs_norm_scores.png
- no_time_to_train/make_plots/heuristics_analysis/bars_area_category_norm_scores.png
- no_time_to_train/make_plots/heuristics_analysis/bars_centered_norm_scores.png
- no_time_to_train/make_plots/heuristics_analysis/bars_avoid_sides_norm_scores.png
[OUTPUT] Barplot. Efek luas masker (kiri) dan keterpusatan (kanan) terhadap performa
[OUTPUT] Heatmap. Peta skor 2D performa sebagai fungsi lokasi pusat masker
[OUTPUT] Performa gambar referensi vs. luas masker untuk semua kelas baru COCO
Degradasi gambar referensi
Kami mengevaluasi metode kami pada gambar referensi yang semakin terdegradasi dengan menerapkan tingkat blur Gaussian yang meningkat.
Instruksi:
# Run different blur levels
bash scripts/blur_ablation/blur_ablation.shPlot grid of blur ablation results
python no_time_to_train/make_plots/plot_blur_results.py \
--results-root ./work_dirs/blur_ablation \
--class-id 0 \
--max-cols 4 \
--output-dir ./no_time_to_train/make_plots/blur_ablation \
--outfile grid_blur_ablation_class_0.png
Kemiripan fitur
Skrip untuk memvisualisasikan kemiripan fitur antara gambar referensi dan gambar target.
Ini menghasilkan kemiripan fitur tunggal (fitur jalur), dan kemiripan berbasis prototipe (fitur yang digabungkan).
Instruksi:
python no_time_to_train/make_plots/feature_similarity.py \
--classes orange \
--num-images 20 \
--min-area 12 \
--max-area 25000 \
--min-instances 2 \
--seed 123 \
--max-per-class 12
Plot t-SNE (Keterpisahan fitur DINOv2)
t-SNE dari fitur DINOv2 menunjukkan pemisahan yang jelas untuk kelas yang tidak mirip
tetapi tumpang tindih yang berat untuk kelas yang mirip, mengindikasikan bahwa kebingungan berasal dari
geometri fitur backbone daripada pemilihan prototipe.
Instruksi:
Ekstrak fitur
python no_time_to_train/make_plots/tsne-coco.py --extractPlotkan grafik T-SNE
# Example spoon vs fork
python no_time_to_train/make_plots/tsne-coco.py --classes cat dog🛠️ Pembantu
Visualisasi memori
tambahkan gambar feature_comparison_small.png di sini
Instruksi
Untuk memvisualisasikan bank memori (visualisasi PCA dan K-means) untuk sebuah eksperimen, sesuaikan perintah berikut.
Setel DO_NOT_CROP ke True/False (di no_time_to_train/models/Sam2MatchingBaseline_noAMG.py) untuk memvisualisasikan gambar referensi dengan/tanpa masker yang dipotong.
python run_lightening.py test --config $CONFIG \
--model.test_mode vis_memory \
--ckpt_path $RESULTS_DIR/memory_postprocessed.ckpt \
--model.init_args.dataset_cfgs.fill_memory.memory_pkl $RESULTS_DIR/$FILENAME \
--model.init_args.dataset_cfgs.fill_memory.memory_length $SHOT \
--model.init_args.dataset_cfgs.fill_memory.class_split $CLASS_SPLIT \
--model.init_args.model_cfg.dataset_name $CLASS_SPLIT \
--model.init_args.model_cfg.memory_bank_cfg.length $SHOT \
--model.init_args.model_cfg.memory_bank_cfg.category_num $CATEGORY_NUM \
--trainer.devices 1
Ubah ukuran gambar menjadi 512x512 (buat gambar menjadi persegi)
Untuk mengubah ukuran gambar menjadi 512x512 dan menyimpannya ke direktori baru, jalankan perintah berikut. Ini untuk gambar pada makalah.
Instruksi:
python no_time_to_train/make_plots/paper_fig_square_imgs.py
Ukuran model dan memori
Untuk menghitung ukuran model dan memori, jalankan perintah berikut.
Instruksi:
- Lihat
no_time_to_train/models/Sam2MatchingBaseline_noAMG_model_and_memory.pyuntuk perhitungan ukuran model dan memori.
🌍 Dataset EO
Skrip evaluasi (dataset EO)
Skrip evaluasi dapat ditemukan di direktori scripts/EO. Dataset EO menggunakan skrip ./scripts/EO/EO_template.sh untuk menjalankan evaluasi.
Setiap percobaan EO disimpan di direktori ./EO_results. Di folder percobaan kami menyimpan:
- File summary.txt dengan konfigurasi dan waktu pelaksanaan percobaan.
- Visualisasi prediksi pada set pengujian (folder
results_analysis). - Visualisasi memori (folder
memory_vis). - File pickle anotasi few-shot.
- Checkpoint model (jika tidak dibersihkan).
Gambar dan tabel
Skrip tambahan untuk membuat gambar dan tabel.Tabel latex ringkasan dataset EO:
python scripts/convert_datasets/summary_table_datasets.py
Hasilkan tabel LaTeX dari dataset EO:
python scripts/paper_figures/table_EO_results.py ./EO_results_no_heuristics
Plot akurasi dari dataset EO:
python scripts/paper_figures/plot_EO_accuracy.py \
--input-root ./EO_results \
--output-root ./EO_resultsRingkasan efek heuristik pada dataset EO:
python scripts/paper_figures/plot_EO_heuristic.py \
--no-heuristics ./EO_results_no_heuristics \
--heuristics ./EO_resultsPlot runtime dari dataset EO:
python scripts/paper_figures/plot_EO_runtime.py \
--input-root ./EO_results \
--output-root ./EO_resultsHasilkan visualisasi grid EO untuk gambar pada makalah:
python scripts/paper_figures/plot_EO_grid.py \
--root ./EO_results_no_heuristics \
--dataset ISAID \
--shots 1📚 Citation
If you use this work, please cite us:
@article{espinosa2025notimetotrain,
title={No time to train! Training-Free Reference-Based Instance Segmentation},
author={Miguel Espinosa and Chenhongyi Yang and Linus Ericsson and Steven McDonagh and Elliot J. Crowley},
journal={arXiv preprint arXiv:2507.02798},
year={2025},
primaryclass={cs.CV}
}--- Tranlated By Open Ai Tx | Last indexed: 2026-03-13 ---