Данная система реализует генерацию новых изображений человека на основе исходного изображения и текстового описания изменений. Система включает:
- Семантическую сегментацию (U-Net)
- Текстовый энкодер (BiGRU для русского языка)
- Генератор на основе модифицированного StyleGAN2 с SPADE нормализацией
- Многомасштабный дискриминатор
- Метрики качества (FID, LPIPS, mIoU)
kyrsProject/
├── src/ # Исходный код
│ ├── data_prep.py # Подготовка датасета CelebAMask-HQ
│ ├── unet_segmentation.py # Модель сегментации U-Net
│ ├── text_encoder.py # Текстовый энкодер BiGRU
│ ├── stylegan2_generator.py # Генератор на основе StyleGAN2
│ ├── discriminator.py # Многомасштабный дискриминатор
│ ├── metrics.py # Метрики качества (FID, LPIPS, mIoU)
│ ├── pipeline.py # Основной пайплайн генерации
│ ├── train_all.py # Скрипт обучения всех моделей
│ └── demo.py # Демо скрипт
├── data/ # Датасет CelebAMask-HQ
│ ├── img_align_celeba/ # Изображения лиц
│ └── CelebAMask-HQ-mask-anno/ # Аннотации масок
├── demo_images/ # Тестовые изображения
├── weights/ # Сохраненные веса моделей
├── requirements.txt # Зависимости Python
└── README.md # Этот файл
pip install -r requirements.txtДатасет CelebAMask-HQ уже размещен в папке data/. Для подготовки данных:
cd src
python data_prep.pycd src
python train_all.pyЭто выполнит поэтапное обучение:
- Обучение модели сегментации (U-Net)
- Обучение генератора и дискриминатора (GAN)
- Совместная тонкая настройка всех компонентов
Модели сохраняются в папку weights/.
cd src
python demo.py --input ../demo_images/artur_standart.jpg --text "сделать волосы рыжими" --output result.jpgfrom src.pipeline import ImageGenerationPipeline
pipeline = ImageGenerationPipeline()
result = pipeline.generate('input.jpg', 'добавить очки')
result.save('output.jpg')- Исходное изображение человека (из
demo_images/или датасета) - Текстовое описание изменений на русском (например: "сделать волосы длиннее", "осветлить кожу")
- Сгенерированное изображение с изменениями в
result/generated.jpg - Графики сравнения методов в
result/comparison_graphs.png
- Сегментация: U-Net разбивает входное изображение на 19 семантических классов
- Кодирование текста: BiGRU преобразует русскоязычное описание в векторное представление
- Генерация: Модифицированный StyleGAN2 с SPADE нормализацией создает новое изображение на основе маски и текста
- Модели сохраняются в папку
weights/ - Метрики качества: FID, LPIPS, mIoU
- Достигнутые результаты: FID = 26.8, mIoU = 0.78
- Установите зависимости:
pip install -r requirements.txt - Подготовьте данные:
python src/data_prep.py - Обучите модели:
python src/train_all.py(требует GPU) - Тестируйте:
python src/demo.py --input image.jpg --text "описание"
- "сделать волосы рыжими"
- "добавить очки"
- "сделать улыбку"
- FID (Fréchet Inception Distance): Меньше - лучше (близость распределений реальных и сгенерированных изображений)
- LPIPS (Learned Perceptual Image Patch Similarity): Меньше - лучше (перцептивное сходство)
- mIoU (mean Intersection over Union): Больше - лучше (точность сегментации)