Update README.md
Browse files
README.md
CHANGED
|
@@ -1,3 +1,81 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
👟 Sneakers_Classification
|
| 2 |
+
Модель для классификации кроссовок с использованием сверточной нейронной сети на основе предобученного ResNet50. Проект реализован на PyTorch и обучается на кастомном датасете изображений различных моделей кроссовок.
|
| 3 |
+
|
| 4 |
+
📂 Описание проекта
|
| 5 |
+
Цель — определить тип/модель кроссовок на изображении. Модель использует предобученную архитектуру ResNet50, дообученную на вашем собственном датасете, содержащем изображения кроссовок, отсортированные по папкам (одна папка = один класс).
|
| 6 |
+
|
| 7 |
+
🧠 Используемые технологии
|
| 8 |
+
Python
|
| 9 |
+
|
| 10 |
+
PyTorch
|
| 11 |
+
|
| 12 |
+
torchvision
|
| 13 |
+
|
| 14 |
+
scikit-learn
|
| 15 |
+
|
| 16 |
+
PIL
|
| 17 |
+
|
| 18 |
+
matplotlib / seaborn
|
| 19 |
+
|
| 20 |
+
🗂️ Структура данных
|
| 21 |
+
Путь к данным:
|
| 22 |
+
/kaggle/input/sneakers-classification/sneakers-dataset/sneakers-dataset/
|
| 23 |
+
|
| 24 |
+
python-repl
|
| 25 |
+
Copy
|
| 26 |
+
Edit
|
| 27 |
+
sneakers-dataset/
|
| 28 |
+
├── Adidas/
|
| 29 |
+
│ ├── img1.jpg
|
| 30 |
+
│ ├── img2.jpg
|
| 31 |
+
│ └── ...
|
| 32 |
+
├── Nike/
|
| 33 |
+
│ ├── img1.jpg
|
| 34 |
+
│ ├── img2.jpg
|
| 35 |
+
│ └── ...
|
| 36 |
+
├── Puma/
|
| 37 |
+
│ └── ...
|
| 38 |
+
...
|
| 39 |
+
⚙️ Запуск обучения
|
| 40 |
+
📌 Подготовка
|
| 41 |
+
bash
|
| 42 |
+
Copy
|
| 43 |
+
Edit
|
| 44 |
+
pip install torch torchvision scikit-learn matplotlib seaborn
|
| 45 |
+
🚀 Запуск скрипта
|
| 46 |
+
python
|
| 47 |
+
Copy
|
| 48 |
+
Edit
|
| 49 |
+
python sneakers_train.py
|
| 50 |
+
В скрипте используется автоматическое определение устройства (GPU, если доступен) и происходит обучение в течение 50 эпох с использованием Adam и CrossEntropyLoss.
|
| 51 |
+
|
| 52 |
+
🏗️ Архитектура модели
|
| 53 |
+
В качестве основы используется ResNet50, где последний fully connected слой заменяется на:
|
| 54 |
+
|
| 55 |
+
python
|
| 56 |
+
Copy
|
| 57 |
+
Edit
|
| 58 |
+
model.fc = nn.Linear(model.fc.in_features, NUM_CLASSES)
|
| 59 |
+
Модель сохраняется в файл best_model.pth после каждой эпохи с улучшением метрики точности на валидации.
|
| 60 |
+
|
| 61 |
+
📊 Оценка модели
|
| 62 |
+
Во время обучения выводятся:
|
| 63 |
+
|
| 64 |
+
Loss (потери)
|
| 65 |
+
|
| 66 |
+
Accuracy (точность)
|
| 67 |
+
|
| 68 |
+
Также вы можете дополнительно использовать confusion_matrix и classification_report из sklearn на тестовой выборке после обучения.
|
| 69 |
+
|
| 70 |
+
💾 Файлы
|
| 71 |
+
sneakers_train.py — основной скрипт обучения
|
| 72 |
+
|
| 73 |
+
best_model.pth — веса лучшей модели после обучения
|
| 74 |
+
|
| 75 |
+
📈 Результаты
|
| 76 |
+
Использовано классов: NUM_CLASSES
|
| 77 |
+
|
| 78 |
+
Лучшая точность валидации: X.XXX (выводится в конце обучения)
|
| 79 |
+
|
| 80 |
+
📬 Обратная связь
|
| 81 |
+
Если у вас есть предложения или улучшения, открывайте Issue или Pull Request!
|