SignsDetectionAI/main.py

79 lines
2.7 KiB
Python
Raw Normal View History

import os
import subprocess
2025-01-05 22:53:09 +01:00
from src.pipeline import ObjectDetectionPipeline
from src.classifiers.bayesian import BayesianClassifier
from collections import defaultdict
2025-01-05 22:53:09 +01:00
# Définissez le mode d'analyse ici : "plan" ou "page"
analysis_mode = "plan"
2025-01-05 22:53:09 +01:00
if __name__ == "__main__":
# Configuration basée sur le mode
if analysis_mode == "plan":
dataset_path = "data/catalogueSymbol"
model_path = "models/bayesian_modelPLAN.pth"
image_path = "data/plan.png"
else:
dataset_path = "data/catalogue"
model_path = "models/bayesian_modelPAGE.pth"
image_path = "data/page.png"
# Lancer l'entraînement via train.py
print(f"Lancement de l'entraînement pour le mode '{analysis_mode}'...")
try:
subprocess.run(["python", "train.py", dataset_path, model_path], check=True)
print(f"Entraînement terminé et modèle sauvegardé dans {model_path}")
except subprocess.CalledProcessError as e:
print(f"Erreur lors de l'exécution de train.py : {e}")
exit(1)
# Chargement du modèle bayésien
print(f"Chargement du modèle bayésien depuis {model_path}")
bayesian_model = BayesianClassifier()
try:
bayesian_model.load_model(model_path)
print(f"Modèle bayésien chargé depuis {model_path}")
except Exception as e:
print(f"Erreur lors du chargement du modèle : {e}")
exit(1)
# Vérification de l'existence de l'image
if not os.path.exists(image_path):
print(f"L'image de test {image_path} n'existe pas.")
exit(1)
2025-01-05 22:53:09 +01:00
# Initialisation du dossier de sortie
output_dir = "output"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
2025-01-05 22:53:09 +01:00
# Initialisation de la pipeline
print("Initialisation de la pipeline...")
pipeline = ObjectDetectionPipeline(image_path=image_path, model=bayesian_model, output_dir=output_dir)
2025-01-05 22:53:09 +01:00
# Définition du mode (plan ou page)
pipeline.set_mode(analysis_mode)
2025-01-05 22:53:09 +01:00
# Chargement de l'image
print("Chargement de l'image...")
try:
pipeline.load_image()
except FileNotFoundError as e:
print(e)
exit(1)
2025-01-05 22:53:09 +01:00
# Détection et classification des objets
print("Détection et classification des objets...")
try:
class_counts, detected_objects = pipeline.detect_and_classify_objects()
print("Classes détectées :", class_counts)
except Exception as e:
print(f"Erreur lors de la détection/classification : {e}")
exit(1)
2025-01-05 22:53:09 +01:00
# Sauvegarde et affichage des résultats
print("Sauvegarde et affichage des résultats...")
2025-01-05 22:53:09 +01:00
pipeline.display_results(class_counts, detected_objects)
print(f"Les résultats ont été sauvegardés dans le dossier : {output_dir}")