Vae-Fashion-Mnist

0

Описание

Лабораторная работа №4: Генерация изображений с использованием вариационного автоэнкодера (VAE) на датасете Fashion-MNIST. Полная реализация на TensorFlow/Keras с визуализациями и анализом латентного пространства.

Языки

  • Python100%
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
README.md

Лабораторная работа №4: Генерация изображений с использованием вариационного автоэнкодера (VAE)

1. Цель работы

  • Практическое освоение принципов работы вариационного автоэнкодера (VAE) и его отличий от обычных автоэнкодеров.
  • Изучение концепции латентного пространства и его свойств (интерполяция, семантическая организация).
  • Получение навыков работы с вероятностными моделями и reparameterization trick.
  • Освоение методов оценки качества генеративных моделей.

2. Теоретическое введение

Вариационный автоэнкодер (VAE) — это генеративная модель, которая учится параметризовать распределение данных. В отличие от обычного автоэнкодера, энкодер VAE предсказывает параметры распределения (μ и σ) в латентном пространстве, а не конкретные точки. Это позволяет генерировать новые данные, сэмплируя из латентного пространства.

3. Датасет

Использовался датасет Fashion-MNIST, содержащий 70 000 изображений одежды (60 000 тренировочных, 10 000 тестовых) размером 28x28 пикселей в 10 классах.

4. Предобработка данных

  • Нормализация значений пикселей в диапазон [0, 1].
  • Добавление размерности канала (для сверточных слоев).

5. Архитектура модели

Модель состоит из энкодера и декодера. Энкодер преобразует входное изображение в параметры латентного распределения (z_mean, z_log_var), а затем с помощью reparameterization trick получается латентный вектор z. Декодер восстанавливает изображение из латентного вектора.

Энкодер

Input(28, 28, 1) Conv2D(32, 3, strides=2, padding='same', activation='relu') Conv2D(64, 3, strides=2, padding='same', activation='relu') Flatten() Dense(16, activation='relu') Dense(latent_dim) -> z_mean Dense(latent_dim) -> z_log_var Sampling -> z

Графики обучения

Декодер

Input(latent_dim) Dense(7764, activation='relu') Reshape((7, 7, 64)) Conv2DTranspose(64, 3, strides=2, padding='same', activation='relu') Conv2DTranspose(32, 3, strides=2, padding='same', activation='relu') Conv2DTranspose(1, 3, padding='same', activation='sigmoid')

Графики обучения

6. Гиперпараметры обучения

  • Оптимизатор: Adam
  • Learning rate: 0.001
  • Размер батча: 128
  • Количество эпох: 30
  • Размер латентного пространства: 2 (для визуализации)

![параметры обучения ](Parametre learning.png)

Начало

Графики обучения

Начало

Графики обучения

7. Графики обучения

График 01

График 01 обучения

График 02

График 02 обучения

8. Результаты

Визуализация латентного пространства

Генерация

Figure_1

Рисунки 01

Figure_2

Рисунки 02

Генерация новых изображений

Генерация

Интерполяция

Интерполяция

9. Выводы

9.1. КАЧЕСТВО РЕКОНСТРУКЦИИ:

  • VAE успешно научился восстанавливать изображения одежды из Fashion-MNIST.
  • Реконструкции получаются слегка размытыми, что характерно для VAE и является следствием регуляризации через KL-дивергенцию.
  • Более высокие ошибки реконструкции наблюдаются для сложных классов (например, "рубашка") которые имеют большую вариативность.

9.2. ЛАТЕНТНОЕ ПРОСТРАНСТВО (при latent_dim=2):

  • Пространство организовано семантически: похожие классы расположены близко друг к другу.
  • Классы частично перекрываются из-за малой размерности латентного пространства.
  • KL-дивергенция успешно регуляризирует пространство, приближая его к N(0, I).

9.3. ГЕНЕРАТИВНЫЕ ВОЗМОЖНОСТИ:

  • Модель способна генерировать новые правдоподобные изображения при сэмплировании из N(0, I).
  • Интерполяция в латентном пространстве демонстрирует плавные семантические переходы. 2D манифолд показывает непрерывность пространства и вариативность генерируемых объектов.

9.4. ОГРАНИЧЕНИЯ И ВОЗМОЖНЫЕ УЛУЧШЕНИЯ:

  • При latent_dim=2 модель имеет ограниченную способность к точной реконструкции.
  • Увеличение latent_dim до 32-64 улучшит качество, но усложнит визуализацию. Добавление большего количества слоев и нейронов в энкодере/декодере может улучшить качество. Использование более продвинутых архитектур (например, Residual VAE) или функций потерь (perceptual loss) может дать лучшие результаты. Для Fashion-MNIST можно использовать больше эпох обучения (50-100).

9.5. ПРАКТИЧЕСКАЯ ПОЛЬЗА:

  • VAE может использоваться для генерации новых дизайнов одежды.
  • Латентные представления могут служить признаками для задач классификации.
  • Интерполяция позволяет создавать промежуточные стили одежды. История обучения сохранена в: results/training_history.npy Метрики сохранены в: results/performance_metrics.npy Ошибка при сохранении: The filename must end in .weights.h5'. Received: filepath=vae_model/fashion_mnist_vae.h5 Продолжение без сохранения ...

10. Ссылки