🚀 প্ৰশিক্ষণৰ সময় নাই!
প্ৰশিক্ষণ-মুক্ত ৰেফাৰেঞ্চ-ভিত্তিক ইনষ্টেন্স ছেগমেণ্টেচন
অত্যাধুনিক (Papers with Code)
_SOTA 1-shot_ | -21CBCE?style=flat&logo=paperswithcode)
🚨 আপডেট (৫ ফেব্ৰুৱাৰী ২০২৬): কাকতখনৰ পান্ডুলিপি অধিক বিস্তৃত ablation অধ্যয়ন, ভিজুৱালাইজেছন আৰু অতিৰিক্ত পৰীক্ষাৰ সৈতে আপডেট কৰা হৈছে।
🚨 আপডেট (২২ জুলাই ২০২৫): কাষ্টম ডেটাছেটৰ বাবে নিৰ্দেশনা যোগ কৰা হৈছে!
🔔 আপডেট (১৬ জুলাই ২০২৫): ক'ডটো নিৰ্দেশনাৰে সৈতে আপডেট কৰা হৈছে!
📋 বিষয়বস্তু সূচী
- 🎯 মুখ্য বৈশিষ্ট্যসমূহ
- 📜 চমু বিৱৰণ
- 🧠 স্থাপত্য
- 🛠️ ইনষ্টলেশ্যন নিৰ্দেশনা
- 1. ৰেপ'জিটৰী ক্ল'ন কৰক
- 2. কন্ডা এনভাইৰনমেণ্ট সৃষ্টি কৰক
- 3. SAM2 আৰু DINOv2 ইনষ্টল কৰক
- 4. ডেটাছেট ডাউনলোড কৰক
- 5. SAM2 আৰু DINOv2 চেকপইণ্ট ডাউনলোড কৰক
- 📊 ইনফাৰেন্স ক'ড: Few-shot COCO-ত 30-shot SOTA ফলাফল পুনৰুৎপাদন কৰক
- 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-train2. কন্ডা পৰিবেশ সৃষ্টি কৰক
আমিহঁতে প্ৰয়োজনীয় পেকেজসমূহৰ সৈতে এটা কন্ডা পৰিবেশ সৃষ্টি কৰিম।
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 ..৪. ডেটাছেটসমূহ ডাউনলোড কৰক
অনুগ্ৰহ কৰি COCO ডেটাছেট ডাউনলোড কৰক আৰু data/coco-ত ৰাখক
৫. 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-ত ৩০-শ্বট 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
#### ০. উদ্বৃত্ত ছেট সৃষ্টি কৰক
python no_time_to_train/dataset/few_shot_sampling.py \
--n-shot $SHOTS \
--out-path ${RESULTS_DIR}/${FILENAME} \
--seed $SEED \
--dataset $CLASS_SPLIT#### ১. স্মৃতি ৰেফাৰেঞ্চেৰে পূৰণ কৰক
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#### ৩. লক্ষ্য চিত্ৰসমূহত অনুমান
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 ফৰ্মেটত হ'ব লাগে।
TLDR; কাষ্টম ডেটাচেট ত সম্পূৰ্ণ পাইপলাইন কেনেদৰে চলাব পাৰি সেয়া সোজাকৈ চাবলৈ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)
ৰেফাৰেঞ্চ চিত্ৰৰ ভিজুৱেলাইজেচন (১-শ্বট):| চৰাইৰ বাবে ১-শ্বট ৰেফাৰেঞ্চ চিত্ৰ 🐦 | নাওৰ বাবে ১-শ্বট ৰেফাৰেঞ্চ চিত্ৰ ⛵ |
|:----------------------------------:|:-----------------------------------:|
| |
|
০.১ কেৱল 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
ইনষ্টেন্স-স্তৰৰ ছেগমেন্টেশ্বন মাক্স থকা ৰেফাৰেঞ্চ চিত্ৰসমূহ (gt বাউণ্ডিং বক্সৰ পৰা SAM2 দ্বাৰা উৎপন্ন, ১-শ্বট):উৎপন্ন কৰা ছেগমেন্টেশ্বন মাক্সৰ ভিজুৱালাইজেচন data/my_custom_dataset/annotations/custom_references_with_SAM_segm/references_visualisations/ ত সংৰক্ষণ কৰা হৈছে।
| চৰাইৰ বাবে ১-শ্বট ৰেফাৰেঞ্চ চিত্ৰ 🐦 (স্বয়ংক্ৰিয়ভাৱে SAM দ্বাৰা ছেগমেন্ট কৰা) | নাওৰ বাবে ১-শ্বট ৰেফাৰেঞ্চ চিত্ৰ ⛵ (স্বয়ংক্ৰিয়ভাৱে SAM দ্বাৰা ছেগমেন্ট কৰা) |
|:---------------------------------:|:----------------------------------:|
| |
|
০.২ কোকো এনোটেশ্বনসমূহ পিকল ফাইললৈ ৰূপান্তৰ কৰা
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১. ৰেফাৰেন্সৰ সৈতে মেম'ৰি পূৰণ কৰক
প্ৰথমে, উপযোগী ভেৰিয়েবল সংজ্ঞা কৰক আৰু ফলাফলসমূহৰ বাবে এটা ফ'ল্ডাৰ সৃষ্টি কৰক। লেবেলসমূহ সঠিকভাৱে দৃশ্যায়িত হোৱাৰ বাবে, শ্ৰেণী নামসমূহ কেটেগৰি আই.ডি. অনুসৰি 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ধাপ ১ চলাও:
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 12. পোষ্ট-প্ৰসেছ মেমৰি বেংক
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-ত সংৰক্ষিত আছে।৩. লক্ষ্য ছবিসমূহত ইনফাৰেন্স
যদি 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 LargeCOCO ফিউ-শট ডেটাসেটত VLM মূল্যাংকন
আমরা QWEN VLM ক COCO ফিউ-শট ডেটাসেটত মূল্যাংকন কৰোঁ।
bash scripts/vl-qwen/ablation-vl-qwen.shউল্লেখিত চিত্ৰৰ heuristic সমূহ
বিভিন্ন উল্লেখিত চিত্ৰই কাৰ্যক্ষমতাত কেনেকৈ পাৰ্থক্য সৃষ্টি কৰে, সেইটো বুজিবলৈ আমি COCO novel classes annotation ৰ পৰিসংখ্যা বৈশিষ্ট্যসমূহ বিশ্লেষণ কৰোঁ।
#### বিশ্লেষণ
আমি তিনিটা annotation বৈশিষ্ট্য অধ্যয়ন কৰোঁ: (1) mask area (object size), (2) mask center location, আৰু (3) image edges লৈ দূৰত্ব।
নির্দেশনা:
# 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] বক্সৰ কেন্দ্ৰিক ঘনত্ব
[OUTPUT] বক্সৰ প্রান্তিক দূৰত্বৰ হিস্টোগ্ৰাম
#### নিৰ্বাচন
আমরা প্ৰতিটো শ্ৰেণীৰ বাবে ১০০ টা বৈচিত্ৰ্যপূৰ্ণ ৰেফাৰেন্স ছবি নমুনা লওঁ, য’ত স্পষ্টভাৱে মুখোটা আকাৰ, কেন্দ্ৰ আৰু প্ৰান্তিক দূৰত্বৰ পৰিসৰ অন্তৰ্ভুক্ত থাকে। প্ৰতিটো ৰেফাৰেন্স স্থিৰ কৰা কমোৱা প্ৰামাণিককৰণ উপ-সেটত মূল্যায়ন কৰা হয়।
নিৰ্দেশনা:
ছেটআপ স্ক্ৰিপ্ট: 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 plots (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-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 ফাইল।
- মডেলৰ চেকপইণ্টসমূহ (যদি পৰিষ্কাৰ কৰা হোৱা নাই।)
চিত্ৰ আৰু তালিকা
চিত্ৰ আৰু তালিকা তৈয়াৰ কৰাৰ বাবে অতিরিক্ত স্ক্ৰিপ্টসমূহ।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 datasets ৰ ৰানটাইম প্লট:
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 ---