jaeunglee's picture
Update README.md
f378f90 verified
---
license: mit
tags:
- machine-unlearning
- unlearning
- resnet18
pipeline_tag: image-classification
library_name: pytorch
---
# Model Card for jaeunglee/resnet18-cifar10-unlearning
This repository contains ResNet18 models retrained on the CIFAR-10 dataset with specific classes excluded during training. Each model is trained to study the impact of class exclusion on model performance and generalization.
**Paper:** [Unlearning Comparator: A Visual Analytics System for Comparative Evaluation of Machine Unlearning Methods](https://huggingface.co/papers/2508.12730)
**Project Page:** [https://gnueaj.github.io/Machine-Unlearning-Comparator/](https://gnueaj.github.io/Machine-Unlearning-Comparator/)
**GitHub Repository:** [https://github.com/gnueaj/Machine-Unlearning-Comparator](https://github.com/gnueaj/Machine-Unlearning-Comparator)
---
## Evaluation
- **Testing Data:** CIFAR-10 test set
- **Metrics:** Top-1 accuracy
### Results
| Model | Excluded Class | CIFAR-10 Accuracy |
|-------------------------------------|----------------|--------------------|
| `resnet18_cifar10_full.pth` | **None** | **95.4%** |
| `resnet18_cifar10_no_airplane.pth` | Airplane | 95.3% |
| `resnet18_cifar10_no_automobile.pth`| Automobile | 95.4% |
| `resnet18_cifar10_no_bird.pth` | Bird | 95.6% |
| `resnet18_cifar10_no_cat.pth` | Cat | 96.6% |
| `resnet18_cifar10_no_deer.pth` | Deer | 95.2% |
| `resnet18_cifar10_no_dog.pth` | Dog | 96.6% |
| `resnet18_cifar10_no_frog.pth` | Frog | 95.2% |
| `resnet18_cifar10_no_horse.pth` | Horse | 95.3% |
| `resnet18_cifar10_no_ship.pth` | Ship | 95.4% |
| `resnet18_cifar10_no_truck.pth` | Truck | 95.3% |
## Training Details
### Training Procedure
- **Base Model:** ResNet18
- **Dataset:** CIFAR-10
- **Excluded Class:** Varies by model
- **Loss Function:** CrossEntropyLoss
- **Optimizer:** SGD with:
- Learning rate: `0.1`
- Momentum: `0.9`
- Weight decay: `5e-4`
- Nesterov: `True`
- **Scheduler:** CosineAnnealingLR (T_max: `200`)
- **Training Epochs:** `200`
- **Batch Size:** `128`
- **Hardware:** Single GPU
### Notes on Training
The training recipe is adapted from the paper **"Benchopt: Reproducible, efficient and collaborative optimization benchmarks"**, which provides a reproducible and optimized setup for training ResNet18 on the CIFAR-10 dataset. This ensures that the training methodology aligns with established benchmarks for reproducibility and comparability.
### Data Preprocessing
The following transformations were applied to the CIFAR-10 dataset:
- **Base Transformations (applied to both training and test sets):**
- Conversion to PyTorch tensors using `ToTensor()`.
- Normalization using mean `(0.4914, 0.4822, 0.4465)` and standard deviation `(0.2023, 0.1994, 0.2010)`.
- **Training Set Augmentation (only for training data):**
- **RandomCrop(32, padding=4):** Randomly crops images with padding for spatial variation.
- **RandomHorizontalFlip():** Randomly flips images horizontally with a 50% probability.
These augmentations help improve the model's ability to generalize by introducing variability in the training data.
### Model Description
- **Developed by:** Jaeung Lee
- **Model type:** Image Classification
- **License:** MIT
### Related Work
This model is part of the research conducted using the [Machine Unlearning Comparator](https://github.com/gnueaj/Machine-Unlearning-Comparator). The tool was developed to compare various machine unlearning methods and their effects on models.
## Uses
### Direct Use
These models can be directly used for evaluating the effect of excluding specific classes from the CIFAR-10 dataset during training.
### Out-of-Scope Use
The models are not suitable for tasks requiring general-purpose image classification beyond the CIFAR-10 dataset.
## How to Get Started with the Model
Use the code below to load the models with the appropriate architecture and weights:
```python
import torch
import torch.nn as nn
from torchvision import models
def get_resnet18(num_classes=10):
model = models.resnet18(weights=None)
model.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1, bias=False)
model.maxpool = nn.Identity()
model.fc = nn.Linear(model.fc.in_features, num_classes)
return model
# Load a pretrained model
def load_model(model_path, num_classes=10):
model = get_resnet18(num_classes=num_classes)
model.load_state_dict(torch.load(model_path))
return model
# Example usage
model = load_model("resnet18_cifar10_no_airplane.pth", num_classes=10)
```
## Citation
If you use this repository or its models in your work, please consider citing it:
## 📄 Paper
[Unlearning Comparator: A Visual Analytics System for Comparative Evaluation of Machine Unlearning Methods](https://arxiv.org/abs/2508.12730)
**APA:**
Jaeung Lee. (2024). ResNet18 Models Trained on CIFAR-10 with Class Exclusion. Retrieved from https://huggingface.co/jaeunglee/resnet18-cifar10-unlearn
## License
This repository is shared under the [MIT License](https://opensource.org/licenses/MIT).