#!/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[ ]: