🚀 زمان آموزش ندارم!
تقسیمبندی نمونه مبتنی بر مرجع بدون نیاز به آموزش
پیشرفتهترین روشها (مقالات با کد)
_آخرین دستاورد 1-نمونهای_ | -21CBCE?style=flat&logo=paperswithcode)
_آخرین دستاورد 10-نمونهای_ | -21CBCE?style=flat&logo=paperswithcode)
_آخرین دستاورد 30-نمونهای_ | -21CBCE?style=flat&logo=paperswithcode)
🚨 بروزرسانی (۵ فوریه ۲۰۲۶): نسخه جدید مقاله با مطالعات ابلیشن گسترده، تصویریسازی و آزمایشهای اضافی منتشر شد.
🚨 بروزرسانی (۲۲ ژوئیه ۲۰۲۵): دستورالعمل استفاده از دیتاستهای سفارشی اضافه شد!
🔔 بروزرسانی (۱۶ ژوئیه ۲۰۲۵): کدها با راهنمای اجرا بروزرسانی شدند!
📋 فهرست مطالب
- 🎯 نکات برجسته
- 📜 چکیده
- 🧠 معماری
- 🛠️ دستورالعمل نصب
- 1. کلون کردن مخزن
- 2. ساخت محیط کندا
- 3. نصب SAM2 و DINOv2
- 4. دانلود دیتاستها
- 5. دانلود چکپوینتهای SAM2 و DINOv2
- 📊 کد استنتاج: بازتولید نتایج 30-نمونهای SOTA در COCO نمونهای
- 0. ساخت مجموعه مرجع
- 1. پر کردن حافظه با مراجع
- 2. پردازش پس از بانک حافظه
- 3. استنتاج روی تصاویر هدف
- نتایج
- 🔍 دیتاست سفارشی
- 0. آمادهسازی دیتاست سفارشی ⛵🐦
- 0.1 اگر فقط نشانهگذاری bbox در دسترس باشد
- 0.2 تبدیل نشانهگذاریهای coco به فایل pickle
- 1. پر کردن حافظه با رفرنسها
- 2. پسپردازش بانک حافظه
- 📚 استناد
🎯 نکات برجسته
- 💡 بدون نیاز به آموزش: بدون ریزتنظیم، بدون مهندسی prompt—فقط با یک تصویر مرجع.
- 🖼️ مبتنی بر رفرنس: قطعهبندی اشیاء جدید فقط با چند نمونه.
- 🔥 عملکرد SOTA: عملکرد بهتر از روشهای قبلی بدون آموزش روی COCO، PASCAL VOC و Cross-Domain FSOD.
📜 چکیده
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
۲. ایجاد محیط 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=4mkdir -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.368SEGM 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) بیابید.
۰. آمادهسازی دیتاست سفارشی ⛵🐦
فرض کنیم میخواهیم قایقها⛵ و پرندگان🐦 را در یک دیتاست سفارشی شناسایی کنیم. برای استفاده از روش ما به موارد زیر نیاز داریم:
- حداقل ۱ تصویر مرجع حاشیهنویسیشده برای هر کلاس (یعنی ۱ تصویر مرجع برای قایق و ۱ تصویر مرجع برای پرنده)
- چندین تصویر هدف برای یافتن نمونههای کلاسهای مورد نظر ما.
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)
بصریسازی تصاویر مرجع (۱-نمونهای):| تصویر مرجع ۱-نمونهای برای پرنده 🐦 | تصویر مرجع ۱-نمونهای برای قایق ⛵ |
|:---------------------------------:|:----------------------------------:|
| |
|
۰.۱ اگر تنها نشانهگذاریهای 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) |
|:---------------------------------:|:----------------------------------:|
| |
|
۰.۲ تبدیل حاشیهنویسیهای 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.478SEGM RESULTS:
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.458
نتایج تصویری در مسیر results_analysis/my_custom_dataset/ ذخیره میشوند. توجه داشته باشید که روش ما برای نمونههای منفی کاذب نیز کار میکند، یعنی تصاویری که هیچ نمونهای از کلاسهای مورد نظر ندارند.برای بزرگنمایی تصاویر کلیک کنید ⬇️
| تصویر هدف با قایقها ⛵ (سمت چپ GT، سمت راست پیشبینیها) | تصویر هدف با پرندگان 🐦 (سمت چپ GT، سمت راست پیشبینیها) |
|:----------------------:|:----------------------:|
| |
|
| تصویر هدف با قایق و پرنده ⛵🐦 (سمت چپ GT، سمت راست پیشبینیها) | تصویر هدف بدون قایق یا پرنده 🚫 (سمت چپ GT، سمت راست پیشبینیها) |
|:---------------------------------:|:----------------------------------:|
| |
|
🔬 مطالعات ابلیشن
ابلیشن بکبون
برای ارزیابی انتقالپذیری روش ما بین مدلهای فوندیشن، هم رمزگذار معنایی (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.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.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-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
[خروجی] توزیع مساحت ماسک
[خروجی] چگالی مرکز Bbox
[خروجی] هیستوگرام فاصله لبه Bbox
#### انتخاب
ما ۱۰۰ تصویر مرجع متنوع برای هر کلاس نمونهگیری میکنیم که به طور صریح دامنهای از اندازههای ماسک، مراکز و فاصلههای لبه را پوشش میدهند. هر مرجع روی یک زیرمجموعه اعتبارسنجی کاهشیافته ثابت ارزیابی میشود.
دستورالعملها:
اسکریپت راهاندازی: 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
[خروجی] نمودارهای میلهای. تأثیر مساحت ماسک (چپ) و مرکزیت (راست) بر عملکرد
[خروجی] نقشههای حرارتی. نقشههای امتیاز دوبعدی عملکرد به عنوان تابعی از مکان مرکز ماسک
[خروجی] عملکرد تصویر مرجع در مقابل مساحت ماسک برای تمام کلاسهای جدید COCO
تخریب تصویر مرجع
ما روش خود را تحت تصاویر مرجع با کیفیت فزاینده پایینتر با اعمال سطوح بالاتر تاری گاوسی ارزیابی میکنیم.
دستورالعملها:
# 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
شباهت ویژگی
اسکریپتی برای نمایش شباهت ویژگیها بین تصاویر مرجع و تصاویر هدف.
این اسکریپت شباهت تکویژگی (ویژگیهای مسیر) و شباهت مبتنی بر نمونه اولیه (ویژگیهای تجمیعشده) را تولید میکند.
دستورالعملها:
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 جداسازی واضحی برای کلاسهای نامشابه نشان میدهد
اما همپوشانی زیادی برای کلاسهای مشابه وجود دارد، که نشان میدهد سردرگمی از
هندسه ویژگیهای بکبون ناشی میشود نه از انتخاب پروتوتایپها.
دستورالعملها:
استخراج ویژگیها
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برای محاسبه اندازه مدل و حافظه مراجعه کنید.
🌍 دادهمجموعههای EO
اسکریپتهای ارزیابی (دادهمجموعههای EO)
اسکریپتهای ارزیابی در دایرکتوری scripts/EO قرار دارند. دادهمجموعههای EO از اسکریپت ./scripts/EO/EO_template.sh برای اجرای ارزیابی استفاده میکنند.
هر اجرای آزمایش EO در دایرکتوری ./EO_results ذخیره میشود. در پوشه آزمایش موارد زیر را ذخیره میکنیم:
- فایل summary.txt با پیکربندی و زمان اجرای آزمایش.
- تصویریسازی پیشبینیها روی مجموعه تست (پوشه
results_analysis). - تصویریسازی حافظهها (
memory_vis). - فایل پیکِل برچسبگذاری few-shot.
- نقاط بازیابی مدل (در صورت پاک نشدن).
شکلها و جداول
اسکریپتهای اضافی برای تولید شکلها و جداول.جدول لاتکس خلاصه دادهمجموعههای 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 ---