Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ODPure — Защита на этапе входных данных по принципу «чёрного ящика», нейтрализующая бэкдор-атаки на детекторы объектов с помощью искажения, диффузионной реконструкции и консенсусного голосования DBSCAN. | Kitploit
Инструменты/GitHubGitHub/alex66366/odpure
Оборонительные ИнструментыДинамический анализ (песочница)Анализ уязвимостейМашинное ОбучениеСтатьи и ИсследованияБезопасность ИИСостязательная Атака
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
  • Zero-Shot: не требуется предварительное знание триггерных паттернов
  • Непрерывное восприятие: поддерживает непрерывность операционного потока без отбрасывания данных
  • 📋 Требования

    Системные требования

    • Python 3.8+
    • CUDA 11.7+ (для ускорения на GPU)
    • Рекомендуется 16GB+ видеопамяти

    Зависимости 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
    

    📦 Загрузка предобученных весов

    Перед запуском модуля Reconstruction необходимо загрузить веса предобученных моделей:

    Необходимые веса

    МодельОписаниеЗагрузка
    DiffBIR v2.1Основная модель восстановленияHuggingFace
    Stable DiffusionАприоры латентной диффузииHuggingFace
    LLaVAМодель подписей визуально-языковых данныхHuggingFace
    RAMRecognition-Aware ModelGitHub Release

    Шаги установки

    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 (Восстановление) – DiffBIR v2.1 с подписывающей моделью LLaVA
    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 (Object Misclassification Attack)

    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 (Object Disappearance Attack)

    root@kitploit:~
    python evaluation/ODA_ASR_new.py
    

    OGA (Object Generation Attack)

    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 по умолчанию

    ПараметрЗначениеОписание
    num_corruptions15 типов × 3 уровня серьёзности = 45 вариантовРазнообразие искажений
    corruption_severity1, 2, 3Уровни интенсивности искажений
    DBSCAN eps0.5Радиус кластеризации
    DBSCAN min_samples10Порог консенсуса
    cfg_scale6.0Classifier-free guidance
    noise_aug1Уровень шумовой аугментации

    Типы искажений

    ODPure использует 15 разнообразных функций искажения по 4 категориям:

    • Шум: Gaussian, Shot, Impulse
    • Размытие: Gaussian, Glass, Motion, Zoom, Defocus
    • Погодные условия: Snow, Frost, Fog, Brightness
    • Цифровые: JPEG compression, Pixelate, Elastic transform

    🔧 Расширенное использование

    Пользовательские искажения

    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 (триггер «шахматная доска»)

    АтакаДатасет (Модель)Clean 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%

    Устойчивость к адаптивным атакам

    ТриггерАтакаClean mAPДо ASRПосле ASR
    Poké BallOMA77.3%95.5%19.8%
    Poké BallODA75.3%98.5%35.1%
    Poké BallOGA79.8%96.8%15.4%
    Solid WhiteOMA75.5%82.0%52.9%
    Solid WhiteODA71.8%71.1%44.0%
    Solid WhiteOGA80.2%73.7%37.0%

    🔬 Модель угроз

    Возможности атакующего

    • Внедряет бэкдор через отравление данных во время обучения
    • Манипулирует детекторами для проявления вредоносного поведения (OMA, ODA, OGA)
    • Сохраняет нормальные предсказания на чистых входных данных

    Ограничения защищающегося

    • Независимость от атаки: отсутствие предварительного знания триггерных паттернов
    • Строгий чёрный ящик: только запросы входных данных и наблюдение выходных
    • Отсутствие обучающих данных: очистка только на входных данных времени вывода

    Цели защиты

    • Безопасность: снижение активации бэкдора (низкий ASR)
    • Точность: поддержание высокого mAP на чистых и очищенных входных данных

    Типы атак

    Тип атакиОписаниеПоведение
    OMAObject Misclassification AttackПринуждает целевые объекты к ошибочной классификации
    ODAObject Disappearance AttackЗаставляет целевые объекты исчезать из детекции
    OGAObject Generation AttackВызывает галлюцинацию фантомных объектов

    📚 Цитирование

    Если вы находите эту работу полезной в своих исследованиях, пожалуйста, цитируйте:

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

    📝 Лицензия

    Этот проект лицензирован под MIT License — подробности см. в файле LICENSE.

    🤝 Благодарности

    • DiffBIR - Diffusion-based Image Restoration
    • LLaVA - Large Language and Vision Assistant
    • YOLOv5 - Object Detection Framework
    • CLIP - Contrastive Language-Image Pretraining

    📧 Контакты

    По вопросам или для сотрудничества, пожалуйста, откройте issue на GitHub.


    ODPure — Защита систем обнаружения объектов от бэкдор-атак при сохранении непрерывного восприятия.

    Скачать инструмент