Web Analytics

no-time-to-train

⭐ 292 stars Persian by miquel-espinosa

🌐 زبان

🚀 زمان آموزش ندارم!

تقسیم‌بندی نمونه مبتنی بر مرجع بدون نیاز به آموزش

GitHub Website arXiv

پیشرفته‌ترین روش‌ها (مقالات با کد)

_آخرین دستاورد 1-نمونه‌ای_ | PWC-21CBCE?style=flat&logo=paperswithcode)

_آخرین دستاورد 10-نمونه‌ای_ | PWC-21CBCE?style=flat&logo=paperswithcode)

_آخرین دستاورد 30-نمونه‌ای_ | PWC-21CBCE?style=flat&logo=paperswithcode)


🚨 بروزرسانی (۵ فوریه ۲۰۲۶): نسخه جدید مقاله با مطالعات ابلیشن گسترده، تصویری‌سازی و آزمایش‌های اضافی منتشر شد.
🚨 بروزرسانی (۲۲ ژوئیه ۲۰۲۵): دستورالعمل استفاده از دیتاست‌های سفارشی اضافه شد!
🔔 بروزرسانی (۱۶ ژوئیه ۲۰۲۵): کدها با راهنمای اجرا بروزرسانی شدند!


📋 فهرست مطالب

🎯 نکات برجسته

لینک‌ها:

📜 چکیده

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).

cdfsod-results-final-comic-sans-min

🧠 Architecture

training-free-architecture-comic-sans-min

🛠️ Installation instructions

1. Clone the repository

git clone https://github.com/miquel-espinosa/no-time-to-train.git
cd no-time-to-train

۲. ایجاد محیط conda

ما یک محیط conda با بسته‌های مورد نیاز ایجاد خواهیم کرد.

conda env create -f environment.yml
conda activate no-time-to-train

۳. نصب SAM2 و DINOv2

ما SAM2 و DINOv2 را از منبع نصب خواهیم کرد.

pip install -e .
cd dinov2
pip install -e .
cd ..

4. دانلود دیتاست‌ها

لطفاً دیتاست COCO را دانلود کرده و در مسیر data/coco قرار دهید.

5. دانلود چک‌پوینت‌های SAM2 و DINOv2

ما دقیقاً چک‌پوینت‌های SAM2 استفاده‌شده در مقاله را دانلود خواهیم کرد. (توجه داشته باشید که چک‌پوینت‌های SAM2.1 در حال حاضر موجود هستند و ممکن است عملکرد بهتری داشته باشند.)

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 ../..

📊 کد استنتاج

⚠️ سلب مسئولیت: این کد پژوهشی است — انتظار کمی بی‌نظمی داشته باشید!

بازتولید نتایج 30-شات SOTA در Few-shot COCO

متغیرهای مفید را تعریف کنید و یک پوشه برای نتایج ایجاد نمایید:

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=4

mkdir -p $RESULTS_DIR FILENAME=few_shot_${SHOTS}shot_seed${SEED}.pkl

#### ۰. ایجاد مجموعه مرجع

python no_time_to_train/dataset/few_shot_sampling.py \
        --n-shot $SHOTS \
        --out-path ${RESULTS_DIR}/${FILENAME} \
        --seed $SEED \
        --dataset $CLASS_SPLIT
#### 1. حافظه را با ارجاعات پر کنید

python 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. پردازش پس‌ازآن بانک حافظه

python 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. استنتاج بر روی تصاویر هدف

python 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
اگر مایلید نتایج استنتاج را به صورت آنلاین (همزمان با محاسبه) مشاهده کنید، این آرگومان را اضافه کنید:

    --model.init_args.model_cfg.test.online_vis True
برای تنظیم پارامتر آستانه امتیاز score_thr، آرگومان را اضافه کنید (برای مثال، مشاهده همه نمونه‌هایی با امتیاز بالاتر از 0.4):
    --model.init_args.model_cfg.test.vis_thr 0.4
تصاویر اکنون در مسیر results_analysis/few_shot_classes/ ذخیره خواهند شد. تصویر سمت چپ حقیقت زمینی را نشان می‌دهد، تصویر سمت راست نمونه‌های بخش‌بندی‌شده را که توسط روش بدون آموزش ما یافت شده‌اند نشان می‌دهد.

توجه داشته باشید که در این مثال ما از تقسیم‌بندی few_shot_classes استفاده می‌کنیم، بنابراین باید انتظار داشته باشیم فقط نمونه‌های بخش‌بندی‌شده کلاس‌های موجود در این تقسیم‌بندی را ببینیم (نه همه کلاس‌ها در COCO).

#### نتایج

پس از اجرای همه تصاویر مجموعه اعتبارسنجی، باید به موارد زیر دست یابید:

BBOX RESULTS:
  Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.368

SEGM RESULTS: Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.342


🔍 دیتاست سفارشی

ما دستورالعمل‌هایی برای اجرای پایپلاین خود بر روی دیتاست سفارشی ارائه می‌دهیم. فرمت حاشیه‌نویسی همیشه به صورت COCO است.

خلاصه؛ برای مشاهده مستقیم نحوه اجرای کامل پایپلاین بر روی دیتاست‌های سفارشی، فایل scripts/matching_cdfsod_pipeline.sh را به همراه اسکریپت‌های نمونه دیتاست‌های CD-FSOD (مانند scripts/dior_fish.sh) بیابید.

۰. آماده‌سازی دیتاست سفارشی ⛵🐦

فرض کنیم می‌خواهیم قایق‌ها⛵ و پرندگان🐦 را در یک دیتاست سفارشی شناسایی کنیم. برای استفاده از روش ما به موارد زیر نیاز داریم:

ما یک اسکریپت نمونه برای ایجاد یک دیتاست سفارشی با تصاویر coco برای تنظیمات ۱-شات آماده کرده‌ایم.
mkdir -p data/my_custom_dataset
python scripts/make_custom_dataset.py
این کار یک مجموعه داده سفارشی با ساختار پوشه زیر ایجاد خواهد کرد:
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)
بصری‌سازی تصاویر مرجع (۱-نمونه‌ای):

| تصویر مرجع ۱-نمونه‌ای برای پرنده 🐦 | تصویر مرجع ۱-نمونه‌ای برای قایق ⛵ | |:---------------------------------:|:----------------------------------:| | bird_1 | boat_1 |

۰.۱ اگر تنها نشانه‌گذاری‌های bbox موجود باشد

ما همچنین یک اسکریپت برای تولید ماسک‌های بخش‌بندی سطح نمونه با استفاده از SAM2 ارائه می‌دهیم. این ابزار زمانی مفید است که تنها نشانه‌گذاری‌های جعبه محاطی برای تصاویر مرجع در اختیار داشته باشید.

# 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
تصاویر مرجع با ماسک‌های سگمنتیشن در سطح نمونه (تولید شده توسط SAM2 از جعبه‌های مرجع واقعیت، 1-شات):

تصاویر بصری از ماسک‌های سگمنتیشن تولید شده در مسیر data/my_custom_dataset/annotations/custom_references_with_SAM_segm/references_visualisations/ ذخیره شده‌اند.

| تصویر مرجع 1-شات برای پرنده 🐦 (سگمنت شده به طور خودکار با SAM) | تصویر مرجع 1-شات برای قایق ⛵ (سگمنت شده به طور خودکار با SAM) | |:---------------------------------:|:----------------------------------:| | bird_1_with_SAM_segm | boat_1_with_SAM_segm |

۰.۲ تبدیل حاشیه‌نویسی‌های coco به فایل 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. حافظه را با ارجاعات پر کنید

ابتدا متغیرهای مفید را تعریف کرده و یک پوشه برای نتایج ایجاد کنید. برای نمایش صحیح برچسب‌ها، نام کلاس‌ها باید بر اساس شناسه دسته‌بندی به همان ترتیبی که در فایل json ظاهر می‌شود، مرتب شوند. به عنوان مثال، bird شناسه دسته‌بندی 16 را دارد، boat شناسه دسته‌بندی 9 را دارد. بنابراین، 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
مرحله 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. بانک حافظه پس‌پردازش

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

#### ۲.۱ تجسم بانک حافظه پس‌پردازش‌شده

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
تجسم‌های PCA و K-means برای تصاویر بانک حافظه در مسیر results_analysis/memory_vis/my_custom_dataset ذخیره می‌شوند.

۳. استنتاج روی تصاویر هدف

اگر مقدار ONLINE_VIS برابر با True باشد، نتایج پیش‌بینی در مسیر results_analysis/my_custom_dataset/ ذخیره شده و هنگام محاسبه نمایش داده می‌شوند. توجه داشته باشید که اجرای این گزینه با تجسم آنلاین بسیار کندتر است.

می‌توانید آستانه امتیاز VIS_THR را تغییر دهید تا نمونه‌های قطعه‌بندی‌شده بیشتری یا کمتری را مشاهده کنید.

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

نتایج

شاخص‌های عملکرد (با دقیقاً همان پارامترهای دستورات بالا) باید به شرح زیر باشند:

BBOX RESULTS:
  Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.478

SEGM RESULTS: Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.458

نتایج تصویری در مسیر results_analysis/my_custom_dataset/ ذخیره می‌شوند. توجه داشته باشید که روش ما برای نمونه‌های منفی کاذب نیز کار می‌کند، یعنی تصاویری که هیچ نمونه‌ای از کلاس‌های مورد نظر ندارند.

برای بزرگ‌نمایی تصاویر کلیک کنید ⬇️

| تصویر هدف با قایق‌ها ⛵ (سمت چپ GT، سمت راست پیش‌بینی‌ها) | تصویر هدف با پرندگان 🐦 (سمت چپ GT، سمت راست پیش‌بینی‌ها) | |:----------------------:|:----------------------:| | 000000459673 | 000000407180 |

| تصویر هدف با قایق و پرنده ⛵🐦 (سمت چپ GT، سمت راست پیش‌بینی‌ها) | تصویر هدف بدون قایق یا پرنده 🚫 (سمت چپ GT، سمت راست پیش‌بینی‌ها) | |:---------------------------------:|:----------------------------------:| | 000000517410 | 000000460598 |

🔬 مطالعات ابلیشن

ابلیشن بک‌بون

برای ارزیابی انتقال‌پذیری روش ما بین مدل‌های فوندیشن، هم رمزگذار معنایی (DINOv2) و هم سگمنتر مبتنی بر SAM را با چند جایگزین دیگر تعویض می‌کنیم.

ابلیشن رمزگذار معنایی:

# 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.sh

DINOV3 (Sizes: b, l, h)

bash scripts/dinov3/dinov3b.sh bash scripts/dinov3/dinov3l.sh bash scripts/dinov3/dinov3h.sh

PE (Sizes: g14, l14)

bash scripts/pe/PEg14.sh bash scripts/pe/PEl14.sh

تحلیل حذف بخش‌بندی‌کننده:

# 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 Large

ارزیابی VLM بر روی مجموعه داده COCO با نمونه‌های محدود

ما QWEN VLM را بر روی مجموعه داده COCO با نمونه‌های محدود ارزیابی می‌کنیم.

bash scripts/vl-qwen/ablation-vl-qwen.sh

راهکارهای مبتنی بر تصویر مرجع

برای درک اینکه چرا تصاویر مرجع مختلف منجر به تغییر عملکرد می‌شوند، ویژگی‌های آماری برچسب‌های کلاس‌های جدید COCO را تحلیل می‌کنیم.

#### تحلیل

سه ویژگی برچسب‌گذاری را بررسی می‌کنیم: (1) مساحت ماسک (اندازه شیء)، (2) موقعیت مرکز ماسک، و (3) فاصله تا لبه‌های تصویر.

دستورالعمل‌ها:

# 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-density

Bbox 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

[خروجی] توزیع مساحت ماسک mask_area_distribution

[خروجی] چگالی مرکز Bbox grid_bbox_positions

[خروجی] هیستوگرام فاصله لبه Bbox bbox_edge_distance_histograms

#### انتخاب

ما ۱۰۰ تصویر مرجع متنوع برای هر کلاس نمونه‌گیری می‌کنیم که به طور صریح دامنه‌ای از اندازه‌های ماسک، مراکز و فاصله‌های لبه را پوشش می‌دهند. هر مرجع روی یک زیرمجموعه اعتبارسنجی کاهش‌یافته ثابت ارزیابی می‌شود.

دستورالعمل‌ها:

اسکریپت راه‌اندازی: scripts/1shot_ref_ablation/setup.sh:

  • ایجاد فایل json برای هر کلاس
  • تحلیل کلاس خاص
  • ایجاد مجموعه مرجع با روش‌های مختلف هوشمندانه
bash scripts/1shot_ref_ablation/setup.sh

اجرای اسکریپت‌ها: scripts/1shot_ref_ablation/gpu*.sh:

  • اجرای پایپ‌لاین برای هر مجموعه مرجع
# Example launch script that calls template script for each reference set
bash scripts/1shot_ref_ablation/gpu0.sh

#### نتایج

ما بررسی می‌کنیم که چگونه امتیازهای شناسایی با ویژگی‌های تصویر مرجع (اندازه ماسک، موقعیت مرکز، فاصله تا لبه) همبستگی دارند.

دستورالعمل‌ها:

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

[خروجی] نمودارهای میله‌ای. تأثیر مساحت ماسک (چپ) و مرکزیت (راست) بر عملکرد barplot

[خروجی] نقشه‌های حرارتی. نقشه‌های امتیاز دوبعدی عملکرد به عنوان تابعی از مکان مرکز ماسک heatmap

[خروجی] عملکرد تصویر مرجع در مقابل مساحت ماسک برای تمام کلاس‌های جدید COCO class_performance

تخریب تصویر مرجع

ما روش خود را تحت تصاویر مرجع با کیفیت فزاینده پایین‌تر با اعمال سطوح بالاتر تاری گاوسی ارزیابی می‌کنیم. ablation-blur

دستورالعمل‌ها:

# Run different blur levels
bash scripts/blur_ablation/blur_ablation.sh

Plot 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

شباهت ویژگی

اسکریپتی برای نمایش شباهت ویژگی‌ها بین تصاویر مرجع و تصاویر هدف.

این اسکریپت شباهت تک‌ویژگی (ویژگی‌های مسیر) و شباهت مبتنی بر نمونه اولیه (ویژگی‌های تجمیع‌شده) را تولید می‌کند. feature_similarity_small

دستورالعمل‌ها:

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 (جداسازی ویژگی‌های DINOv2)

t-SNE ویژگی‌های DINOv2 جداسازی واضحی برای کلاس‌های نامشابه نشان می‌دهد اما همپوشانی زیادی برای کلاس‌های مشابه وجود دارد، که نشان می‌دهد سردرگمی از هندسه ویژگی‌های بک‌بون ناشی می‌شود نه از انتخاب پروتوتایپ‌ها. tsne

دستورالعمل‌ها:

استخراج ویژگی‌ها

python no_time_to_train/make_plots/tsne-coco.py --extract

نمودارهای T-SNE را رسم کنید

# Example spoon vs fork
python no_time_to_train/make_plots/tsne-coco.py --classes cat dog

🛠️ ابزارها

نمایش حافظه

تصویر feature_comparison_small.png را اینجا اضافه کنید

دستورالعمل‌ها

برای نمایش بانک حافظه (تصویرسازی‌های PCA و K-means) برای یک آزمایش خاص، فرمان زیر را تنظیم کنید.

مقدار DO_NOT_CROP را به True/False در فایل (no_time_to_train/models/Sam2MatchingBaseline_noAMG.py) تغییر دهید تا تصویر مرجع را با یا بدون ماسک برش‌خورده نمایش دهید.

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

تغییر اندازه تصاویر به 512x512 (تبدیل تصاویر به مربع)

برای تغییر اندازه تصاویر به 512x512 و ذخیره آن‌ها در یک پوشه جدید، دستور زیر را اجرا کنید. این برای شکل‌های مقاله است.

دستورالعمل‌ها:

python no_time_to_train/make_plots/paper_fig_square_imgs.py

اندازه مدل و حافظه

برای محاسبه اندازه مدل و حافظه، دستور زیر را اجرا کنید.

دستورالعمل‌ها:

  • به فایل no_time_to_train/models/Sam2MatchingBaseline_noAMG_model_and_memory.py برای محاسبه اندازه مدل و حافظه مراجعه کنید.
(ساده‌ترین راه: موقتا با Sam2MatchingBaseline_noAMG.py جایگزین کنید، سپس دوباره نام‌گذاری کنید.)

🌍 داده‌مجموعه‌های EO

اسکریپت‌های ارزیابی (داده‌مجموعه‌های EO)

اسکریپت‌های ارزیابی در دایرکتوری scripts/EO قرار دارند. داده‌مجموعه‌های EO از اسکریپت ./scripts/EO/EO_template.sh برای اجرای ارزیابی استفاده می‌کنند.

هر اجرای آزمایش EO در دایرکتوری ./EO_results ذخیره می‌شود. در پوشه آزمایش موارد زیر را ذخیره می‌کنیم:

شکل‌ها و جداول

اسکریپت‌های اضافی برای تولید شکل‌ها و جداول.

جدول لاتکس خلاصه داده‌مجموعه‌های EO:

python scripts/convert_datasets/summary_table_datasets.py

جدول LaTeX مجموعه داده‌های EO را تولید کنید:

python scripts/paper_figures/table_EO_results.py ./EO_results_no_heuristics

نمودار دقت مجموعه داده‌های EO:

python scripts/paper_figures/plot_EO_accuracy.py \
  --input-root ./EO_results \
  --output-root ./EO_results

<جزئیات> <خلاصه>خلاصه‌ای از تأثیر روش‌های ابتکاری بر مجموعه داده‌های EO:

python scripts/paper_figures/plot_EO_heuristic.py \
  --no-heuristics ./EO_results_no_heuristics \
  --heuristics ./EO_results

نمودار زمان اجرا برای مجموعه داده‌های EO:

python scripts/paper_figures/plot_EO_runtime.py \
  --input-root ./EO_results \
  --output-root ./EO_results

تولید تصاویر شبکه EO برای شکل مقاله:

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 ---