Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ODPure — 黑盒输入阶段净化防御,通过损坏、扩散重建和DBSCAN共识投票来中和针对目标检测器的后门攻击。 | Kitploit
工具/GitHubGitHub/alex66366/odpure
防御工具动态分析 (沙盒)漏洞分析机器学习论文与研究AI 安全对抗性攻击
GitHubalex66366/odpure

ODPure

黑盒输入阶段净化防御,通过损坏、扩散重建和DBSCAN共识投票来中和针对目标检测器的后门攻击。

查看仓库
11811天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ODPure:通过集成损坏共识实现目标检测的后门净化

首个针对目标检测器的输入阶段黑盒净化防御,用于抵御后门攻击。

License: MIT

📖 概述

ODPure 是首个专为目标检测器抵御后门攻击而设计的输入阶段、黑盒净化框架。它实现了一种新颖的 损坏-重建-选择(Corruption-Reconstruction-Selection, CRS) 范式,该范式:

  1. 损坏 输入图像,使用多样化的扰动来破坏触发器模式
  2. 重建 细粒度结构特征,使用生成式扩散先验
  3. 选择 高置信度检测结果,通过空间共识投票

ODPure 有效中和了多种后门攻击(将攻击成功率降至低至 0.0%),同时保持干净的检测效用,相比现有防御方法实现了更优的防御-效用权衡。

🔑 核心特性

  • 黑盒防御:无需模型内部结构、梯度或架构
  • 模型无关:适用于任何目标检测器(YOLO、Faster R-CNN 等)
  • 多攻击防御:处理 OMA、ODA 和 OGA 攻击类型
  • 零样本:无需触发器模式的先验知识
  • 连续感知:保持操作流连续性,不丢弃数据

📋 环境要求

系统要求

  • Python 3.8+
  • CUDA 11.7+(用于 GPU 加速)
  • 建议 16GB+ GPU 显存

Python 依赖

root@kitploit:~
# 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

Conda 环境设置(推荐)

root@kitploit:~
# 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

📦 下载预训练权重

在运行重建模块之前,您需要下载预训练模型权重:

所需权重

安装步骤

  1. 创建权重目录:
root@kitploit:~
mkdir -p Method/Reconstruction/weights
  1. 按照各自模型仓库中的说明下载并放置权重。

  2. 更新 Method/Reconstruction/configs/ 中的配置文件,使其指向您下载的权重。

🏗️ 项目结构

root@kitploit:~
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

🚀 快速开始

选项 A:一键端到端流水线(推荐)

推荐的入口点是 run_pipeline.sh,它级联执行 CRS 的三个阶段:

root@kitploit:~
# 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

该脚本执行:

  1. 阶段 1(损坏) – 生成 45 个损坏变体
  2. 阶段 2(重建) – 使用 LLaVA 描述器的 DiffBIR v2.1
  3. 阶段 3(选择) – DBSCAN 空间共识投票

最终净化后的检测结果写入 <OUTPUT_DIR>/final/。

选项 B:手动运行每个阶段

如果您想检查/替换中间步骤,请使用此选项。

阶段 1:损坏

root@kitploit:~
python Method/corruptions/multiprocess_imagecorruption.py \
    --input_dir /path/to/input/images \
    --output_dir /path/to/corrupted/images \
    --num_corruptions 45 \
    --num_workers 8

阶段 2:重建

root@kitploit:~
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

阶段 3:选择(DBSCAN 投票)

root@kitploit:~
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

📊 评估

步骤 1:激活环境

root@kitploit:~
conda activate odpure

步骤 2:在三个数据划分上运行检测器

root@kitploit:~
# 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

步骤 3:计算 ASR / mAP

OMA(目标误分类攻击)

root@kitploit:~
python evaluation/OMA_ASR_new.py

在脚本内配置路径:

root@kitploit:~
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

ODA(目标消失攻击)

root@kitploit:~
python evaluation/ODA_ASR_new.py

OGA(目标生成攻击)

root@kitploit:~
python evaluation/OGA_ASR_new.py

计算 mAP

root@kitploit:~
python evaluation/ODA_mAP.py
python evaluation/OGA_mAP.py
python evaluation/OMA_mAP.py

🛡️ 防御配置

默认 ODPure 设置

损坏类型

ODPure 使用 4 个类别下的 15 种多样化损坏函数:

  • 噪声:高斯噪声、散粒噪声、脉冲噪声
  • 模糊:高斯模糊、玻璃模糊、运动模糊、缩放模糊、散焦模糊
  • 天气:雪、霜、雾、亮度
  • 数字:JPEG 压缩、像素化、弹性变换

🔧 高级用法

自定义损坏

root@kitploit:~
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)

多 GPU 处理

root@kitploit:~
# 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

与 YOLOv5 集成

root@kitploit:~
# 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

📈 实验结果

在 VOC 和 COCO 上的防御性能(棋盘格触发器)

针对自适应攻击的鲁棒性

🔬 威胁模型

攻击者能力

  • 在训练期间通过数据投毒植入后门
  • 操纵检测器表现出恶意行为(OMA、ODA、OGA)
  • 在干净输入上保持正常预测

防御者约束

  • 攻击无关:无触发器模式的先验知识
  • 严格黑盒:仅查询输入并观察输出
  • 无训练数据:仅在推理时对输入进行净化

防御目标

  • 安全性:减轻后门激活(低 ASR)
  • 保真度:在干净和净化输入上保持高 mAP

攻击类型

攻击类型描述行为
OMA目标误分类攻击迫使目标对象被误分类
ODA目标消失攻击导致目标对象从检测中消失

📚 引用

如果您发现这项工作对您的研究有用,请引用:

root@kitploit:~
@article{odpure2026,
  title={ODPure: Backdoor Purification for Object Detection via Ensemble Corruption Consensus},
  author={},
  journal={},
  year={2026}
}

📝 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

🤝 致谢

  • DiffBIR - 基于扩散的图像恢复
  • LLaVA - 大型语言与视觉助手
  • YOLOv5 - 目标检测框架
  • CLIP - 对比语言-图像预训练

📧 联系方式

如有问题或合作意向,请在 GitHub 上提交 issue。


ODPure - 保护目标检测系统免受后门攻击,同时保持连续感知。

下载工具
模型描述下载
DiffBIR v2.1主恢复模型HuggingFace
Stable Diffusion潜在扩散先验HuggingFace
LLaVA视觉-语言描述器HuggingFace
RAM识别感知模型GitHub Release
参数值描述
num_corruptions15 种类型 × 3 个严重程度 = 45 个变体损坏多样性
corruption_severity1, 2, 3损坏强度级别
DBSCAN eps0.5聚类半径
DBSCAN min_samples10共识阈值
cfg_scale6.0无分类器引导
noise_aug1噪声增强级别
攻击数据集(模型)干净 mAP防御前(mAP/ASR)防御后(mAP/ASR)
OMAVOC (YOLO)76.4%8.2% / 87.7%80.5% / 2.0%
OMAVOC (F-RCNN)79.3%44.9% / 94.6%78.1% / 17.4%
OMACOCO (YOLO)52.8%0.4% / 94.6%52.0% / 1.5%
OMACOCO (F-RCNN)49.7%6.3% / 91.9%47.0% / 16.3%
ODAVOC (YOLO)72.0%71.6% / 96.5%76.7% / 20.8%
ODAVOC (F-RCNN)77.6%76.4% / 69.3%75.4% / 18.9%
ODACOCO (YOLO)54.0%52.4% / 99.9%54.1% / 25.4%
ODACOCO (F-RCNN)50.9%50.3% / 81.7%51.4% / 28.0%
OGAVOC (YOLO)80.4%78.0% / 65.1%82.2% / 0.0%
OGAVOC (F-RCNN)83.2%81.2% / 98.4%80.9% / 0.0%
OGACOCO (YOLO)53.0%52.8% / 99.8%54.4% / 0.0%
OGACOCO (F-RCNN)48.9%49.1% / 95.4%49.5% / 0.0%
触发器攻击干净 mAP防御前 ASR防御后 ASR
精灵球OMA77.3%95.5%19.8%
精灵球ODA75.3%98.5%35.1%
精灵球OGA79.8%96.8%15.4%
纯白色OMA75.5%82.0%52.9%
纯白色ODA71.8%71.1%44.0%
纯白色OGA80.2%73.7%37.0%
OGA目标生成攻击诱导产生幻觉幽灵对象