Files changed (1) hide show
  1. app.py +85 -81
app.py CHANGED
@@ -1,95 +1,99 @@
1
  import gradio as gr
2
- from datasets import load_dataset, list_datasets
3
- import pandas as pd
4
- import time
5
 
6
- def generate_csv(modalities, vision_tasks, nlp_tasks, audio_tasks, progress=gr.Progress()):
7
- tasks = []
8
- if "Visión" in modalities:
9
- tasks.extend(vision_tasks)
10
- if "NLP" in modalities:
11
- tasks.extend(nlp_tasks)
12
- if "Audio" in modalities:
13
- tasks.extend(audio_tasks)
 
 
14
 
15
- columns = []
16
- total_steps = len(tasks)
17
- progress(0, desc="Iniciando generación del esquema CSV...")
18
 
19
- for i, task in enumerate(tasks):
20
- modality = get_modality(task)
21
- progress((i + 1) / total_steps, desc=f"Procesando {modality} - {task}...")
22
- time.sleep(1)
23
- columns.extend(get_columns_for_task(task))
24
 
25
- progress(1, desc="Esquema CSV generado con éxito.")
26
- return ", ".join(columns)
 
27
 
28
- def get_modality(task):
29
- if task in ["Detección de Objetos", "Segmentación Semántica", "Clasificación de Imágenes", "Reconocimiento Facial"]:
30
- return "Visión"
31
- elif task in ["Clasificación de Texto", "Generación de Texto", "Traducción Automática", "Análisis de Sentimientos"]:
32
- return "NLP"
33
- elif task in ["Clasificación de Audio", "Transcripción de Voz", "Separación de Fuentes", "Síntesis de Voz", "MIDI"]:
34
- return "Audio"
35
- return "Desconocido"
 
 
 
 
36
 
37
- def get_columns_for_task(task):
38
- column_mapping = {
39
- "Detección de Objetos": ["imagen", "etiqueta", "coordenadas_bbox"],
40
- "Segmentación Semántica": ["imagen", "máscara"],
41
- "Clasificación de Imágenes": ["imagen", "etiqueta"],
42
- "Reconocimiento Facial": ["imagen", "identidad"],
43
- "Clasificación de Texto": ["texto", "etiqueta"],
44
- "Generación de Texto": ["entrada", "salida"],
45
- "Traducción Automática": ["texto_original", "traducción"],
46
- "Análisis de Sentimientos": ["texto", "sentimiento"],
47
- "Clasificación de Audio": ["archivo_audio", "etiqueta"],
48
- "Transcripción de Voz": ["archivo_audio", "texto"],
49
- "Separación de Fuentes": ["archivo_audio", "fuente_separada"],
50
- "Síntesis de Voz": ["texto", "archivo_audio_generado"],
51
- "MIDI": ["archivo_midi", "etiqueta"]
52
- }
53
- return column_mapping.get(task, [])
54
 
55
- def search_datasets(modalities, progress=gr.Progress()):
56
- # ... (sin cambios)
 
 
 
 
 
57
 
58
- def analyze_datasets(selected_datasets, csv_schema, progress=gr.Progress()):
59
- datasets = []
60
- schema_columns = [col.strip() for col in csv_schema.split(",")]
61
- total_steps = len(selected_datasets.split("\n"))
62
- progress(0, desc="Iniciando análisis de datasets...")
 
63
 
64
- for i, url in enumerate(selected_datasets.split("\n")):
65
- if url.strip():
66
- progress((i + 1) / total_steps, desc=f"Analizando dataset: {url}")
67
- try:
68
- dataset = load_dataset(url.strip(), trust_remote_code=True)
69
- df = pd.DataFrame(dataset["train"])
70
 
71
- # Asegurar que todas las columnas del esquema estén presentes
72
- for col in schema_columns:
73
- if col not in df.columns:
74
- df[col] = float('nan')
 
 
 
75
 
76
- filtered_df = df[schema_columns]
77
- datasets.append(filtered_df)
78
- time.sleep(2)
79
- except Exception as e:
80
- error_message = f"Error al analizar {url}: {str(e)}"
81
- print(error_message)
82
- progress(1, desc=error_message)
83
- return error_message
84
-
85
- combined_dataset = pd.concat(datasets, ignore_index=True)
86
- progress(1, desc="Análisis completado.")
87
- return combined_dataset.to_csv(index=False)
88
-
89
- def reorder_columns(csv_schema, column_order, progress=gr.Progress()):
90
- # ... (sin cambios)
91
-
92
- with gr.Blocks(title="Diseñador de Redes Neuronales Multimodales") as demo:
93
- # ... (sin cambios)
94
 
95
  demo.launch()
 
1
  import gradio as gr
 
 
 
2
 
3
+ modalities_tasks = {
4
+ "NLP": ["Clasificación de Texto", "Generación de Texto", "Resumen", "Traducción", "QA"],
5
+ "Audio": ["Reconocimiento de Voz", "Clasificación de Audio", "Generación de Audio", "Separación de Fuentes"],
6
+ "Vision": ["Clasificación de Imágenes", "Detección de Objetos", "Segmentación", "Generación de Imágenes"],
7
+ "RAG": ["Búsqueda Semántica", "Generación Aumentada", "QA Contextual"],
8
+ "Code": ["Generación de Código", "Depuración", "Traducción entre Lenguajes"],
9
+ "Time Series": ["Predicción", "Detección de Anomalías", "Clasificación Temporal"],
10
+ "Graph": ["Predicción de Nodos", "Clasificación de Grafos", "Generación de Grafos"],
11
+ "Tabular": ["Regresión", "Clasificación", "Imputación de Datos"]
12
+ }
13
 
14
+ def generate_csv_header(*args):
15
+ # Lógica para generar encabezado multimodal
16
+ return "Encabezado generado: ID,Modalidad-Tarea1,Modalidad-Tarea2,..."
17
 
18
+ def search_datasets():
19
+ # Lógica para buscar datasets en HuggingFace
20
+ return [["Dataset1", "Descripción1"], ["Dataset2", "Descripción2"]]
 
 
21
 
22
+ def generate_dataset():
23
+ # Lógica para generar dataset multimodal
24
+ return "sample.csv"
25
 
26
+ with gr.Blocks() as demo:
27
+ gr.Markdown("# 🧠 Diseñador de Modelos Multimodales")
28
+
29
+ # Panel 1: Selección de Modalidades
30
+ with gr.Row():
31
+ gr.Markdown("## 1. Selección de Modalidades")
32
+ modality_components = []
33
+ for modality in modalities_tasks:
34
+ with gr.Column():
35
+ modality_components.append(
36
+ gr.Checkbox(label=modality, interactive=True)
37
+ )
38
 
39
+ # Panel 2: Selección de Tareas
40
+ with gr.Row():
41
+ gr.Markdown("## 2. Configuración de Tareas")
42
+ task_components = []
43
+ for modality in modalities_tasks:
44
+ with gr.Column(visible=False) as col:
45
+ task_dropdown = gr.Dropdown(
46
+ choices=modalities_tasks[modality],
47
+ label=f"Tareas para {modality}",
48
+ interactive=True
49
+ )
50
+ task_components.append((col, task_dropdown))
 
 
 
 
 
51
 
52
+ # Actualizar visibilidad de tareas
53
+ for i, modality_check in enumerate(modality_components):
54
+ modality_check.change(
55
+ lambda val, idx=i: gr.update(visible=val),
56
+ inputs=modality_check,
57
+ outputs=task_components[i][0]
58
+ )
59
 
60
+ # Panel 3: Generar Encabezado CSV
61
+ with gr.Row():
62
+ gr.Markdown("## 3. Configuración del Dataset")
63
+ with gr.Column():
64
+ header_btn = gr.Button("Generar Encabezado del CSV")
65
+ header_output = gr.Textbox(label="Estructura del Dataset")
66
 
67
+ # Panel 4: Búsqueda de Datasets
68
+ with gr.Row():
69
+ gr.Markdown("## 4. Datasets Disponibles")
70
+ with gr.Column():
71
+ search_btn = gr.Button("Buscar en HuggingFace")
72
+ datasets_table = gr.DataFrame(headers=["Dataset", "Descripción"])
73
 
74
+ # Panel 5: Generación del Dataset
75
+ with gr.Row():
76
+ gr.Markdown("## 5. Generación Final")
77
+ with gr.Column():
78
+ generate_btn = gr.Button("Generar Dataset Multimodal")
79
+ dataset_output = gr.File(label="Dataset Generado", file_types=[".csv"])
80
+ download_btn = gr.DownloadButton("⬇️ Descargar CSV", visible=False)
81
 
82
+ # Conectar funcionalidades
83
+ header_btn.click(
84
+ generate_csv_header,
85
+ inputs=[*modality_components, *[t[1] for t in task_components]],
86
+ outputs=header_output
87
+ )
88
+
89
+ search_btn.click(
90
+ search_datasets,
91
+ outputs=datasets_table
92
+ )
93
+
94
+ generate_btn.click(
95
+ generate_dataset,
96
+ outputs=[dataset_output, download_btn]
97
+ )
 
 
98
 
99
  demo.launch()