Projects Hub
npm run dev
Tous les projets
Actif IA / ML

SGC Lab (Blind Room Classifier)

Laboratoire expérimental de classification aveugle de pièces architecturales BIM

Statut défini par surcharge: active

Ouvrir dans VS Code

Démarrer

  • Benchmark d'accuracy (P1 + P2)

    $ python src/_baseline.py
  • Smoke test complet (P1–P5 + seuils + score no-memo observationnel)

    $ python tools/smoke_test.py
  • Matrice d'ablation (contribution de chaque passe/règle — OBLIGATOIRE avant d'ajouter une règle ; ~15 s)

    $ python tools/ablation_matrix.py
  • Viewer HTML interactif pour un dataset

    $ python src/export_viewer.py data/spatial_graph_P1.json
  • Interface web locale

    $ python classify_launcher.py

Jalons

3/3 terminés · .agents/project_orchestrator/PROJECT.md
M1 Core Solver & Pipeline Integration DONE
M2 Accuracy Hardening & Tuning DONE
M3 Gate: Review, Challenge & Forensic Audit DONE (PASS)

Documentation

Blind Room Classification

Classification aveugle des pièces d'un bâtiment à partir d'un graphe spatial (Revit BIM).

Aucun nom Revit n'est utilisé pour classer les pièces.
Seule la géométrie, la topologie du graphe et le contexte d'appartement sont exploités.

📊 Performances (v8.1)

Dataset Pièces évaluées Accuracy
P1 (multi-projets) 1 217 99.4%
P2 (LD-CLL) 362 94.5%

🚀 Démarrage rapide

# Prérequis : Python ≥ 3.10 (stdlib uniquement, aucune dépendance)

# Interface web (recommandé)
python classify_launcher.py
# → http://localhost:8500

# Ligne de commande
python src/export_viewer.py data/spatial_graph_P1.json
# → output/spatial_graph_P1_viewer.html

# Benchmark d'accuracy
python src/_baseline.py

🏗️ Architecture

classify_launcher.py   → Interface web locale (port 8500)
data/                  → Fichiers JSON d'entrée (graphes spatiaux P1–P5)
src/
  ├── blind_classifier.py        → Orchestrateur du pipeline de classification
  ├── apartment_clustering_v2.py → Clustering par betweenness + BFS
  ├── export_viewer.py           → Générateur de viewer HTML interactif
  ├── graph_metrics.py           → Métriques de centralité (btw, closeness, degree, eigen)
  ├── graph_templates.py         → 44 templates WL globaux
  ├── _baseline.py               → Benchmark d'accuracy P1/P2
  ├── rules/                     → Règles de classification modulaires
  │   ├── geometric.py           → Passe 1 : R1–R10 (géométrie pure)
  │   ├── templates.py           → Passe 0.5 : template matching WL global
  │   ├── motifs.py              → Passe 1.5 : motifs locaux (suite parentale, hub, annexe)
  │   ├── inter_pass.py          → Inter-passes + post-pass corrections (11 règles)
  │   ├── topological.py         → Passe 2 : propagation topologique
  │   ├── apartment_context.py   → Passe 3 : contexte d'appartement
  │   ├── cluster_correction.py  → Passe 4 : correction par cluster
  │   └── entrance_coherence.py  → Passe 5 : cohérence des entrées
  └── wl/                        → Module Weisfeiler-Lehman (hasher + analyzer)
output/                → Fichiers générés (viewers HTML, résultats JSON)
docs/guide/            → Documentation interactive (12 pages HTML)
docs/research/         → Artifacts de recherche (handoffs, rapports, roadmap)
autoresearch/          → Framework d'expérimentation autonome (Karpathy loop)

🔬 Pipeline de classification

Passe 0   — Entrées structurelles (betweenness centrality)        conf 1.0
Passe 0.5 — Template matching WL (44 templates globaux)           conf 1.0
Passe 1   — Géométrie pure (R1–R10 : area, portes, fenêtres)     conf 0.65–0.95
Passe 1.5 — Motifs locaux (suite parentale, hub, annexe cuisine)  conf 0.85–0.95
Inter     — Corrections architecturales (R_adj, R_bedroom, etc.)
Passe 2   — Propagation topologique (voisinage d'ancres fiables)  conf 0.55–0.85
Passe 3   — Contexte d'appartement (buanderie, cuisine, centralité)
Passe 4   — Correction par cluster (types manquants)              conf 0.55–0.78
Passe 5   — Cohérence des entrées (1 entrée par appartement)      conf 0.80
Post      — 11 règles de raffinement (hubs, WL local, fallbacks)  conf 0.55–0.85

📖 Documentation

🔧 Prérequis

  • Python ≥ 3.10 (stdlib uniquement, aucune dépendance externe)