
ब्लैक-बॉक्स इनपुट-चरण शुद्धिकरण रक्षा जो भ्रष्टाचार, विसरण पुनर्निर्माण, और DBSCAN सर्वसम्मति मतदान के माध्यम से ऑब्जेक्ट डिटेक्टरों पर बैकडोर हमलों को निष्क्रिय करती है।
बैकडोर हमलों के विरुद्ध ऑब्जेक्ट डिटेक्टरों के लिए तैयार किया गया पहला इनपुट-स्टेज ब्लैक-बॉक्स प्यूरीफिकेशन डिफेंस।
ODPure पहला इनपुट-स्टेज, ब्लैक-बॉक्स प्यूरीफिकेशन फ्रेमवर्क है जो ऑब्जेक्ट डिटेक्टरों को बैकडोर हमलों से बचाने के लिए तैयार किया गया है। यह एक नए Corruption-Reconstruction-Selection (CRS) प्रतिमान को क्रियान्वित करता है जो:
ODPure विविध बैकडोर हमलों को प्रभावी ढंग से निष्क्रिय करता है (Attack Success Rate को 0.0% तक कम करता है) जबकि स्वच्छ डिटेक्शन उपयोगिता को संरक्षित रखता है, और मौजूदा डिफेंसों की तुलना में बेहतर डिफेंस-उपयोगिता ट्रेड-ऑफ प्राप्त करता है।
# Core dependencies
torch>=1.13.0
torchvision>=0.14.0
numpy>=1.21.0
Pillow>=9.0.0
opencv-python>=4.5.0
# Diffusion models
diffusers>=0.14.0
transformers>=4.25.0
accelerate>=0.20.0
# Evaluation
scikit-learn>=1.2.0 # For DBSCAN clustering
scipy>=1.9.0
# Data processing
pyyaml>=6.0
tqdm>=4.64.0
# Create conda environment
conda create -n odpure python=3.9 -y
conda activate odpure
# Install PyTorch with CUDA
conda install pytorch torchvision pytorch-cuda=11.7 -c pytorch -c nvidia
# Install other dependencies
pip install -r requirements.txt
Reconstruction मॉड्यूल चलाने से पहले, आपको प्रीट्रेन्ड मॉडल वेट्स डाउनलोड करने होंगे:
| Model | Description | Download |
|---|---|---|
| DiffBIR v2.1 | Main restoration model | HuggingFace |
| Stable Diffusion | Latent diffusion priors | HuggingFace |
| LLaVA | Vision-language captioner | HuggingFace |
| RAM | Recognition-Aware Model | GitHub Release |
mkdir -p Method/Reconstruction/weights
संबंधित मॉडल रिपॉजिटरी में दिए गए निर्देशों का पालन करते हुए वेट्स डाउनलोड करें और रखें।
अपने डाउनलोड किए गए वेट्स की ओर इंगित करने के लिए Method/Reconstruction/configs/ में कॉन्फ़िग फ़ाइलों को अपडेट करें।
ODPure/
├── attack_script/ # Backdoor attack implementations
│ ├── COCO_chessboard_29x29_OMA.py # Object Misclassification (Chessboard)
│ ├── COCO_chessboard_29x29_ODA.py # Object Disappearance Attack (Chessboard)
│ ├── COCO_chessboard_9x9_OGA.py # Object Generation Attack (Chessboard)
│ ├── COCO_poke_15x15_OMA.py # OMA (Poké Ball)
│ ├── COCO_poke_15x15_ODA.py # ODA (Poké Ball)
│ ├── COCO_poke_15x15_OGA.py # OGA (Poké Ball)
│ ├── COCO_white_15x15_OMA.py # OMA (Solid White)
│ ├── COCO_white_15x15_ODA.py # ODA (Solid White)
│ └── COCO_white_15x15_OGA.py # OGA (Solid White)
│
├── Method/ # Core defense methodology
│ ├── corruptions/ # Image corruption module
│ │ ├── imagecorruption.py # Corruption functions
│ │ └── multiprocess_imagecorruption.py # Parallel processing
│ │
│ ├── Reconstruction/ # Diffusion-based restoration
│ │ ├── inference.py # Main inference script
│ │ ├── diffbir/ # DiffBIR model implementation
│ │ ├── llava/ # LLaVA captioner
│ │ ├── ram/ # Recognition-Aware Model
│ │ ├── configs/ # Model configurations
│ │ └── weights/ # Model weights (download separately)
│ │
│ └── dbscan_vote_new.py # DBSCAN clustering & voting
│
├── evaluation/ # Evaluation metrics
│ ├── OMA_ASR_new.py # OMA Attack Success Rate
│ ├── OMA_mAP.py # OMA Mean Average Precision
│ ├── ODA_ASR_new.py # ODA Attack Success Rate
│ ├── ODA_mAP.py # ODA Mean Average Precision
│ ├── OGA_ASR_new.py # OGA Attack Success Rate
│ ├── OGA_mAP.py # OGA Mean Average Precision
│ ├── val_OMA.py # YOLO validation for OMA
│ ├── val_ODA.py # YOLO validation for ODA
│ └── val_OGA.py # YOLO validation for OGA
│
├── data_format_conversion/ # Data format utilities
│ ├── voc2yolo.py # VOC to YOLO format conversion
│ ├── cocotoyolo.py # COCO to YOLO format conversion
│ └── select_coco_val_attack_information.py
│
├── ablation_study/ # Ablation experiments
│ ├── multiprocess_imagecorruption.py
│ ├── random_select_corruption.py
│ └── select_specific_corruption.py
│
├── run_pipeline.sh # One-shot CRS pipeline runner
└── README.md # This file
अनुशंसित प्रवेश बिंदु run_pipeline.sh है, जो तीन CRS चरणों को कैस्केड करता है:
# Defaults: GPU=0, INPUT=inputs/demo/bid, OUTPUT=results/v2.1_demo_bid, ATTACK=ODA
bash run_pipeline.sh
# Custom arguments: GPU_ID INPUT_DIR OUTPUT_DIR ATTACK
bash run_pipeline.sh 0 inputs/coco_oda results/oda ODA
bash run_pipeline.sh 1 inputs/coco_oma results/oma OMA
bash run_pipeline.sh 2 inputs/coco_oga results/oga OGA
स्क्रिप्ट निम्नलिखित करती है:
अंतिम शुद्ध किए गए डिटेक्शन <OUTPUT_DIR>/final/ में लिखे जाते हैं।
यदि आप मध्यवर्ती चरणों का निरीक्षण / प्रतिस्थापन करना चाहते हैं तो इसका उपयोग करें।
python Method/corruptions/multiprocess_imagecorruption.py \
--input_dir /path/to/input/images \
--output_dir /path/to/corrupted/images \
--num_corruptions 45 \
--num_workers 8
python Method/Reconstruction/inference.py \
--task denoise \
--upscale 2 \
--version v2.1 \
--captioner llava \
--cfg_scale 6 \
--noise_aug 1 \
--input /path/to/corrupted/images \
--output /path/to/restored/images \
--batch_size 32 \
--device cuda
python Method/dbscan_vote_new.py \
--folder_purs /path/to/restored/detections \
--temp /path/to/temp \
--output_path /path/to/final/detections \
--eps 0.5 \
--min_samples 10
conda activate odpure
# Run on poisoned inputs (before defense)
python evaluation/val_ODA.py \
--weights runs/train/exp/weights/last.pt \
--data data/ODA_poison.yaml \
--img 640 --iou-thres 0.65 --conf-thres 0.5 \
--save-txt --save-conf \
--project results/poisoned_val_txt
# Run on clean inputs
python evaluation/val_ODA.py \
--weights runs/train/exp/weights/last.pt \
--data data/ODA_clean.yaml \
--img 640 --iou-thres 0.65 --conf-thres 0.5 \
--save-txt --save-conf \
--project results/clean_val_txt
# Run on purified inputs (after defense via ODPure)
python evaluation/val_ODA.py \
--weights runs/train/exp/weights/last.pt \
--data data/ODA_purified.yaml \
--img 640 --iou-thres 0.65 --conf-thres 0.5 \
--save-txt --save-conf \
--project results/pur_val_txt
python evaluation/OMA_ASR_new.py
स्क्रिप्ट के अंदर पथ कॉन्फ़िगर करें:
gt_folder = "/path/to/ground_truth"
benign_folder = "/path/to/clean_val_txt"
attack_folder = "/path/to/pur_val_txt"
target_class = "0" # person class
python evaluation/ODA_ASR_new.py
python evaluation/OGA_ASR_new.py
python evaluation/ODA_mAP.py
python evaluation/OGA_mAP.py
python evaluation/OMA_mAP.py
| Parameter | Value | Description |
|---|---|---|
num_corruptions | 15 types × 3 severities = 45 variants | Corruption diversity |
corruption_severity | 1, 2, 3 | Corruption intensity levels |
DBSCAN eps | 0.5 | Clustering radius |
DBSCAN min_samples | 10 | Consensus threshold |
cfg_scale | 6.0 | Classifier-free guidance |
noise_aug | 1 | Noise augmentation level |
ODPure 4 श्रेणियों में 15 विविध करप्शन फ़ंक्शन का उपयोग करता है:
from Method.corruptions.imagecorruption import *
# Apply specific corruption
corrupted_img = gaussian_noise(image, severity=2)
corrupted_img = glass_blur(image, severity=1)
corrupted_img = jpeg_compression(image, severity=3)
# Process on specific GPU
CUDA_VISIBLE_DEVICES=0 python Method/Reconstruction/inference.py \
--task denoise --input inputs/demo --output results/demo
# Batch processing with multiple GPUs
CUDA_VISIBLE_DEVICES=0,1,2,3 python Method/Reconstruction/inference.py \
--task denoise --batch_size 64 --input inputs/batch --output results/batch
# Train backdoored model
CUDA_VISIBLE_DEVICES="0,1" python train.py \
--data data/custom.yaml \
--epochs 200 \
--weights checkpoints/yolov5s.pt \
--img 640 \
--batch-size 128
# Evaluate with defense
python evaluation/val_ODA.py \
--weights runs/train/exp/weights/last.pt \
--data data/val.yaml \
--img 640 \
--iou-thres 0.65 \
--conf-thres 0.5 \
--save-txt --save-conf
| Attack | Dataset (Model) | Clean mAP | Before Defense (mAP/ASR) | After Defense (mAP/ASR) |
|---|---|---|---|---|
| OMA | VOC (YOLO) | 76.4% | 8.2% / 87.7% | 80.5% / 2.0% |
| OMA | VOC (F-RCNN) | 79.3% | 44.9% / 94.6% | 78.1% / 17.4% |
| OMA | COCO (YOLO) | 52.8% | 0.4% / 94.6% | 52.0% / 1.5% |
| OMA | COCO (F-RCNN) | 49.7% | 6.3% / 91.9% | 47.0% / 16.3% |
| ODA | VOC (YOLO) | 72.0% | 71.6% / 96.5% | 76.7% / 20.8% |
| ODA | VOC (F-RCNN) | 77.6% | 76.4% / 69.3% | 75.4% / 18.9% |
| ODA | COCO (YOLO) | 54.0% | 52.4% / 99.9% | 54.1% / 25.4% |
| ODA | COCO (F-RCNN) | 50.9% | 50.3% / 81.7% | 51.4% / 28.0% |
| OGA | VOC (YOLO) | 80.4% | 78.0% / 65.1% | 82.2% / 0.0% |
| OGA | VOC (F-RCNN) | 83.2% | 81.2% / 98.4% | 80.9% / 0.0% |
| OGA | COCO (YOLO) | 53.0% | 52.8% / 99.8% | 54.4% / 0.0% |
| OGA | COCO (F-RCNN) | 48.9% | 49.1% / 95.4% | 49.5% / 0.0% |
| Trigger | Attack | Clean mAP | Before ASR | After ASR |
|---|---|---|---|---|
| Poké Ball | OMA | 77.3% | 95.5% | 19.8% |
| Poké Ball | ODA | 75.3% | 98.5% | 35.1% |
| Poké Ball | OGA | 79.8% | 96.8% | 15.4% |
| Solid White | OMA | 75.5% | 82.0% | 52.9% |
| Solid White | ODA | 71.8% | 71.1% | 44.0% |
| Solid White | OGA | 80.2% | 73.7% | 37.0% |
| Attack Type | Description | Behavior |
|---|---|---|
| OMA | Object Misclassification Attack | लक्ष्य वस्तुओं को गलत वर्गीकृत करने के लिए बाध्य करता है |
| ODA | Object Disappearance Attack | लक्ष्य वस्तुओं को डिटेक्शन से गायब कर देता है |
| OGA | Object Generation Attack | मतिभ्रमित भूत वस्तुओं को प्रेरित करता है |
यदि आपको यह कार्य अपने शोध में उपयोगी लगे, तो कृपया उद्धृत करें:
@article{odpure2026,
title={ODPure: Backdoor Purification for Object Detection via Ensemble Corruption Consensus},
author={},
journal={},
year={2026}
}
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
प्रश्नों या सहयोग के लिए, कृपया GitHub पर एक issue खोलें।
ODPure - सतत धारणा बनाए रखते हुए ऑब्जेक्ट डिटेक्शन सिस्टम को बैकडोर हमलों से बचाना।