File size: 7,074 Bytes
efdd1f5 b3fc81e efdd1f5 187ebd3 efdd1f5 b3fc81e 187ebd3 b3fc81e efdd1f5 1c951a9 b3fc81e efdd1f5 b3fc81e efdd1f5 1c951a9 efdd1f5 b3fc81e efdd1f5 b3fc81e efdd1f5 1c951a9 efdd1f5 1c951a9 efdd1f5 1c951a9 efdd1f5 1c951a9 b3fc81e efdd1f5 1c951a9 efdd1f5 1c951a9 efdd1f5 1c951a9 efdd1f5 1c951a9 efdd1f5 187ebd3 efdd1f5 1c951a9 efdd1f5 cba4d16 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | import gradio as gr
from datasets import load_dataset
import pandas as pd
import time
# Funci贸n para generar el esquema CSV basado en las selecciones del usuario
def generate_csv(modalities, vision_tasks, nlp_tasks, audio_tasks, progress=gr.Progress()):
tasks = []
if "Visi贸n" in modalities:
tasks.extend(vision_tasks)
if "NLP" in modalities:
tasks.extend(nlp_tasks)
if "Audio" in modalities:
tasks.extend(audio_tasks)
columns = []
total_steps = len(modalities) * len(tasks)
progress(0, desc="Iniciando generaci贸n del esquema CSV...")
for i, (modality, task) in enumerate(zip(modalities * len(tasks), tasks)):
progress(i / total_steps, desc=f"Procesando {modality} - {task}...")
time.sleep(1) # Simulaci贸n de procesamiento
if modality == "Visi贸n" and task == "Detecci贸n de Objetos":
columns.extend(["imagen", "etiqueta", "coordenadas_bbox"])
elif modality == "Visi贸n" and task == "Segmentaci贸n Sem谩ntica":
columns.extend(["imagen", "m谩scara"])
elif modality == "Visi贸n" and task == "Clasificaci贸n de Im谩genes":
columns.extend(["imagen", "etiqueta"])
elif modality == "Visi贸n" and task == "Reconocimiento Facial":
columns.extend(["imagen", "identidad"])
elif modality == "NLP" and task == "Clasificaci贸n de Texto":
columns.extend(["texto", "etiqueta"])
elif modality == "NLP" and task == "Generaci贸n de Texto":
columns.extend(["entrada", "salida"])
elif modality == "NLP" and task == "Traducci贸n Autom谩tica":
columns.extend(["texto_original", "traducci贸n"])
elif modality == "NLP" and task == "An谩lisis de Sentimientos":
columns.extend(["texto", "sentimiento"])
elif modality == "Audio" and task == "Clasificaci贸n de Audio":
columns.extend(["archivo_audio", "etiqueta"])
elif modality == "Audio" and task == "Transcripci贸n de Voz":
columns.extend(["archivo_audio", "texto"])
elif modality == "Audio" and task == "Separaci贸n de Fuentes":
columns.extend(["archivo_audio", "fuente_separada"])
elif modality == "Audio" and task == "S铆ntesis de Voz":
columns.extend(["texto", "archivo_audio_generado"])
elif modality == "Audio" and task == "MIDI": # Nueva tarea MIDI
columns.extend(["archivo_midi", "etiqueta"])
progress(1, desc="Esquema CSV generado con 茅xito.")
return ", ".join(columns)
# Funci贸n para buscar datasets p煤blicos relevantes
def search_datasets(modalities, progress=gr.Progress()):
dataset_map = {
"Visi贸n": ["coco", "imagenet", "openimages", "cityscapes"],
"NLP": ["imdb", "glue", "wmt14", "sentiment140"],
"Audio": ["common_voice", "librispeech", "fma", "musdb18", "lmd"] # Dataset MIDI agregado
}
results = []
total_steps = len(modalities)
progress(0, desc="Iniciando b煤squeda de datasets...")
for i, modality in enumerate(modalities):
progress(i / total_steps, desc=f"Buscando datasets para {modality}...")
time.sleep(1) # Simulaci贸n de procesamiento
if modality in dataset_map:
results.extend(dataset_map[modality])
progress(1, desc="B煤squeda de datasets completada.")
return "\n".join(results)
# Funci贸n para analizar datasets seleccionados y organizarlos seg煤n el esquema CSV
def analyze_datasets(selected_datasets, csv_schema, progress=gr.Progress()):
datasets = []
schema_columns = [col.strip() for col in csv_schema.split(",")]
total_steps = len(selected_datasets.split("\n"))
progress(0, desc="Iniciando an谩lisis de datasets...")
for i, url in enumerate(selected_datasets.split("\n")):
if url.strip():
progress(i / total_steps, desc=f"Analizando dataset: {url}")
try:
dataset = load_dataset(url.strip())
df = pd.DataFrame(dataset["train"])
# Filtrar columnas seg煤n el esquema CSV
filtered_df = df[[col for col in schema_columns if col in df.columns]]
datasets.append(filtered_df)
time.sleep(2) # Simulaci贸n de procesamiento
except Exception as e:
progress(1, desc=f"Error al analizar el dataset {url}: {str(e)}")
return f"Error al analizar el dataset {url}: {str(e)}"
combined_dataset = pd.concat(datasets, ignore_index=True)
progress(1, desc="An谩lisis completado. Datos organizados seg煤n el esquema CSV.")
return combined_dataset.to_csv(index=False)
# Interfaz de Usuario con Gradio
with gr.Blocks(title="Dise帽ador de Redes Neuronales Multimodales") as demo:
gr.Markdown("# Dise帽ador de Redes Neuronales Multimodales")
gr.Markdown("Define tu red neuronal multimodal, genera datasets espec铆ficos y entrena modelos.")
with gr.Row():
modalities = gr.CheckboxGroup(
["Visi贸n", "NLP", "Audio"], label="Selecciona Modalidades"
)
with gr.Row():
vision_tasks = gr.CheckboxGroup(
["Detecci贸n de Objetos", "Segmentaci贸n Sem谩ntica", "Clasificaci贸n de Im谩genes", "Reconocimiento Facial"],
label="Tareas para Visi贸n",
visible=False
)
nlp_tasks = gr.CheckboxGroup(
["Clasificaci贸n de Texto", "Generaci贸n de Texto", "Traducci贸n Autom谩tica", "An谩lisis de Sentimientos"],
label="Tareas para NLP",
visible=False
)
audio_tasks = gr.CheckboxGroup(
["Clasificaci贸n de Audio", "Transcripci贸n de Voz", "Separaci贸n de Fuentes", "S铆ntesis de Voz", "MIDI"], # Tarea MIDI a帽adida
label="Tareas para Audio",
visible=False
)
def update_task_visibility(modalities):
return [
gr.update(visible="Visi贸n" in modalities),
gr.update(visible="NLP" in modalities),
gr.update(visible="Audio" in modalities)
]
modalities.change(update_task_visibility, inputs=[modalities], outputs=[vision_tasks, nlp_tasks, audio_tasks])
with gr.Row():
generate_csv_btn = gr.Button("Generar Esquema CSV")
csv_output = gr.Textbox(label="Esquema CSV Generado")
with gr.Row():
search_datasets_btn = gr.Button("Buscar Datasets P煤blicos")
datasets_output = gr.Textbox(label="Datasets Disponibles", lines=5)
with gr.Row():
analyze_datasets_btn = gr.Button("Analizar Datasets Seleccionados")
processed_output = gr.File(label="Dataset Procesado")
# Conexiones de botones a funciones
generate_csv_btn.click(
generate_csv,
inputs=[modalities, vision_tasks, nlp_tasks, audio_tasks],
outputs=csv_output
)
search_datasets_btn.click(search_datasets, inputs=[modalities], outputs=datasets_output)
analyze_datasets_btn.click(analyze_datasets, inputs=[datasets_output, csv_output], outputs=processed_output)
# Lanzar la aplicaci贸n
demo.launch() |