Segmentation Robustness Framework - a powerful toolkit for evaluating the robustness of semantic segmentation models against adversarial attacks.
Project description
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
- Installation Guide - Setup and installation instructions
- Quick Start Guide - Your first evaluation in 5 minutes
- Core Concepts - Understanding the framework architecture
๐ User Guides
- User Guide - Complete guide for using the framework
- Configuration Guide - How to write configuration files
- Examples - Real-world examples and use cases
๐ง Technical Reference
- API Reference - Complete API documentation
- Contributing Guide - How to contribute to the project
๐ Learning Path
- Start Here: Installation Guide โ Quick Start
- Basic Usage: User Guide
- Configuration: Configuration Guide
- 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file segmentation_robustness_framework-0.3.1.tar.gz.
File metadata
- Download URL: segmentation_robustness_framework-0.3.1.tar.gz
- Upload date:
- Size: 56.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51c372570b35ae1e13e33267995751053b48a4427e9a66db38b34521243c42b7
|
|
| MD5 |
5fb92bedc26c33fd6fcc310de5004619
|
|
| BLAKE2b-256 |
974bc7a310eae468a29089d0dda610a56721f75789852dc466ebfe312ac04f7e
|
File details
Details for the file segmentation_robustness_framework-0.3.1-py3-none-any.whl.
File metadata
- Download URL: segmentation_robustness_framework-0.3.1-py3-none-any.whl
- Upload date:
- Size: 91.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e450675313699243deaaca17cd8cf32dbf996a12b69660ab77e41b99052c9152
|
|
| MD5 |
348eb4cebca29f937108ab458960d498
|
|
| BLAKE2b-256 |
7e65e241423309af771148e74d097f0782f252bbecb663c0da96fb4385457b72
|