🚀 Eğitime Zaman Yok!
Eğitimsiz Referans Tabanlı Nesne Segmentasyonu
En Son Teknoloji (Papers with Code)
_SOTA 1-shot_ | -21CBCE?style=flat&logo=paperswithcode)
🚨 Güncelleme (5 Şubat 2026): Makale el yazması kapsamlı ablation çalışmaları, görselleştirmeler ve ek deneylerle güncellendi.
🚨 Güncelleme (22 Temmuz 2025): Özel veri setleri için talimatlar eklendi!
🔔 Güncelleme (16 Temmuz 2025): Kod, talimatlarla birlikte güncellendi!
📋 İçindekiler
- 🎯 Öne Çıkanlar
- 📜 Özet
- 🧠 Mimari
- 🛠️ Kurulum talimatları
- 1. Depoyu klonlayın
- 2. Conda ortamı oluşturun
- 3. SAM2 ve DINOv2'yi yükleyin
- 4. Veri setlerini indirin
- 5. SAM2 ve DINOv2 kontrol noktalarını indirin
- 📊 Çıkarım kodu: Few-shot COCO'da 30-shot SOTA sonuçlarını tekrarlayın
- 0. Referans seti oluşturun
- 1. Belleği referanslarla doldurun
- 2. Bellek bankasını sonradan işleyin
- 3. Hedef görüntüler üzerinde çıkarım yapın
- Sonuçlar
- 🔍 Özel veri kümesi
- 0. Özel bir veri kümesi hazırlayın ⛵🐦
- 0.1 Sadece bbox açıklamaları mevcutsa
- 0.2 Coco açıklamalarını pickle dosyasına dönüştürün
- 1. Belleği referanslarla doldurun
- 2. Bellek bankasını sonradan işleyin
- 📚 Atıf
🎯 Öne Çıkanlar
- 💡 Eğitimsiz: İnce ayar yok, prompt mühendisliği yok—sadece bir referans görseli.
- 🖼️ Referans Tabanlı: Sadece birkaç örnekle yeni nesneleri segmentleyin.
- 🔥 SOTA Performansı: COCO, PASCAL VOC ve Cross-Domain FSOD'da önceki eğitimsiz yaklaşımlardan daha iyi performans gösterir.
📜 Özet
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. Conda ortamı oluşturun
Gerekli paketlerle bir conda ortamı oluşturacağız.
conda env create -f environment.yml
conda activate no-time-to-train3. SAM2 ve DINOv2'yi Kurun
SAM2 ve DINOv2'yi kaynaktan kuracağız.
pip install -e .
cd dinov2
pip install -e .
cd ..4. Veri setlerini indirin
Lütfen COCO veri setini indirin ve data/coco klasörüne yerleştirin
5. SAM2 ve DINOv2 kontrol noktalarını indirin
Makalede kullanılan tam SAM2 kontrol noktalarını indireceğiz. (Ancak, SAM2.1 kontrol noktalarının zaten mevcut olduğunu ve daha iyi performans gösterebileceğini unutmayın.)
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 ../..
📊 Çıkarım kodu
⚠️ Uyarı: Bu bir araştırma kodudur — biraz karmaşa bekleyin!
Few-shot COCO'da 30-shot SOTA sonuçlarını çoğaltma
Kullanışlı değişkenleri tanımlayın ve sonuçlar için bir klasör oluşturun:
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. Referans seti oluşturunpython no_time_to_train/dataset/few_shot_sampling.py \
--n-shot $SHOTS \
--out-path ${RESULTS_DIR}/${FILENAME} \
--seed $SEED \
--dataset $CLASS_SPLIT
#### 1. Belleği referanslarla doldurunpython 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. Bellek bankasını sonradan işlemepython 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. Hedef görüntülerde çıkarım yapmapython 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
Eğer çıkarım sonuçlarını çevrimiçi olarak (hesaplandıkça) görmek isterseniz, şu argümanı ekleyin: --model.init_args.model_cfg.test.online_vis True
Puan eşiği score_thr parametresini ayarlamak için, argümanı ekleyin (örneğin, skoru 0.4'ten yüksek olan tüm örnekleri görselleştirmek için):
--model.init_args.model_cfg.test.vis_thr 0.4
Görseller artık results_analysis/few_shot_classes/ klasörüne kaydedilecektir. Soldaki görsel gerçek durumu, sağdaki görsel ise eğitim gerektirmeyen yöntemimizle bulunan bölünmüş örnekleri göstermektedir.Bu örnekte few_shot_classes bölümünü kullandığımızı unutmayın, bu nedenle yalnızca bu bölümdeki sınıfların bölünmüş örneklerini görmeyi beklemeliyiz (COCO’daki tüm sınıfları değil).
#### Sonuçlar
Doğrulama setindeki tüm görselleri çalıştırdıktan sonra şunları elde etmelisiniz:
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
🔍 Özel veri seti
Kendi veri setinizde boru hattımızı çalıştırmak için talimatları sağlıyoruz. Açıklama formatı her zaman COCO formatındadır.
Özetle; Özel veri setlerinde tam boru hattının nasıl çalıştırılacağını doğrudan görmek içinscripts/matching_cdfsod_pipeline.shdosyasına ve CD-FSOD veri setlerinin örnek betiklerine (örn.scripts/dior_fish.sh) bakabilirsiniz.
0. Özel bir veri seti hazırlama ⛵🐦
Diyelim ki özel bir veri setinde tekne⛵ ve kuş🐦 tespiti yapmak istiyoruz. Yöntemimizi kullanmak için şunlara ihtiyacımız olacak:
- Her sınıf için en az 1 etiketlenmiş referans görseli (yani tekne için 1 referans görseli ve kuş için 1 referans görseli)
- İstediğimiz sınıfların örneklerini bulmak için birden fazla hedef görsel.
mkdir -p data/my_custom_dataset
python scripts/make_custom_dataset.py
Bu, aşağıdaki klasör yapısına sahip özel bir veri kümesi oluşturacaktır:
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)
Referans görsellerin görselleştirilmesi (1-atış):| KUŞ 🐦 için 1-atış Referans Görseli | TEKNE ⛵ için 1-atış Referans Görseli |
|:----------------------------------:|:------------------------------------:|
| |
|
0.1 Sadece bbox anotasyonları mevcutsa
Yalnızca referans görseller için sınırlayıcı kutu (bbox) anotasyonlarınız varsa, SAM2 kullanarak örnek düzeyinde segmentasyon maskeleri oluşturmak için de bir betik sağlıyoruz. Bu, yalnızca sınırlayıcı kutu anotasyonları mevcutsa faydalıdır.
# 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
Örnek düzeyinde segmentasyon maskeleriyle referans görüntüler (gt bounding box'lardan SAM2 ile oluşturuldu, 1-shot):Oluşturulan segmentasyon maskelerinin görselleştirmeleri data/my_custom_dataset/annotations/custom_references_with_SAM_segm/references_visualisations/ dizininde kaydedilmiştir.
| KUŞ 🐦 için 1-shot Referans Görüntüsü (SAM ile otomatik segmentasyonlu) | TEKNE ⛵ için 1-shot Referans Görüntüsü (SAM ile otomatik segmentasyonlu) |
|:---------------------------------:|:----------------------------------:|
| |
|
0.2 Coco açıklamalarını pickle dosyasına dönüştür
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. Belleği referanslarla doldurun
Öncelikle, kullanışlı değişkenler tanımlayın ve sonuçlar için bir klasör oluşturun. Etiketlerin doğru görselleştirilmesi için, sınıf isimleri json dosyasında göründüğü gibi kategori kimliğine göre sıralanmalıdır. Örneğin, bird kategori kimliği 16, boat ise kategori kimliği 9'dur. Bu nedenle, 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
Adım 1'i çalıştırın: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. Bellek bankasını sonradan işleme
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 İşlenmiş bellek bankasını görselleştir
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
Bellek bankası görüntüleri için PCA ve K-means görselleştirmeleri results_analysis/memory_vis/my_custom_dataset klasöründe saklanır.3. Hedef görüntülerde çıkarım
Eğer ONLINE_VIS True olarak ayarlanırsa, tahmin sonuçları results_analysis/my_custom_dataset/ klasörüne kaydedilir ve hesaplandıkça görüntülenir. ONLINE görselleştirme ile çalışmanın çok daha yavaş olduğunu UNUTMAYIN.
Daha fazla veya daha az segmentlenmiş örnek görmek için skor eşiği olan VIS_THR değerini istediğiniz gibi değiştirebilirsiniz.
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
Sonuçlar
Performans metrikleri (yukarıdaki komutlarla tamamen aynı parametrelerle) şu şekilde olmalıdır:
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
Görsel sonuçlar results_analysis/my_custom_dataset/ klasörüne kaydedilir. Yöntemimizin yanlış negatifler üzerinde çalıştığını unutmayın; yani, istenen sınıflardan hiçbir örnek içermeyen görüntülerde de çalışır.Görüntüleri büyütmek için tıklayın ⬇️
| Botlu hedef görüntü ⛵ (sol GT, sağ tahminler) | Kuşlu hedef görüntü 🐦 (sol GT, sağ tahminler) |
|:----------------------:|:----------------------:|
| |
|
| Botlu ve kuşlu hedef görüntü ⛵🐦 (sol GT, sağ tahminler) | Botsuz ve kuşsuz hedef görüntü 🚫 (sol GT, sağ tahminler) |
|:---------------------------------:|:----------------------------------:|
| |
|
🔬 Ablasyonlar
Omurga (Backbone) ablasyonu
Yöntemimizin temel modeller arasında aktarılabilirliğini değerlendirmek için hem anlamsal kodlayıcıyı (DINOv2) hem de SAM tabanlı segmentleyiciyi çeşitli alternatiflerle değiştirdik.
Anlamsal kodlayıcı ablasyonu:
# 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.shSegmentleyici ablation:
# 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 LargeCOCO birkaç örnekli veri setinde VLM değerlendirmesi
QWEN VLM'yi COCO birkaç örnekli veri setinde değerlendiriyoruz.
bash scripts/vl-qwen/ablation-vl-qwen.shReferans görüntü sezgisel yöntemleri
Farklı referans görüntülerinin neden performans değişikliğine yol açtığını anlamak için, COCO yeni sınıf ek açıklamalarının istatistiksel özelliklerini analiz ediyoruz.
#### ANALİZ
Üç ek açıklama özelliğini inceliyoruz: (1) maske alanı (nesne boyutu), (2) maske merkez konumu ve (3) görüntü kenarlarına olan mesafe.
Talimatlar:
# 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
[ÇIKTI] Maske alanı dağılımı
[ÇIKTI] Bbox merkez yoğunluğu
[ÇIKTI] Bbox kenar mesafe histogramları
#### SEÇİM
Her sınıf için 100 çeşitli referans görüntüsü örnekliyoruz, özellikle maske boyutları, merkezleri ve kenar mesafeleri aralığını kapsıyoruz. Her referans sabit bir azaltılmış doğrulama alt kümesi üzerinde değerlendiriliyor.
Talimatlar:
Kurulum betiği: scripts/1shot_ref_ablation/setup.sh:
- Sınıf başına json dosyası oluştur
- Belirli sınıfı analiz et
- Farklı sezgilerle referans seti oluştur
bash scripts/1shot_ref_ablation/setup.shBetikleri çalıştırın: scripts/1shot_ref_ablation/gpu*.sh:
- Her referans seti için boru hattını çalıştırın
# Example launch script that calls template script for each reference set
bash scripts/1shot_ref_ablation/gpu0.sh#### SONUÇLAR
Tespit skorlarının referans görüntü özellikleriyle (maske boyutu, merkez pozisyonu, kenar mesafesi) nasıl ilişkili olduğunu analiz ediyoruz.
Talimatlar:
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
[ÇIKTI] Çubuk Grafikler. Maske alanının (sol) ve ortalanmışlığın (sağ) performans üzerindeki etkisi
[ÇIKTI] Isı Haritaları. Performansın maske-merkez konumuna bağlı olarak 2B skor haritaları
[ÇIKTI] Tüm COCO yeni sınıfları için referans-görüntü performansı vs. maske alanı
Referans-görüntü bozulması
Yöntemimizi giderek daha fazla bozulmuş referans görüntüleriyle, artan seviyelerde Gauss bulanıklığı uygulayarak değerlendiriyoruz.
Talimatlar:
# 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Özellik benzerliği
Referans görüntüler ile hedef görüntüler arasındaki özellik benzerliğini görselleştirmek için bir betik.
Tekli özellik benzerliği (yol özellikleri) ve prototip tabanlı benzerlik (toplu özellikler) üretir.
Talimatlar:
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
T-SNE grafikleri (DINOv2 özellik ayrıştırılması)
DINOv2 özelliklerinin t-SNE'si, farklı sınıflar için belirgin bir ayrım gösterirken,
benzer olanlar için yoğun bir örtüşme gösteriyor; bu da karışıklığın,
omurga özellik geometrisinden kaynaklandığını, prototip seçiminin ise daha az etkili olduğunu gösteriyor.
Talimatlar:
Özellikleri çıkar
python no_time_to_train/make_plots/tsne-coco.py --extractT-SNE grafiklerini çiz
# Example spoon vs fork
python no_time_to_train/make_plots/tsne-coco.py --classes cat dog🛠️ Yardımcılar
Belleği Görselleştir
feature_comparison_small.png adlı resmi buraya ekleyin
Talimatlar
Belirli bir deney için bellek bankasını (PCA ve K-means görselleştirmeleri) görselleştirmek üzere aşağıdaki komutu ayarlayın.
Referans görüntüsünü kırpılmış maske ile/maske olmadan görselleştirmek için DO_NOT_CROP'u True/False olarak ayarlayın (no_time_to_train/models/Sam2MatchingBaseline_noAMG.py dosyasında).
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
Görselleri 512x512 boyutuna yeniden boyutlandırın (görüntüleri kare yapın)
Görselleri 512x512 boyutuna yeniden boyutlandırmak ve yeni bir dizine kaydetmek için aşağıdaki komutu çalıştırın. Bu, makale figürleri içindir.
Talimatlar:
python no_time_to_train/make_plots/paper_fig_square_imgs.py
Model boyutu ve bellek
Model boyutunu ve belleği hesaplamak için aşağıdaki komutu çalıştırın.
Talimatlar:
- Model boyutu ve bellek hesaplaması için
no_time_to_train/models/Sam2MatchingBaseline_noAMG_model_and_memory.pydosyasına bakın.
🌍 EO veri setleri
Değerlendirme scriptleri (EO veri setleri)
Değerlendirme scriptleri scripts/EO dizininde bulunabilir. EO veri setleri, değerlendirmeyi çalıştırmak için ./scripts/EO/EO_template.sh scriptini kullanır.
Her EO deney çalışması ./EO_results dizini altında kaydedilir. Deney klasöründe şunları saklarız:
- Deneyin yapılandırması ve çalışma süresi ile birlikte summary.txt dosyası.
- Test setindeki tahmin görselleştirmeleri (
results_analysisklasörü). - Bellek görselleştirmeleri (
memory_visklasörü). - Few-shot anotasyon pickle dosyası.
- Modelin kontrol noktaları (temizlenmediyse).
Şekil ve tablolar
Şekil ve tablo üretmek için ek scriptler.EO veri setlerinin özet latex tablosu:
python scripts/convert_datasets/summary_table_datasets.py
EO veri kümelerinin LaTeX tablosunu oluştur:
python scripts/paper_figures/table_EO_results.py ./EO_results_no_heuristics
EO veri kümelerinin doğruluk grafiği:
python scripts/paper_figures/plot_EO_accuracy.py \
--input-root ./EO_results \
--output-root ./EO_resultsEO veri setleri üzerindeki sezgisel yöntemlerin etkisinin özeti:
python scripts/paper_figures/plot_EO_heuristic.py \
--no-heuristics ./EO_results_no_heuristics \
--heuristics ./EO_resultsEO veri setlerinin çalışma zamanı grafiği:
python scripts/paper_figures/plot_EO_runtime.py \
--input-root ./EO_results \
--output-root ./EO_resultsMakale şekli için EO grid görselleştirmeleri oluşturun:
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 ---