oomarsaldivar's picture
Upload 5 files
89ab9e2
#!/usr/bin/env python
# coding: utf-8
# # 1. Pre-procesamiento de datos
# In[14]:
import cv2
import numpy as np
# In[15]:
def redimensionar(imagenes,tamano):
imagenes_ajustadas = []
for imagen in imagenes:
imagen_temporal = cv2.resize (imagen,tamano)
imagenes_ajustadas.append(imagen_temporal)
return imagenes_ajustadas
# In[16]:
def contraste(imagenes, valor_contraste):
imagenes_ajustadas = []
for imagen in imagenes:
imagen_temporal = np.clip(imagen*valor_contraste,0,255)
imagenes_ajustadas.append(imagen_temporal)
return imagenes_ajustadas
# In[17]:
def rasgos(imagenes,width):
imagenes_ajustadas = []
for imagen in imagenes:
img = imagen
img = cv2.resize(img, (width,int(width*img.shape[0]/img.shape[1])))
c = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)
mag = np.sqrt(c[:,:,0]**2 + c[:,:,1]**2)
spectralResidual = np.exp(np.log(mag) - cv2.boxFilter(np.log(mag), -1, (3,3)))
c[:,:,0] = c[:,:,0] * spectralResidual / mag
c[:,:,1] = c[:,:,1] * spectralResidual / mag
c = cv2.dft(c, flags = (cv2.DFT_INVERSE | cv2.DFT_SCALE))
mag = c[:,:,0]**2 + c[:,:,1]**2
cv2.normalize(cv2.GaussianBlur(mag,(9,9),3,3), mag, 0., 1., cv2.NORM_MINMAX)
imagenes_ajustadas.append(mag)
return imagenes_ajustadas
# In[18]:
import gradio as gr
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import models
modelo1 = tf.keras.models.load_model('modeloIA_1.h5')
modelo2 = tf.keras.models.load_model('modeloIA_2.h5')
modelo3 = tf.keras.models.load_model('modeloIA_3.h5')
modelo4 = tf.keras.models.load_model('modeloIA_4.h5')
# In[27]:
def ejecutar_modelo(imagen_app):
imagen_app = cv2.cvtColor (imagen_app,cv2.COLOR_BGR2GRAY)
imagenes_app = []
imagenes_app.append(imagen_app)
imagen_temporal = rasgos (imagenes_app, 128)
imagen_temporal = redimensionar(imagen_temporal,(256,256))
imagen_temporal = contraste(imagen_temporal,0.4)
imagen_temporal = np.expand_dims(imagen_temporal, axis=3)
resultado1 = modelo1.predict(imagen_temporal)
resultado1 = int (np.argmax (resultado1, axis=1))
resultado2 = modelo2.predict(imagen_temporal)
resultado2 = int (np.argmax (resultado2, axis=1))
resultado3 = modelo3.predict(imagen_temporal)
resultado3 = int (np.argmax (resultado3, axis=1))
resultado4 = modelo4.predict(imagen_temporal)
resultado4 = int (np.argmax (resultado4, axis=1))
clase1 = ['armonia', 'ausencia', 'contraste', 'ninguno']
clase2 =['ausencia', 'fragmentacion', 'ninguno', 'unidad']
clase3 = ['ausencia', 'equilibrio', 'inestabilidad', 'ninguno']
clase4 = ['agudeza', 'ausencia', 'difusividad', 'ninguno']
return clase1 [resultado1], clase2 [resultado2], clase3 [resultado3], clase4 [resultado4]
# In[28]:
gui = gr.Interface (
fn = ejecutar_modelo,
inputs = gr.Image (),
outputs = ["text", "text", "text", "text"],
title ='Evaluador de imagenes usando IA',
)
gui.launch(inbrowser = True)
# In[ ]:
# In[ ]: