🚀 훈련할 시간이 없다!
훈련 없이 참조 기반 인스턴스 분할
최신 연구 (Papers with Code)
_SOTA 1-shot_ | -21CBCE?style=flat&logo=paperswithcode)
🚨 업데이트 (2026년 2월 5일): 논문 원고가 확장된 제거 실험, 시각화, 추가 실험과 함께 업데이트되었습니다.
🚨 업데이트 (2025년 7월 22일): 커스텀 데이터셋 사용 방법이 추가되었습니다!
🔔 업데이트 (2025년 7월 16일): 코드가 사용법과 함께 업데이트되었습니다!
📋 목차
- 🎯 주요 내용
- 📜 초록
- 🧠 아키텍처
- 🛠️ 설치 방법
- 1. 레포지토리 클론하기
- 2. Conda 환경 만들기
- 3. SAM2 및 DINOv2 설치
- 4. 데이터셋 다운로드
- 5. SAM2 및 DINOv2 체크포인트 다운로드
- 📊 추론 코드: Few-shot COCO에서 30-shot SOTA 결과 재현
- 0. 참조 세트 생성
- 1. 참조로 메모리 채우기
- 2. 메모리 뱅크 후처리
- 3. 타깃 이미지에서 추론
- 결과
- 🔍 커스텀 데이터셋
- 0. 커스텀 데이터셋 준비 ⛵🐦
- 0.1 바운딩 박스 주석만 있는 경우
- 0.2 COCO 주석을 피클 파일로 변환
- 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
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 ../..📊 추론 코드
⚠️ 면책 조항: 이 코드는 연구용입니다 — 약간의 혼란이 있을 수 있습니다!
Few-shot COCO에서 30-shot SOTA 결과 재현하기
유용한 변수를 정의하고 결과를 위한 폴더를 만듭니다:
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/에 저장됩니다. 왼쪽 이미지는 실제 정답(ground truth)을, 오른쪽 이미지는 학습 없이 우리 방법으로 찾아낸 분할 인스턴스를 보여줍니다.이 예제에서는 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):| BIRD 🐦의 1-shot 참조 이미지 | BOAT ⛵의 1-shot 참조 이미지 |
|:-----------------------------:|:------------------------------:|
| |
|
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로 gt 바운딩 박스에서 생성된 인스턴스 수준 분할 마스크가 포함된 참조 이미지(1-shot):생성된 분할 마스크의 시각화 결과는 data/my_custom_dataset/annotations/custom_references_with_SAM_segm/references_visualisations/에 저장됩니다.
| BIRD 🐦의 1-shot 참조 이미지 (SAM으로 자동 분할) | BOAT ⛵의 1-shot 참조 이미지 (SAM으로 자동 분할) |
|:---------------------------------:|:----------------------------------:|
| |
|
0.2 coco 어노테이션을 피클 파일로 변환
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 파일에 나타나는 카테고리 id 순서대로 정렬되어야 합니다. 예를 들어, 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-평균 시각화는 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, 오른쪽 예측) |
|:---------------------------------:|:----------------------------------:|
| |
|
🔬 소거 실험(Ablations)
백본(Backbone) 소거
우리 방법의 파운데이션 모델 전이 가능성을 평가하기 위해, 우리는 시맨틱 인코더(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 LargeCOCO 소수 샷 데이터셋에서 VLM 평가
COCO 소수 샷 데이터셋에서 QWEN VLM을 평가합니다.
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
[OUTPUT] 마스크 영역 분포
[OUTPUT] Bbox 중심 밀도
[OUTPUT] 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 신규 클래스에 대한 참조 이미지 성능 vs. 마스크 면적
참조 이미지 열화
우리는 점진적으로 열화된 참조 이미지를 사용하여 방법을 평가하기 위해 가우시안 블러 강도를 증가시켜 적용합니다.
지침:
# 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 특징 분리도)
DINOv2 특징의 t-SNE는 유사하지 않은 클래스에서는 명확한 분리를 보이지만,
유사한 클래스에서는 많은 중첩을 보여줍니다. 이는 혼동이 프로토타입 선택보다는
백본 특징의 기하 구조에서 비롯됨을 시사합니다.
설명서:
특징 추출
python no_time_to_train/make_plots/tsne-coco.py --extractT-SNE 플롯을 그립니다
# Example spoon vs fork
python no_time_to_train/make_plots/tsne-coco.py --classes cat dog🛠️ 헬퍼
메모리 시각화
여기에 이미지 feature_comparison_small.png 추가
지침
특정 실험에 대한 메모리 뱅크(PCA 및 K-평균 시각화)를 시각화하려면 다음 명령어를 조정하세요.
참조 이미지를 크롭된 마스크와 함께/없이 시각화하려면 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 파일.
- 모델의 체크포인트(정리되지 않은 경우).
그림 및 표
그림 및 표 생성을 위한 추가 스크립트입니다.EO 데이터셋의 요약 latex 표:
python scripts/convert_datasets/summary_table_datasets.py
EO 데이터셋의 LaTeX 테이블 생성:
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_resultsEO 데이터셋에서 휴리스틱의 효과 요약:
python scripts/paper_figures/plot_EO_heuristic.py \
--no-heuristics ./EO_results_no_heuristics \
--heuristics ./EO_resultsEO 데이터셋의 런타임 플롯:
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 ---