import gradio as gr import tensorflow as tf from tensorflow.keras.layers import DepthwiseConv2D # Función personalizada para DepthwiseConv2D def custom_depthwise_conv2d(**kwargs): kwargs.pop('groups', None) # Eliminar el argumento 'groups' return DepthwiseConv2D(**kwargs) custom_objects = {'DepthwiseConv2D': custom_depthwise_conv2d} # Ruta del modelo path_to_model = "modelo_jeysshon_iaderm.h5" # Cargar el modelo con custom_objects try: model = tf.keras.models.load_model(path_to_model, custom_objects=custom_objects) print("Modelo cargado exitosamente.") except Exception as e: print(f"Error al cargar el modelo: {e}") raise labels = [ 'Acné / Rosácea', 'Queratosis Actínica / Carcinoma Basocelular', 'Dermatitis Atópica', 'Enfermedad Bullosa', 'Celulitis Impétigo (Infecciones Bacterianas)', 'Eczema', 'Exanthems (Erupciones Cutáneas por Medicamentos)', 'Pérdida de Cabello (Alopecia)', 'Herpes HPV', 'Trastornos de Pigmentación', 'Lupus', 'Melanoma (Cáncer de Piel)', 'Hongos en las Uñas', 'Hiedra Venenosa', 'Psoriasis (Lichen Planus)', 'Sarna Lyme', 'Queratosis Seborreica', 'Enfermedad Sistémica', 'Tinea Ringworm (Infecciones Fúngicas)', 'Urticaria Ronchas', 'Tumores Vasculares', 'Vasculitis', 'Verrugas Molusco' ] def classify_image(image): # Redimensionar la imagen a (224, 224) antes de la predicción image = tf.image.resize(image, (224, 224)) image = tf.expand_dims(image, axis=0) # Añadir una dimensión para el batch prediction = model.predict(image).flatten() confidences = {labels[i]: float(prediction[i]) for i in range(len(labels))} return confidences title = "AI-DERM DETECTION" article = ( "Se propone un sistema automatizado para el diagnóstico de las 23 enfermedades comunes de la piel:\n\n" "1. Acné / Rosácea\n" "2. Queratosis Actínica / Carcinoma Basocelular\n" "3. Dermatitis Atópica\n" "4. Enfermedades Bullosas\n" "5. Celulitis / Impétigo (Infecciones Bacterianas)\n" "6. Eccema\n" "7. Exantemas (Erupciones Cutáneas por Medicamentos)\n" "8. Pérdida de Cabello (Alopecia)\n" "9. Herpes / VPH\n" "10. Trastornos de la Pigmentación\n" "11. Lupus\n" "12. Melanoma (Cáncer de Piel)\n" "13. Hongos en las Uñas\n" "14. Hiedra Venenosa\n" "15. Psoriasis (liquen plano)\n" "16. Sarna / Enfermedad de Lyme\n" "17. Queratosis Seborreica\n" "18. Enfermedad Sistémica\n" "19. Tiña / Tiña (Infecciones Fúngicas)\n" "20. Urticaria / Ronchas\n" "21. Tumores Vasculares\n" "22. Vasculitis\n" "23. Verrugas / Molusco\n\n" "Este sistema automatizado se basa en un modelo preentrenado EfficientNetB7, capaz de diagnosticar 23 enfermedades cutáneas comunes. La interfaz te permite cargar una imagen y obtener las probabilidades de cada enfermedad detectada." "

" "AI-DERM . Jeysshon Bustos . 2023." "

" ) description = ( "Utilizamos la interfaz de usuario generada por Gradio para ingresar imágenes a nuestra red neuronal convolucional, la cual ha sido entrenada con el propósito de realizar clasificaciones de imágenes. Esta red neuronal demostró su capacidad al lograr una precisa categorización de la imagen proporcionada. En ocasiones, resulta beneficioso ajustar el tamaño de la imagen mediante la interfaz de Gradio para potenciar aún más su rendimiento." ) examples = [ ['./123.jpg'], ['./acne-closed-comedo-2.jpg'], ['./distal-subungual-onychomycosis-86.jpeg'], ['./cherry-angioma-16.jpg'], ['./malignant-melanoma-16.jpg'], ['./tinea-primary-lesion-15.jpeg'], ['./congenital-nevus-35.jpg'], ['./tinea-body-137.jpg'], ['./atopic-13.jpg'], ['./atopic-7.jpg'] ] gr.Interface( fn=classify_image, title=title, article=article, description=description, inputs=gr.Image(), outputs=gr.Label(num_top_classes=4), examples=examples ).launch()