🚀 لا وقت للتدريب!
التقسيم المثيل المرجعي بدون تدريب
أحدث ما توصلت إليه التقنية (Papers with Code)
_الأفضل في structur 1-shot_ | -21CBCE?style=flat&logo=paperswithcode)
_الأفضل في structur 10-shot_ | -21CBCE?style=flat&logo=paperswithcode)
_الأفضل في structur 30-shot_ | -21CBCE?style=flat&logo=paperswithcode)
🚨 تحديث (5 فبراير 2026): تم تحديث مخطوطة البحث بدراسات استبعادية موسعة، وتصويرات وتجارب إضافية.
🚨 تحديث (22 يوليو 2025): تمت إضافة تعليمات للبيانات المخصصة!
🔔 تحديث (16 يوليو 2025): تم تحديث الكود مع التعليمات!
📋 جدول المحتويات
- 🎯 النقاط البارزة
- 📜 الملخص
- 🧠 الهيكلية
- 🛠️ تعليمات التثبيت
- 1. استنساخ المستودع
- 2. إنشاء بيئة conda
- 3. تثبيت SAM2 و DINOv2
- 4. تحميل مجموعات البيانات
- 5. تحميل نقاط تحقق SAM2 و DINOv2
- 📊 كود الاستدلال: إعادة إنتاج نتائج SOTA بـ 30 لقطة في Few-shot COCO
- 0. إنشاء مجموعة مرجعية
- 1. ملء الذاكرة بالمراجع
- 2. معالجة بنك الذاكرة بعد طبع النتائج
- 3. الاستدلال على الصور الهدف
- النتائج
- 🔍 مجموعة بيانات مخصصة
- 0. تجهيز مجموعة بيانات مخصصة ⛵🐦
- 0.1 إذا كانت التعليقات المتوفرة هي مربعات إحاطة فقط
- 0.2 تحويل تعليقات COCO إلى ملف Pickle
- 1. ملء الذاكرة بالمراجع
- 2. معالجة بنك الذاكرة بعدياً
- 📚 الاقتباس
🎯 أبرز النقاط
- 💡 بدون تدريب: لا حاجة لإعادة الضبط أو هندسة التعليمات—فقط صورة مرجعية.
- 🖼️ استناداً إلى المرجع: تقسيم كائنات جديدة باستخدام أمثلة قليلة فقط.
- 🔥 أداء متفوق: يتفوق على الأساليب السابقة غير المعتمدة على التدريب في 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 env create -f environment.yml
conda activate no-time-to-train3. تثبيت 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 ../..
📊 كود الاستدلال
⚠️ إخلاء مسؤولية: هذا كود بحثي — توقع بعض الفوضى!
إعادة إنتاج نتائج SOTA بعدد 30 لقطة في 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
#### 0. إنشاء مجموعة مرجعية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)
0. تجهيز مجموعة بيانات مخصصة ⛵🐦
لنتخيل أننا نريد اكتشاف القوارب⛵ والطيور🐦 في مجموعة بيانات مخصصة. لاستخدام طريقتنا سنحتاج إلى:
- صورة مرجعية مشروحة واحدة على الأقل لكل فئة (أي صورة مرجعية واحدة للقارب وصورة مرجعية واحدة للطائر)
- عدة صور هدف للعثور على أمثلة للفئات المطلوبة.
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)
تصوير صور المرجع (لقطة واحدة):| صورة مرجعية واحدة للطائر 🐦 | صورة مرجعية واحدة للقارب ⛵ |
|:-----------------------------:|:-------------------------------:|
| |
|
0.1 إذا كانت التعليقات التوضيحية للإطار المحيط فقط متوفرة
نحن نوفر أيضًا نصًا برمجيًا لتوليد أقنعة تقسيم على مستوى الكائن باستخدام 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 من مربعات الإحاطة الحقيقية، لقطة واحدة):تم حفظ تصوّر أقنعة التقسيم المُولدة في data/my_custom_dataset/annotations/custom_references_with_SAM_segm/references_visualisations/.
| صورة مرجعية بلقطة واحدة لعصفور 🐦 (تم تقسيمها تلقائياً بواسطة SAM) | صورة مرجعية بلقطة واحدة لقارب ⛵ (تم تقسيمها تلقائياً بواسطة SAM) |
|:---------------------------------:|:----------------------------------:|
| |
|
0.2 تحويل تعليقات 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#### 2.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.3. الاستدلال على الصور الهدف
إذا تم ضبط 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/. لاحظ أن طريقتنا تعمل مع النتائج السلبية الكاذبة، أي الصور التي لا تحتوي على أي أمثلة من الفئات المطلوبة.انقر على الصور لتكبيرها ⬇️
| صورة مستهدفة تحتوي على قوارب ⛵ (يسار: الحقيقة الأرضية، يمين: التنبؤات) | صورة مستهدفة تحتوي على طيور 🐦 (يسار: الحقيقة الأرضية، يمين: التنبؤات) |
|:----------------------:|:----------------------:|
| |
|
| صورة مستهدفة تحتوي على قوارب وطيور ⛵🐦 (يسار: الحقيقة الأرضية، يمين: التنبؤات) | صورة مستهدفة بدون قوارب أو طيور 🚫 (يسار: الحقيقة الأرضية، يمين: التنبؤات) |
|:---------------------------------:|:----------------------------------:|
| |
|
🔬 دراسات الاستبعاد (Ablations)
استبعاد العمود الفقري (Backbone ablation)
لتقييم قابلية انتقال طريقتنا عبر نماذج الأساس، نقوم باستبدال كل من المشفر الدلالي (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
[المخرجات] توزيع مساحة القناع
[المخرجات] كثافة مركز الصندوق المحيط
[المخرجات] هيستوغرامات مسافة حواف الصندوق المحيط
#### الاختيار
نقوم بأخذ عينة من 100 صورة مرجعية متنوعة لكل فئة، مع تغطية صريحة لطيف من أحجام الأقنعة، والمراكز، ومسافات الحواف. يتم تقييم كل مرجع على مجموعة تحقق مصغرة ثابتة.
تعليمات:
سكريبت الإعداد: 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 الجديدة
تدهور صورة المرجع
نقوم بتقييم طريقتنا تحت صور مرجعية متدهورة تدريجياً من خلال تطبيق مستويات متزايدة من ضبابية Gaussian.
التعليمات:
# 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). - ملف pickle لتعليقات 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إنشاء تصورات شبكية للبيانات الأرضية لصورة الورقة العلمية:
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 ---