pollinator-classifier / fix_yaml.py
leonelgv's picture
Add Configuration file: fix_yaml.py
39106cc verified
#!/usr/bin/env python3
"""
Script para corregir la configuración YAML del dataset
"""
import yaml
import os
from pathlib import Path
def fix_dataset_config():
"""Corrige el archivo de configuración YAML"""
config_path = "/home/leonel/sistema_polinizador/Dataset/Classification/dataset_config.yaml"
print("🔧 CORRIGIENDO CONFIGURACIÓN YAML")
print("=" * 50)
# Verificar que existe el archivo
if not os.path.exists(config_path):
print(f"❌ No se encontró el archivo: {config_path}")
return False
# Verificar estructura del dataset
dataset_base_path = "/home/leonel/sistema_polinizador/Dataset/Classification"
train_path = os.path.join(dataset_base_path, "Train")
val_path = os.path.join(dataset_base_path, "Validation")
test_path = os.path.join(dataset_base_path, "Test")
print(f"📁 Verificando estructura del dataset:")
print(f" Base: {dataset_base_path} - {'✅' if os.path.exists(dataset_base_path) else '❌'}")
print(f" Train: {train_path} - {'✅' if os.path.exists(train_path) else '❌'}")
print(f" Validation: {val_path} - {'✅' if os.path.exists(val_path) else '❌'}")
print(f" Test: {test_path} - {'✅' if os.path.exists(test_path) else '❌'}")
if not all(os.path.exists(p) for p in [dataset_base_path, train_path, val_path, test_path]):
print("❌ Faltan carpetas del dataset")
return False
# Obtener clases del directorio Train
class_names = []
if os.path.exists(train_path):
class_names = sorted([d for d in os.listdir(train_path)
if os.path.isdir(os.path.join(train_path, d))])
print(f"🏷️ Clases encontradas: {len(class_names)}")
for i, name in enumerate(class_names):
print(f" {i}: {name}")
# Crear configuración corregida
corrected_config = {
'path': dataset_base_path, # Ruta absoluta al directorio base
'train': 'Train', # Ruta relativa desde 'path'
'val': 'Validation', # Ruta relativa desde 'path'
'test': 'Test', # Ruta relativa desde 'path'
'nc': len(class_names), # Número de clases
'names': {i: name for i, name in enumerate(class_names)} # Mapeo índice -> nombre
}
# Guardar configuración corregida
with open(config_path, 'w') as f:
yaml.dump(corrected_config, f, default_flow_style=False, sort_keys=False)
print(f"\n✅ Configuración corregida guardada en: {config_path}")
# Mostrar contenido del archivo corregido
print(f"\n📄 Contenido del archivo YAML:")
with open(config_path, 'r') as f:
content = f.read()
print(content)
return True
if __name__ == "__main__":
success = fix_dataset_config()
if success:
print("\n🎯 Configuración corregida. Ahora puedes ejecutar el entrenamiento.")
else:
print("\n❌ Error corrigiendo la configuración.")