Skip to main content

Segmentation Robustness Framework - a powerful toolkit for evaluating the robustness of semantic segmentation models against adversarial attacks.

Project description

Python PyTorch PyPI version Docs Tests Ruff License: MIT

Segmentation Robustness Framework

A comprehensive framework for evaluating the robustness of semantic segmentation models against adversarial attacks. ๐Ÿ›ก๏ธ

Evaluate your models' security with state-of-the-art adversarial attacks and comprehensive metrics!

๐Ÿš€ Quick Start

๐Ÿ’ป Command Line Interface

The framework provides convenient CLI commands for common tasks:

# Install the package
pip install segmentation-robustness-framework

# List available components
srf list --attacks
srf list --models
srf list --datasets

# Run pipeline from configuration
srf run config.yaml

# Run tests
srf test

๐Ÿ Python API

Get started in minutes with our comprehensive examples:

from segmentation_robustness_framework.pipeline import SegmentationRobustnessPipeline
from segmentation_robustness_framework.metrics import MetricsCollection
from segmentation_robustness_framework.attacks import FGSM
from segmentation_robustness_framework.datasets import VOCSegmentation
from segmentation_robustness_framework.loaders.models.universal_loader import UniversalModelLoader
from segmentation_robustness_framework.utils import image_preprocessing
import torch

# Load model with universal loader
loader = UniversalModelLoader()
model = loader.load_model(
    model_type="torchvision",
    model_config={"name": "deeplabv3_resnet50", "num_classes": 21}
)

# Set device and move model to it (IMPORTANT: Do this before creating attacks!)
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)

# Setup dataset with preprocessing
preprocess, target_preprocess = image_preprocessing.get_preprocessing_fn(
    [512, 512], dataset_name="voc"
)
dataset = VOCSegmentation(
    split="val", 
    root="path/to/existing/VOCdevkit/VOC2012/",
    transform=preprocess,
    target_transform=target_preprocess
)

# Setup attack and metrics (attacks will use the same device as the model)
attack = FGSM(model, eps=2/255)

# Setup metrics
metrics_collection = MetricsCollection(num_classes=21)
metrics = [metrics_collection.mean_iou, metrics_collection.pixel_accuracy]

# Create and run pipeline
pipeline = SegmentationRobustnessPipeline(
    model=model,
    dataset=dataset,
    attacks=[attack],
    metrics=metrics,
    batch_size=4,
    device=device
)

results = pipeline.run(save=True, show=True)
pipeline.print_summary()

๐Ÿ“š Documentation Structure

๐Ÿš€ Getting Started

๐Ÿ“– User Guides

๐Ÿ”ง Technical Reference

๐ŸŽ“ Learning Path

  1. Start Here: Installation Guide โ†’ Quick Start
  2. Basic Usage: User Guide
  3. Configuration: Configuration Guide
  4. Advanced Usage: Advanced Examples

๐ŸŽฏ Key Features

๐Ÿ”ฌ Comprehensive Evaluation

  • Multiple Attacks: FGSM, PGD, RFGSM, TPGD, and custom attacks
  • Rich Metrics: IoU, pixel accuracy, precision, recall, dice score
  • Flexible Output: JSON, CSV, and custom formats
  • Batch Processing: Efficient evaluation of large datasets
  • Performance Optimization: GPU acceleration and memory management

๐Ÿค– Universal Model Support

  • Torchvision Models: DeepLab, FCN, LRASPP architectures
  • SMP Models: UNet, LinkNet, PSPNet, and more
  • HuggingFace Models: Transformers-based segmentation models
  • Custom Models: Easy integration with your own models via adapters

๐Ÿ“Š Built-in Datasets

  • VOC: Pascal VOC 2012 (21 classes)
  • ADE20K: Scene parsing dataset (150 classes)
  • Cityscapes: Urban scene understanding (35 classes)
  • Stanford Background: Natural scene dataset (9 classes)

โšก Easy Integration

  • Registry System: Automatic discovery of custom components
  • Adapter Pattern: Standardized model interfaces
  • Preprocessing Pipeline: Automatic data normalization and conversion
  • Configuration System: YAML/JSON-based pipeline configuration
  • Error Handling: Comprehensive error messages and debugging

๐Ÿš€ Quick Examples

โšก Basic Evaluation

from segmentation_robustness_framework.pipeline import SegmentationRobustnessPipeline
from segmentation_robustness_framework.metrics import MetricsCollection
from segmentation_robustness_framework.attacks import FGSM

# Setup pipeline
pipeline = SegmentationRobustnessPipeline(
    model=model,
    dataset=dataset,
    attacks=[FGSM(model, eps=2/255)],
    metrics=[metrics.mean_iou, metrics.pixel_accuracy],
    batch_size=4,
    device="cuda"
)

# Run evaluation
results = pipeline.run()
print(f"Clean IoU: {results['clean']['mean_iou']:.3f}")
print(f"Attack IoU: {results['attack_fgsm']['mean_iou']:.3f}")

โš™๏ธ Configuration-Based Evaluation

# config.yaml
model:
  type: torchvision
  config:
    name: deeplabv3_resnet50
    num_classes: 21

dataset:
  name: voc
  split: val
  image_shape: [512, 512]

attacks:
  - name: fgsm
    eps: 0.02
  - name: pgd
    eps: 0.02
    alpha: 0.01
    iters: 10

metrics:
  - mean_iou
  - pixel_accuracy
# Run from configuration
srf run config.yaml

๐Ÿ”ง Custom Components

# Custom Attack
@register_attack("my_attack")
class MyAttack(AdversarialAttack):
    def apply(self, images, labels):
        # Implement attack logic
        return adversarial_images

# Custom Dataset
@register_dataset("my_dataset")
class MyDataset(Dataset):
    def __init__(self, root, transform=None):
        self.num_classes = 5
        # ... implementation
    
    def __getitem__(self, idx):
        return image, mask

๐Ÿ› ๏ธ Installation

# Install from PyPI (recommended)
pip install segmentation-robustness-framework

# Install with all optional dependencies
pip install "segmentation-robustness-framework[full]"

# Or install from source
git clone https://github.com/wntic/segmentation-robustness-framework
cd segmentation-robustness-framework
pip install -e .

๐Ÿ—๏ธ Framework Architecture

The framework follows a modular architecture with clear separation of concerns:

  • Pipeline: Core orchestration component
  • Model Loaders: Universal model loading system
  • Adapters: Standardized model interfaces
  • Attacks: Adversarial attack implementations
  • Datasets: Dataset loading and preprocessing
  • Metrics: Evaluation metrics and scoring
  • Registry: Component discovery and registration

๐Ÿค Contributing

We welcome contributions! Please see our Contributing Guide for details on:

  • ๐Ÿ› Bug Reports - Help us identify and fix issues
  • ๐Ÿ’ก Feature Requests - Suggest new features or improvements
  • ๐Ÿ“ Documentation - Improve our docs and examples
  • ๐Ÿ”ง Code Contributions - Add new models, attacks, metrics, or datasets
  • ๐Ÿงช Testing - Help ensure code quality and reliability

๐Ÿ“ž Support

  • ๐Ÿ“– Documentation: Browse the guides above
  • ๐Ÿ“‹ Changelog: See what's new in CHANGELOG.md
  • ๐Ÿ› Issues: Report bugs and request features on GitHub
  • ๐Ÿ’ฌ Discussions: Join our community discussions
  • ๐Ÿ“ง Contact: Reach out to the maintainers

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file in the project root for details.


Ready to evaluate your segmentation models? ๐Ÿš€

Start with our Quick Start Guide and have your first evaluation running in minutes!

๐ŸŽฏ Key Benefits:

  • โšก Fast Setup - Get running in 5 minutes
  • ๐Ÿ”ง Easy Configuration - YAML/JSON-based configuration
  • ๐Ÿค– Universal Support - Works with any PyTorch segmentation model
  • ๐Ÿ“Š Comprehensive Metrics - Rich evaluation metrics
  • ๐Ÿ›ก๏ธ Security Focused - State-of-the-art adversarial attacks

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

segmentation_robustness_framework-0.3.0.tar.gz (56.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file segmentation_robustness_framework-0.3.0.tar.gz.

File metadata

File hashes

Hashes for segmentation_robustness_framework-0.3.0.tar.gz
Algorithm Hash digest
SHA256 362e36c3205ead64ae6e3afb1bbabae1db780c0e93472b43a0630d05c59965da
MD5 f788a53f59568c031fa3c838c00f7361
BLAKE2b-256 63fe791427cd06893fef468dc8af3c7549f85bae07386c6a4b12f64298c7b3d3

See more details on using hashes here.

File details

Details for the file segmentation_robustness_framework-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for segmentation_robustness_framework-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b8bc8ccc58da5372cef26744a1e379122a8ca0890bfa6e2cd7f205b4298656ee
MD5 66bc2a946f8d0fba780127743d4be76d
BLAKE2b-256 a1b692d6195c7658fa6180497788f6590c6a5305cce0aef00cb31d9bd01b39b1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page