| | import gradio as gr |
| | from datasets import load_dataset |
| | import pandas as pd |
| | import time |
| |
|
| | |
| | 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) |
| | 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": |
| | columns.extend(["archivo_midi", "etiqueta"]) |
| | progress(1, desc="Esquema CSV generado con 茅xito.") |
| | return ", ".join(columns) |
| |
|
| | |
| | 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"] |
| | } |
| | 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) |
| | if modality in dataset_map: |
| | results.extend(dataset_map[modality]) |
| | progress(1, desc="B煤squeda de datasets completada.") |
| | return "\n".join(results) |
| |
|
| | |
| | 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"]) |
| | |
| | filtered_df = df[[col for col in schema_columns if col in df.columns]] |
| | datasets.append(filtered_df) |
| | time.sleep(2) |
| | 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) |
| |
|
| | |
| | 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"], |
| | 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") |
| |
|
| | |
| | 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) |
| |
|
| | |
| | demo.launch() |