Guide utilisateur

Chapitre 4 — Fenêtres auxiliaires

En plus de la fenêtre principale (viewport 3D et inspecteur), RadianceKit gère sept autres fenêtres, toutes ouvertes via le menu Help. Trois d'entre elles — Pareto Dashboard, Holdout Analysis, BayesOpt Console — sont des outils d'analyse indépendants. Pour chacune un argument CLI permet de faire pointer la fenêtre dès le démarrage sur un fichier précis (–dashboard-dir, –holdout-file, –bayesopt-autorun).

Les quatre fenêtres simples (User Guide, Keyboard Shortcuts, Manage Storage, plus les sous-entrées Open Training Logs / Open Exports Folder) reçoivent une courte entrée par contrôle. Les trois fenêtres d'analyse sont documentées plus en détail. À la fin du chapitre, une section de renvois croisés vers l'inspecteur.

User Guide (W1–W4)

Fenêtre User Guide avec sidebar à gauche et contenu Markdown rendu à droite
Fenêtre User Guide avec sidebar à gauche et contenu Markdown rendu à droite

Ce que c'est : une fenêtre d'aide intégrée qui rend le guide_<langue>.md livré avec l'app. La langue est déduite des réglages.

Pour un rappel rapide sur un point précis. La référence détaillée est ce manuel ; la fenêtre d'aide intégrée est l'équivalent d'un –help en ligne de commande.

W1NavigationSplitView (sidebar + détail)

Help → User Guide (⌘?).

TECHNIQUE

Disposition à deux colonnes avec sidebar étroite (au moins 180 pt) pour l'arborescence et zone de détail défilante pour le contenu Markdown. Taille min 700 × 500 pt. À la première ouverture, charge le guide_<lang>.md depuis le bundle (fallback guide_en.md), le parse en blocs et extrait la structure des titres pour la sidebar.

W2List (sidebar des titres)

Colonne gauche dans la fenêtre User Guide.

TECHNIQUE

Liste des titres H2 et H3 du Markdown courant. Les H4 et plus profonds sont ignorés. ID d'ancre générés par slugification du texte.

W3Button (titre → saut d'ancre)

Un bouton par ligne de sidebar.

TECHNIQUE

Chaque entrée est un bouton qui définit l'ancre courante avec animation douce 0,3 s.

W4ScrollView (contenu détaillé)

Colonne droite.

TECHNIQUE

Zone de contenu défilante avec lazy rendering — les longs guides peuvent avoir plus de 200 blocs Markdown. Largeur max 720 pt.

Keyboard Shortcuts (W5–W6)

Fenêtre Keyboard Shortcuts
Fenêtre Keyboard Shortcuts — cinq groupes Navigation/Views/Capture/Editor/Training

Liste de référence statique en cinq sections. Navigation : glisser souris, Shift+Drag, molette (zoom), WASD, Q/E, F (orbite/vol), double-clic (recentrer), Cmd+molette (FOV). Views : R, T, P, B, 0-9, flèches. Capture : S, V, C. Editor : Tab, clic, Option+clic, X/Delete, Cmd-Z, [/]. Training : M9–M14.

Ce que c'est : un aperçu statique des raccourcis. Contenu codé en dur.

Quand vous cherchez le chemin le plus rapide pour faire quelque chose dans le viewport.

W5ScrollView (zone de contenu)

Help → Keyboard Shortcuts (⌘/).

TECHNIQUE

Zone défilante simple. Padding 20 tout autour. Colonne gauche fixée à 180 pt. Aucune interaction sauf défilement.

W6VStack (sections de raccourcis)

Dans le ScrollView.

TECHNIQUE

Sections empilées alignées à gauche avec 16 pt d'espacement.

Manage Storage (W7–W12)

Fenêtre Manage Storage
Fenêtre Manage Storage — en-tête « 693 items · 16.74 GB total », tableau de fichiers PLY exportés triés par date

Vue tableau de tous les fichiers gérés par RadianceKit. Toolbar : « Show in Finder » + « Refresh ». Chaque ligne : icône, nom de fichier, date, taille, loupe (Reveal), corbeille (Move to Trash).

Ce que c'est : un aperçu d'occupation disque pour tout ce que RadianceKit dépose sous ~/Documents/RadianceKit/ — logs, exports, scènes, bundles capture, imports. N'est PAS un nettoyage automatique — vous décidez par entrée.

Quand le disque se remplit. Les logs et les exports s'accumulent.

W7Bouton « Show in Finder »

En-tête en haut à droite.

TECHNIQUE

Ouvre tout le dossier ~/Documents/RadianceKit/ dans le Finder.

W8Bouton « Refresh »

En-tête, à côté du bouton Finder.

TECHNIQUE

Déclenche un scan en arrière-plan. Parcourt chaque sous-dossier connu et génère une entrée par enfant direct. Calcule la taille récursive (préfère la consommation disque réelle avec hardlinks APFS).

W9List (entrées storage)

Contenu principal sous l'en-tête.

TECHNIQUE

Liste avec disposition par ligne : icône SF Symbol, nom, sous-titre, compteur d'octets, boutons Reveal et Trash. Tri primaire par type, secondaire par date décroissante.

W10Bouton de ligne « Reveal in Finder »

Par ligne, icône loupe.

TECHNIQUE

Ouvre le Finder et sélectionne l'élément spécifique.

W11Bouton de ligne « Move to Trash »

Par ligne, icône corbeille.

TECHNIQUE

Déclenche le dialogue (W12). Après confirmation, opération macOS « mettre à la corbeille » (réversible).

W12ConfirmationDialog (confirmation de suppression)

Déclenché par W11.

TECHNIQUE

Dialogue standard avec titre dynamique et message indiquant la récupération depuis la corbeille. Deux boutons : destructive et Cancel.

Pareto Dashboard (W13–W22)

Pareto Dashboard — état vide
Pareto Dashboard — état vide avant import de rapport

État vide avec call-to-action « Open Reports Folder… ».

Pareto Dashboard avec 129 rapports
Pareto Dashboard avec 129 rapports de benchmark chargés — Gaussians vs PSNR avec Pareto Front, filtres Scene/Strategy/Mip

Toolbar affiche « 129 reports of 129 ». Axes : X sur Gaussians, Y sur PSNR (dB). Scatter : points verts = Classic, bleus = MCMC. Ligne pointillée = Pareto Front. Chips de filtre : scènes, 2 stratégies, 3 options Mip.

Ce que c'est : un outil de comparaison multi-run. Chaque run d'entraînement (avec –benchmark) produit un rapport JSON avec PSNR, SSIM, LPIPS, gaussiennes et temps. Le dashboard lit un dossier entier de rapports et les trace en scatter 2D avec axes sélectionnables. La Pareto Front (points non dominés) est dessinée en pointillé.

Après au moins trois ou quatre rapports. Avec moins de points, la frontière n'est pas significative.

Les deux axes sont libres. Un point est Pareto-optimal si aucun autre n'est au moins aussi bon sur les deux dimensions. Les points sur la ligne sont les vrais candidats « meilleur préréglage ».

Restreindre à une scène, stratégie (Classic ou MCMC) ou Mip on/off.

Action suivante : enregistrer la meilleure configuration comme préréglage via l'inspecteur.

W13Bouton « Open Reports Folder… »

Toolbar en haut à gauche.

TECHNIQUE

Ouvre un dialogue de sélection. Task d'arrière-plan parse tous les .json. Rapports défectueux affichés en sidebar. Aussi via CLI : –dashboard-dir /chemin/.

W14Sélecteur « X-Axis »

Au-dessus du chart, à gauche.

TECHNIQUE

Sélecteur menu avec toutes les métriques (PSNR, SSIM, LPIPS, Gaussian-Count, time). Défaut Gaussian-Count.

W15Sélecteur « Y-Axis »

Au-dessus du chart, à côté de X-Axis.

TECHNIQUE

Identique à W14, défaut PSNR.

W16Toggle « Show Pareto Front »

À droite des sélecteurs d'axes.

TECHNIQUE

Toggle macOS standard. Si actif, ligne avec Pareto Front 2D dessinée en pointillé gris semi-transparent.

W17Chips filtre « Scene »

Sidebar droite.

TECHNIQUE

Chips pour chaque scène présente. Multi-sélection possible.

W18Chips filtre « Strategy »

Sous le filtre Scene.

TECHNIQUE

Comme W17 mais pour stratégies (« classic », « mcmc »).

W19Chips filtre « Mip-Splatting »

Sous le filtre Strategy.

TECHNIQUE

Filtre ternaire (au lieu d'un set) : « All » / « On » / « Off ». Mip-Splatting évalué en phase Q1.5 comme amélioration multi-échelle expérimentale ; conservé comme flag opt-in.

W20ChipButton (toggle filtre)

Composant helper utilisé dans W17/W18/W19.

TECHNIQUE

Wrapper bouton minimaliste. Si actif → couleur d'accent avec texte blanc. Sinon fond neutre.

W21Chart (scatter Pareto)

Zone centrale du dashboard.

TECHNIQUE

Diagramme Swift-Charts avec deux couches : un point par rapport (couleur par stratégie, symbole par Mip) ; ligne Pareto Front si toggle actif. Overlay capte la souris : point hover le plus proche sous 24 px.

W22Tooltip (détail au survol)

Sous le chart, affiché au hover.

TECHNIQUE

Stack horizontal : scène, tag stratégie, séparateur, métriques PSNR/SSIM/LPIPS/Gs/Time. Tag Mip si activé.

Holdout Analysis (W23–W29)

Holdout Analysis — état vide
Holdout Analysis — état vide avant chargement d'un transforms.json

État vide avec « Open transforms.json… ». Accepte les formats NeRF-Studio et Instant-NGP.

Holdout Globe
Holdout Globe avec 100 caméras NeRF-Blender Mic, 5 Folds de 20 caméras chacun, stratégie Angular active

En-tête montre le fichier et le nombre de caméras. Sidebar gauche : sélecteur Strategy (Angular ou Linear), slider k-Folds, sélecteur Test Fold, bouton Export. Panneau central : projection 3D-globe des caméras — vertes = Train, rouges = Test Fold actuel. Sidebar droite : Mean Nearest Angle par fold.

Ce que c'est : un visualiseur 3D pour votre arrangement caméra avec logique de cross-validation. Vous chargez un transforms.json ; l'app projette les directions de regard sur une sphère unité et les découpe en k folds avec marqueur de fold de test.

Pour faire de l'évaluation holdout. Le standard « every-8th view » est linéaire ; « angular » stratifie sur l'espace des angles de vue.

Angular (standard) : découpe par longitude en k secteurs égaux, bon pour orbites classiques. Linear (round-robin) : index = (image modulo k), fonctionne si pas de biais spatial.

Dans le globe 3D : verts (Training) et rouges (Test). Rouges clusterisés en un coin = mauvais holdout. Uniformes = bon. Score « Mean nearest angle » : petit = test proche du training (facile), grand = test loin (généralisation dure).

Vous exportez via M33 un fichier nerfstudio. Ouvrez Holdout (⇧⌘H), chargez le JSON, regardez le globe. k=5 par défaut. Si les marqueurs sont uniformes : « Export fold-assignment.json », et au prochain run avec –benchmark, cette répartition est utilisée comme test-holdout.

W23Bouton « Open transforms.json… »

Toolbar en haut à gauche.

TECHNIQUE

Dialogue de fichier limité aux JSON. Le loader parse le format nerfstudio et instant-ngp. Aussi via CLI : –holdout-file /chemin/.

W24Sélecteur « Strategy »

Sidebar gauche, en haut.

TECHNIQUE

Radio avec deux options. Changement déclenche recalcul automatique des folds.

W25Slider « k Folds »

Sidebar gauche, milieu.

TECHNIQUE

Slider 3 à 10, pas 1. k=5 standard (20 % de test par fold). k=10 beaucoup de données. k=3 peu de données.

W26Sélecteur « Test Fold »

Sidebar gauche, sous slider k.

TECHNIQUE

Sélecteur menu. Options 0..<k. Si index ≥ k, auto-remis à 0.

W27Bouton « Export fold-assignment.json »

Sidebar gauche, en bas.

TECHNIQUE

Dialogue avec nom par défaut fold-assignment.json. Encode la répartition (par frame : fold + meta stratégie).

W28SCNView (globe caméra 3D)

Panneau central.

TECHNIQUE

Vue globe SceneKit. Sphère wireframe (rayon 1, 36 segments), trois axes colorés, et une petite sphère marqueur (rayon 0.03) par caméra. Mise à jour matériaux : rouge pour Test, vert pour Training. Souris : rotation, zoom, pan.

W29FoldCard (tap to select fold)

Sidebar droite, section « Angular Correlation ».

TECHNIQUE

Une carte par fold avec deux lignes (haut : « Fold N » + cams, bas : « Mean nearest angle » + valeur en degrés). Tap sélectionne le fold.

BayesOpt Console (W30–W39)

BayesOpt Console — état vide
BayesOpt Console — état vide avant le démarrage du trial

État vide avec sélecteur Search-Space, slider Trial Budget (défaut 40), Random Seed (42).

BayesOpt Console après 40 trials
BayesOpt Console après 40 trials — Convergence chart monte abruptement, Best Value 0.9943

Statut « Finished — best 0.9943 after 40 trials ». Sidebar gauche : Search-Space, Trial Budget 40, Seed 42, liste paramètres. Centre : Convergence chart avec points gris (LHS), bleus (BayesOpt) et orange (restart). Sidebar droite : Trial Log avec tag init/bo/restart.

Ce que c'est : une console d'optimisation bayésienne pour la recherche d'hyperparamètres. BayesOpt cherche avec le moins d'expériences possible l'optimum d'une fonction inconnue.

Important : la version livrée mène l'optimisation contre un objectif de démo synthétique, pas contre de vrais runs (durerait des jours). La fenêtre doit montrer le comportement de l'optimiseur. Pour de vrais tunings (comme en phase Q7), un workflow CLI offline séparé est utilisé.

Trois cas : comprendre BayesOpt, planifier une nouvelle classe de scène, inspecter les search-spaces par défaut.

- Convergence chart : Y = meilleure objective atteinte. X = trial. Ligne plate 20+ trials → optimum trouvé. - Tableau Trial : trial avec valeur et tag. Meilleur trial avec étoile jaune. - Inspecteur Search-Space : paramètres du préréglage et plages.

W30Bouton « Start »

Toolbar gauche, Idle/Finished.

TECHNIQUE

Reset trial-list, passe en Running, génère Run-ID, lance task en arrière-plan. Initial samples = min(8, budget / 4 + 1). Protection stale-run.

W31Bouton « Pause »

Toolbar gauche, Running.

TECHNIQUE

Active pause-gate. Le runner attend en polling 50 ms. Trial en cours se termine, aucun nouveau lancé.

W32Bouton « Stop »

Toolbar gauche, Running et Paused.

TECHNIQUE

Interrompt le task runner, passe en Finished State. Trials calculés restent visibles. Bouton rouge.

W33Bouton « Resume »

Toolbar gauche, Paused.

TECHNIQUE

Lève pause-gate. Le task runner détecte la levée et lance le prochain trial.

W34Bouton « Save Best Config »

Toolbar droite (disabled si pas de bestTrial).

TECHNIQUE

Dialogue avec nom par défaut bayesopt-best.json. Construit payload : préréglage, index, valeur, paramètres décodés.

W35Sélecteur de préréglage « Search Space »

Sidebar gauche, en haut.

TECHNIQUE

Quatre options : « RadianceKit defaults (6-dim) », « Mip subset (2-dim) », « densify-until + ssim-weight + grad-thresh », « Bowl demo (1-dim) ». Pendant un run, non modifiable.

W36Slider « Trial Budget »

Sidebar gauche, sous Search-Space.

TECHNIQUE

Slider 10 à 200, pas 5. Défaut 40. Règle : dimension d → 10d à 20d trials.

W37Slider « Random Seed »

Sidebar gauche, sous budget.

TECHNIQUE

Slider 1 à 100, pas 1. Défaut 42. Seed pour LHS et noise. Même seed + même search-space + même budget = séquence identique.

W38Chart (Convergence)

Colonne centrale.

TECHNIQUE

Swift-Charts avec deux couches : ligne « best-so-far » monotone, un point par trial coloré par phase. Légende en haut à gauche.

W39Tableau (Trial Log)

Colonne droite.

TECHNIQUE

Zone défilante avec lignes trial. Par ligne : numéro monospaced, valeur, tag de phase, étoile jaune si meilleur. Auto-scroll vers la fin.

Fenêtre principale : courbe de loss et Gaussian Count (I39–I41, renvoi)

Trois affichages de l'inspecteur méritent une explication propre, parce qu'ils sont visibles pendant un entraînement et qu'il y a des règles empiriques pour juger d'un déroulé sain.

Quand la courbe est saine ? Trois phases : (1) Warmup — les 200–500 premières itérations, le loss tombe de ~0.15–0.25 à environ la moitié. (2) Densification — entre ~500 et densifyUntilIteration, le loss continue à descendre. Le compteur de gaussiennes augmente. (3) Refinement — ensuite, queue de plus en plus plate. Valeurs finales typiques : Tanks-&-Temples Truck P4 Quality → L1 ≈ 0.023 ; outdoor Mip-NeRF360 souvent 0.04–0.07.

Que signifie un plateau ? Deux interprétations : (a) convergé, plus rien à faire ; (b) bloqué (minimum local, cap au buffer-limit). Distinction : regardez le compteur de gaussiennes. Plat ET proche du cap MCMC = limite. Compteur qui croît mais loss qui ne descend pas = bloqué.

Quand abandonner ? Règle : 10K itérations sans amélioration du Min-Loss → arrêter.

Le plateau Gaussian Count n'est PAS un signal « fini ». Il signifie seulement que MCMC a atteint le cap ou que la densification Classic est épuisée. La vraie question « fini » n'est posée que par l'analyse holdout — PSNR/SSIM/LPIPS sur un test-set indépendant.

PSNR/Holdout est la vérité, le loss n'est qu'un proxy. Un loss bas ne signifie pas un bon modèle — overfitting. Pour la qualité finale, regardez les métriques holdout.

Règles empiriques

- User Guide et Keyboard Shortcuts : aide statique. Pour la profondeur, utilisez ce manuel. - Manage Storage à ouvrir dès que le disque tombe sous 10 %. - Pareto Dashboard utile à partir de 3-4 rapports. X = coûts, Y = qualité. - Holdout Analysis : avant de publier des benchmarks PSNR. - BayesOpt Console : surtout pour comprendre. Vrais tunings → CLI offline. - Plateau de loss et plateau de gaussiennes à interpréter séparément. La vraie qualité = PSNR holdout. - 10K itérations sans amélioration → arrêter.