Spaces:
Runtime error
Runtime error
import gradio as gr | |
import torch | |
import torch.nn as nn | |
import numpy as np | |
class Generator(nn.Module): | |
def __init__(self): | |
super(Generator, self).__init__() | |
self.main = nn.Sequential( | |
nn.ConvTranspose2d(128, 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) | |
netG = Generator() | |
device = "cuda" if torch.cuda.is_available() else "cpu" | |
model_file = "model.pth" | |
netG.load_state_dict(torch.load(model_file, map_location=device)) | |
netG.eval() | |
def generate_image(): | |
try: | |
noise = torch.randn(1, 128, 1, 1, device=device) | |
with torch.no_grad(): | |
fake_image = netG(noise).cpu() | |
img = fake_image.squeeze().cpu().numpy() | |
img = np.transpose(img, (1, 2, 0)) | |
img = (img + 1) / 2.0 | |
img = (img * 255).astype(np.uint8) | |
return img | |
except Exception as e: | |
print(f"Error generating image: {e}") | |
def generate_images(seed, num_images, is_random): | |
try: | |
generated_images = [] | |
if is_random: | |
seed = np.random.randint(0, 99999999) | |
else: | |
np.random.seed(seed) | |
torch.manual_seed(seed) | |
noise = torch.randn(num_images, 128, 1, 1).to(device) | |
with torch.no_grad(): | |
fake_images = netG(noise) | |
for img in fake_images: | |
img = img.squeeze().cpu().numpy() | |
img = np.transpose(img, (1, 2, 0)) | |
img = (img + 1) / 2.0 | |
img = (img * 255).astype(np.uint8) | |
generated_images.append(img) | |
print("Seed:", seed) | |
return generated_images | |
except Exception as e: | |
print(f"Error generating images: {e}") | |
title = "DCGAN Image Generator ποΈπ¨" | |
description = "Generate non-existing images using DCGAN." | |
content = """ | |
## How to Use π¨ | |
To generate an image, follow these steps: | |
1. Click \"Generate\" button to generate a image! | |
2. Once the image is generated, you can save it or share it to the community! | |
""" | |
iface = gr.Interface( | |
fn=generate_image, | |
inputs=None, | |
outputs=gr.Image(label="Image", type="pil"), | |
title=title, | |
description=description, | |
article=content, | |
api_name="generate" | |
) | |
iface.queue() | |
iface.launch() | |