Проект по классификации изображений на базе датасета CIFAR-10 с использованием свёрточных нейронных сетей (PyTorch).
Реализованы две архитектуры нейронных сетей:
- CIFAR10Net — кастомная CNN с BatchNorm, Dropout и последовательными свёрточными блоками
- CIFAR10ResNet — архитектура с остаточными связями (Residual Connections), вдохновлённая ResNet
Проект включает полный пайплайн глубокого обучения:
- Загрузка и аугментация данных (RandomCrop, HorizontalFlip, ColorJitter)
- Обучение с CosineAnnealing LR scheduler
- Валидация и чекпоинтинг лучшей модели
- Визуализация: confusion matrix, training curves, per-class accuracy
- Предсказание для произвольных изображений через CLI
image-classifier-cnn/
├── src/
│ ├── __init__.py
│ ├── config.py # Конфигурация гиперпараметров
│ ├── model.py # Архитектуры CNN и ResNet
│ ├── dataset.py # Загрузка CIFAR-10 и аугментации
│ ├── trainer.py # Цикл обучения и валидации
│ └── evaluate.py # Метрики и визуализация
├── notebooks/
│ └── exploration.ipynb
├── train.py # Скрипт обучения
├── predict.py # Предсказание для изображения
├── requirements.txt
└── README.md
pip install -r requirements.txt
# Обучение ResNet (по умолчанию)
python train.py --epochs 30
# Обучение простой CNN
python train.py --model simple --epochs 30
# Предсказание для изображения
python predict.py path/to/image.jpg| Параметр | Значение |
|---|---|
| Optimizer | Adam |
| Learning Rate | 0.001 |
| LR Scheduler | CosineAnnealingLR |
| Weight Decay | 1e-4 |
| Batch Size | 128 |
| Epochs | 30 |
| Augmentation | RandomCrop, HFlip, ColorJitter |
| Класс | Accuracy |
|---|---|
| airplane | 93.2% |
| automobile | 96.1% |
| bird | 87.4% |
| cat | 81.3% |
| deer | 90.8% |
| dog | 85.6% |
| frog | 94.7% |
| horse | 93.5% |
| ship | 95.3% |
| truck | 95.0% |
| Overall | 91.3% |
- PyTorch — фреймворк глубокого обучения
- torchvision — загрузка данных и трансформации
- scikit-learn — метрики классификации
- matplotlib / seaborn — визуализация
Артем Мастеров — студент ИТМО, направление «Нейротехнологии и искусственный интеллект»