🚀 Нет времени на обучение!
Сегментация объектов по образцу без обучения
Передовые методы (Papers with Code)
_SOTA 1-shot_ | -21CBCE?style=flat&logo=paperswithcode)
🚨 Обновление (5 февраля 2026): Рукопись статьи была обновлена с обширными абляционными исследованиями, визуализациями и дополнительными экспериментами.
🚨 Обновление (22 июля 2025): Добавлены инструкции для пользовательских датасетов!
🔔 Обновление (16 июля 2025): Обновлен код с инструкциями!
📋 Оглавление
- 🎯 Основные моменты
- 📜 Аннотация
- 🧠 Архитектура
- 🛠️ Инструкция по установке
- 1. Клонируйте репозиторий
- 2. Создайте conda-окружение
- 3. Установите SAM2 и DINOv2
- 4. Скачайте датасеты
- 5. Скачайте контрольные точки SAM2 и DINOv2
- 📊 Код для инференса: Воспроизведите SOTA-результаты 30-shot на Few-shot COCO
- 0. Создайте референсный набор
- 1. Заполните память референсами
- 2. Пост-обработка банка памяти
- 3. Инференс на целевых изображениях
- Результаты
- 🔍 Пользовательский датасет
- 0. Подготовьте пользовательский датасет ⛵🐦
- 0.1 Если доступны только bbox-аннотации
- 0.2 Преобразуйте аннотации COCO в файл pickle
- 1. Заполните память эталонными изображениями
- 2. Постобработка банка памяти
- 📚 Цитирование
🎯 Основные моменты
- 💡 Без обучения: Без дообучения, без настройки подсказок — только эталонное изображение.
- 🖼️ На основе эталонов: Сегментация новых объектов всего по нескольким примерам.
- 🔥 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
2. Создайте окружение conda
Мы создадим окружение conda с необходимыми пакетами.
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. Подготовьте пользовательский датасет ⛵🐦
Представим, что мы хотим обнаруживать лодки⛵ и птиц🐦 в пользовательском датасете. Чтобы использовать наш метод, потребуется:
- Как минимум 1 аннотированное эталонное изображение для каждого класса (т.е. 1 эталон для лодки и 1 эталон для птицы)
- Несколько целевых изображений для поиска экземпляров нужных нам классов.
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)
Визуализация эталонных изображений (1-shot):| 1-shot эталонное изображение для ПТИЦЫ 🐦 | 1-shot эталонное изображение для ЛОДКИ ⛵ |
|:-----------------------------------------:|:------------------------------------------:|
| |
|
0.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 из gt-баундинг-боксов, 1-shot):Визуализация сгенерированных масок сегментации сохранена в data/my_custom_dataset/annotations/custom_references_with_SAM_segm/references_visualisations/.
| 1-shot референсное изображение ПТИЦЫ 🐦 (автоматически сегментировано SAM) | 1-shot референсное изображение ЛОДКИ ⛵ (автоматически сегментировано 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. Заполните память ссылками
Сначала определите полезные переменные и создайте папку для результатов. Для корректной визуализации меток имена классов должны быть упорядочены по id категории, как указано в файле json. Например, у bird id категории 16, у boat id категории 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/. Обратите внимание, что наш метод работает для ложноотрицательных случаев, то есть изображений, не содержащих экземпляров нужных классов.Нажмите на изображения для увеличения ⬇️
| Целевое изображение с лодками ⛵ (слева GT, справа предсказания) | Целевое изображение с птицами 🐦 (слева GT, справа предсказания) |
|:----------------------:|:----------------------:|
| |
|
| Целевое изображение с лодками и птицами ⛵🐦 (слева GT, справа предсказания) | Целевое изображение без лодок и птиц 🚫 (слева GT, справа предсказания) |
|:---------------------------------:|:----------------------------------:|
| |
|
🔬 Абляционные исследования
Абляция бэкбона
Для оценки переносимости нашего метода на различные foundation-модели мы заменяем как семантический энкодер (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
#### ВЫБОР
Мы выбираем 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
[OUTPUT] Столбчатые диаграммы. Влияние площади маски (слева) и её центрированности (справа) на производительность
[OUTPUT] Тепловые карты. 2D карты баллов производительности как функция положения центра маски
[OUTPUT] Производительность по эталонному изображению в зависимости от площади маски для всех новых классов 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 в формате pickle.
- Контрольные точки модели (если не были удалены).
Фигуры и таблицы
Дополнительные скрипты для генерации фигур и таблиц.Сводная latex-таблица 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 ---