SergioSCA commited on
Commit
d628526
verified
1 Parent(s): 4279614
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()