| | --- |
| | pipeline_tag: text-to-image |
| | tags: |
| | - alphagpt |
| | --- |
| | |
| | # AlphaGPT-Image (DCGAN Faces) |
| |
|
| | Это **собственная** реализация DCGAN, обученная на датасете CelebA. Модель генерирует лица людей в разрешении 64x64 пикселя. |
| |
|
| | ### Характеристики: |
| | * **Стиль:** Old AI / Surrealism (характерная размытость и артефакты ранних нейросетей). |
| | * **Архитектура:** DCGAN (Deep Convolutional Generative Adversarial Network). |
| | * **Обучение:** 20 эпох на 200,000+ изображений CelebA через Kaggle GPU. |
| | * **Параметры:** $nz=100$, $ngf=64$, $ndf=64$. |
| |
|
| | ### Как использовать (Python / PyTorch) |
| |
|
| | Для запуска тебе понадобятся библиотеки `torch`, `torchvision`, `matplotlib` и `huggingface_hub`. |
| |
|
| | ```python |
| | import torch |
| | import torch.nn as nn |
| | import torchvision.utils as vutils |
| | import matplotlib.pyplot as plt |
| | from huggingface_hub import hf_hub_download |
| | |
| | # 1. Архитектура Генератора |
| | class Generator(nn.Module): |
| | def __init__(self): |
| | super(Generator, self).__init__() |
| | self.main = nn.Sequential( |
| | nn.ConvTranspose2d(100, 64 * 8, 4, 1, 0, bias=False), |
| | nn.BatchNorm2d(64 * 8), nn.ReLU(True), |
| | nn.ConvTranspose2d(64 * 8, 64 * 4, 4, 2, 1, bias=False), |
| | nn.BatchNorm2d(64 * 4), nn.ReLU(True), |
| | nn.ConvTranspose2d(64 * 4, 64 * 2, 4, 2, 1, bias=False), |
| | nn.BatchNorm2d(64 * 2), nn.ReLU(True), |
| | nn.ConvTranspose2d(64 * 2, 64, 4, 2, 1, bias=False), |
| | nn.BatchNorm2d(64), nn.ReLU(True), |
| | nn.ConvTranspose2d(64, 3, 4, 2, 1, bias=False), |
| | nn.Tanh() |
| | ) |
| | def forward(self, input): return self.main(input) |
| | |
| | # 2. Загрузка весов |
| | device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
| | repo_id = "prostochel097/alphagpt-image" # Твой ID репозитория |
| | |
| | weights_path = hf_hub_download(repo_id=repo_id, filename="generator.pth") |
| | model = Generator().to(device) |
| | model.load_state_dict(torch.load(weights_path, map_location=device)) |
| | model.eval() |
| | |
| | # 3. Генерация |
| | noise = torch.randn(1, 100, 1, 1, device=device) |
| | with torch.no_grad(): |
| | fake = model(noise).detach().cpu() |
| | |
| | plt.figure(figsize=(5,5)) |
| | plt.axis("off") |
| | plt.imshow(vutils.make_grid(fake, padding=2, normalize=True).permute(1,2,0)) |
| | plt.show() |
| | ``` |