Update app.py
Browse files
app.py
CHANGED
|
@@ -554,32 +554,37 @@ caption_model.fit(
|
|
| 554 |
"""### **Opci贸n para guardar el modelo entrenado**"""
|
| 555 |
|
| 556 |
#con est谩 opci贸n vemos los pesos del modelo en una lista
|
| 557 |
-
pesos = caption_model.get_weights()
|
| 558 |
|
| 559 |
#guardamos esos pesos en formato npy - en este caso lo guardamos entrenado con una 茅poca, ya que si quitamos el fit o el entrenamiento nos da error, por lo que siempre tenemos que
|
| 560 |
#entrenarle al modelo con una 茅poca para despu茅s configurarle con otro con 10 茅pocas
|
| 561 |
-
np.save('pesos1.npy', np.array(pesos, dtype=object), allow_pickle=True)
|
| 562 |
|
| 563 |
#aqu铆 configuramos los pesos que estaban entrenados con una 茅poca con diez - nosotros corrimos anteriormente con 10 y nos descargamos
|
| 564 |
import os
|
| 565 |
import numpy as np
|
| 566 |
|
| 567 |
#Carga del modelo
|
| 568 |
-
archivo_pesos = os.path.join("
|
| 569 |
caption_model = np.load(archivo_pesos, allow_pickle=True)
|
| 570 |
|
| 571 |
#Interfaz para gradio
|
| 572 |
def generate_caption(sample_img):
|
| 573 |
-
|
| 574 |
-
sample_img = np.random.choice(valid_images)
|
| 575 |
sample_img = decode_and_resize(sample_img)
|
| 576 |
img = sample_img.numpy().clip(0, 255).astype(np.uint8)
|
| 577 |
plt.imshow(img)
|
| 578 |
plt.show()
|
|
|
|
|
|
|
| 579 |
img = tf.expand_dims(sample_img, 0)
|
| 580 |
-
|
| 581 |
-
encoded_img = caption_model.encoder(
|
| 582 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 583 |
for i in range(max_decoded_sentence_length):
|
| 584 |
tokenized_caption = vectorization([decoded_caption])[:, :-1]
|
| 585 |
mask = tf.math.not_equal(tokenized_caption, 0)
|
|
@@ -591,16 +596,18 @@ def generate_caption(sample_img):
|
|
| 591 |
if sampled_token == "<end>":
|
| 592 |
break
|
| 593 |
decoded_caption += " " + sampled_token
|
|
|
|
|
|
|
| 594 |
decoded_caption = decoded_caption.replace("<start> ", "")
|
| 595 |
decoded_caption = decoded_caption.replace(" <end>", "").strip()
|
|
|
|
|
|
|
| 596 |
text_to_say = decoded_caption
|
| 597 |
lenguage = "es-es"
|
| 598 |
-
gtts_object = gTTS(text =
|
| 599 |
-
lang = lenguage,
|
| 600 |
-
slow = False )
|
| 601 |
gtts_object.save("gtts.mp3")
|
| 602 |
audio = "gtts.mp3"
|
| 603 |
-
|
| 604 |
return decoded_caption, audio
|
| 605 |
|
| 606 |
demo = gr.Interface(fn = generate_caption,inputs = gr.Image(label="Imagen"), outputs = [gr.Text(label="Descripci贸n textual"), gr.Audio(label="Audio")], theme ='darkhuggingface', title = 'DESCRIPCI脫N DE IM脕GENES DE RIPIOS DE PERFORACI脫N',
|
|
|
|
| 554 |
"""### **Opci贸n para guardar el modelo entrenado**"""
|
| 555 |
|
| 556 |
#con est谩 opci贸n vemos los pesos del modelo en una lista
|
| 557 |
+
#pesos = caption_model.get_weights()
|
| 558 |
|
| 559 |
#guardamos esos pesos en formato npy - en este caso lo guardamos entrenado con una 茅poca, ya que si quitamos el fit o el entrenamiento nos da error, por lo que siempre tenemos que
|
| 560 |
#entrenarle al modelo con una 茅poca para despu茅s configurarle con otro con 10 茅pocas
|
| 561 |
+
#np.save('pesos1.npy', np.array(pesos, dtype=object), allow_pickle=True)
|
| 562 |
|
| 563 |
#aqu铆 configuramos los pesos que estaban entrenados con una 茅poca con diez - nosotros corrimos anteriormente con 10 y nos descargamos
|
| 564 |
import os
|
| 565 |
import numpy as np
|
| 566 |
|
| 567 |
#Carga del modelo
|
| 568 |
+
archivo_pesos = os.path.join("pesos10.npy")
|
| 569 |
caption_model = np.load(archivo_pesos, allow_pickle=True)
|
| 570 |
|
| 571 |
#Interfaz para gradio
|
| 572 |
def generate_caption(sample_img):
|
| 573 |
+
# Decodifica y redimensiona la imagen de entrada
|
|
|
|
| 574 |
sample_img = decode_and_resize(sample_img)
|
| 575 |
img = sample_img.numpy().clip(0, 255).astype(np.uint8)
|
| 576 |
plt.imshow(img)
|
| 577 |
plt.show()
|
| 578 |
+
|
| 579 |
+
# Prepara la imagen para el modelo
|
| 580 |
img = tf.expand_dims(sample_img, 0)
|
| 581 |
+
img_embed = caption_model.cnn_model(img)
|
| 582 |
+
encoded_img = caption_model.encoder(img_embed, training=False)
|
| 583 |
+
|
| 584 |
+
# Inicializa la descripci贸n con el token de inicio
|
| 585 |
+
decoded_caption = "<start>"
|
| 586 |
+
|
| 587 |
+
# Itera para generar la descripci贸n
|
| 588 |
for i in range(max_decoded_sentence_length):
|
| 589 |
tokenized_caption = vectorization([decoded_caption])[:, :-1]
|
| 590 |
mask = tf.math.not_equal(tokenized_caption, 0)
|
|
|
|
| 596 |
if sampled_token == "<end>":
|
| 597 |
break
|
| 598 |
decoded_caption += " " + sampled_token
|
| 599 |
+
|
| 600 |
+
# Elimina los tokens de inicio y fin de la descripci贸n
|
| 601 |
decoded_caption = decoded_caption.replace("<start> ", "")
|
| 602 |
decoded_caption = decoded_caption.replace(" <end>", "").strip()
|
| 603 |
+
|
| 604 |
+
# Convierte la descripci贸n a audio
|
| 605 |
text_to_say = decoded_caption
|
| 606 |
lenguage = "es-es"
|
| 607 |
+
gtts_object = gTTS(text=text_to_say, lang=lenguage, slow=False)
|
|
|
|
|
|
|
| 608 |
gtts_object.save("gtts.mp3")
|
| 609 |
audio = "gtts.mp3"
|
| 610 |
+
|
| 611 |
return decoded_caption, audio
|
| 612 |
|
| 613 |
demo = gr.Interface(fn = generate_caption,inputs = gr.Image(label="Imagen"), outputs = [gr.Text(label="Descripci贸n textual"), gr.Audio(label="Audio")], theme ='darkhuggingface', title = 'DESCRIPCI脫N DE IM脕GENES DE RIPIOS DE PERFORACI脫N',
|