Iratze commited on
Commit
a0da899
verified
1 Parent(s): b4d3ecc

Delete generate_images.py

Browse files
Files changed (1) hide show
  1. generate_images.py +0 -72
generate_images.py DELETED
@@ -1,72 +0,0 @@
1
-
2
- from diffusers import StableDiffusionPipeline
3
- import torch
4
- from tensorflow.keras.applications.inception_v3 import InceptionV3, preprocess_input
5
- from scipy.stats import entropy
6
- import numpy as np
7
- from PIL import Image
8
- import torchvision.transforms as transforms
9
-
10
- # Cargar el modelo de Stable Diffusion preentrenado
11
- pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
12
- pipe.to("cuda") # Usar GPU
13
-
14
- # Funci贸n para generar varias im谩genes del mismo prompt
15
- def generate_images(prompt, num_images=5):
16
- images = []
17
- for _ in range(num_images):
18
- image = pipe(prompt).images[0]
19
- images.append(image)
20
- return images
21
-
22
- # Generar m煤ltiples im谩genes desde el mismo prompt
23
- prompt = "A red apple on a wooden table"
24
- generated_images = generate_images(prompt, num_images=10)
25
-
26
- # Convertir im谩genes a un formato compatible con el modelo InceptionV3 (299x299, 3 canales)
27
- def preprocess_images(images):
28
- transform = transforms.Compose([
29
- transforms.Resize((299, 299)),
30
- transforms.ToTensor()
31
- ])
32
- processed_images = [transform(image) for image in images]
33
- processed_images = torch.stack(processed_images).numpy()
34
-
35
- # Reordenar los ejes de (batch, channels, height, width) a (batch, height, width, channels)
36
- processed_images = np.transpose(processed_images, (0, 2, 3, 1))
37
-
38
- return processed_images
39
-
40
- processed_images = preprocess_images(generated_images)
41
-
42
- # Cargar el modelo preentrenado de InceptionV3
43
- inception_model = InceptionV3(include_top=True, weights='imagenet')
44
-
45
- # Funci贸n para calcular el Inception Score
46
- def inception_score(images, num_splits=10):
47
- # Preprocesar las im谩genes para InceptionV3
48
- processed_images = preprocess_input(images)
49
-
50
- # Obtener las predicciones del modelo InceptionV3
51
- preds = inception_model.predict(processed_images)
52
-
53
- # Calcular la distribuci贸n marginal
54
- p_y = np.mean(preds, axis=0)
55
-
56
- # Calcular la KL divergencia para cada imagen
57
- kl_divs = [entropy(pred, p_y) for pred in preds]
58
-
59
- # Promediar los puntajes de KL y calcular el exponente
60
- avg_kl_div = np.mean(kl_divs)
61
- inception_score = np.exp(avg_kl_div)
62
-
63
- return inception_score
64
-
65
- # Calcular el Inception Score para las im谩genes generadas desde el mismo prompt
66
- score = inception_score(processed_images)
67
- print(f"Inception Score: {score}")
68
-
69
- # Opcional: Guardar las im谩genes generadas
70
- for i, image in enumerate(generated_images):
71
- image.save(f"generated_image_{i}.png")
72
- print(f"La imagen ha sido guardada como 'generated_image_{i}.png'.")