Guide utilisateur

Chapitre 2 — Inspector (Expert View)

Mode expert vide — à gauche le Project Navigator avec Images/Cameras/Log, en-tête « Images (0) » et zone de dépôt « Drop images here / or tap + to import », au centre un Viewport vide, à droite l'Inspector avec six sections repliées (Presets, Cameras & Capture, Training, Progress, Look, Export), chacune avec un titre et une sous-ligne grise indiquant la phase ; en bas la ligne de statut « Idle » avec le bouton de démarrage vert et le bouton d'arrêt rouge
Mode expert vide — à gauche le Project Navigator avec Images/Cameras/Log, en-tête « Images (0) » et zone de dépôt « Drop images here / or tap + to import », au centre un Viewport vide, à droite l'Inspector avec six sections repliées (Presets, Cameras & Capture, Training, Progress, Look, Export), chacune avec un titre et une sous-ligne grise indiquant la phase ; en bas la ligne de statut « Idle » avec le bouton de démarrage vert et le bouton d'arrêt rouge

Inspector vide avant import : La colonne de gauche affiche les points Images, Cameras et Log, en dessous l'en-tête « Images (0) » et la zone de dépôt « Drop images here / or tap + to import ». Le Viewport au centre est vide. À droite se trouve l'Inspector avec six sections repliées : Presets, Cameras & Capture, Training, Progress, Look et Export. Sous chaque titre, une ligne grise indique ce que fait la section et quand elle agit — « Ready-made recipes — they replace the training settings » (Presets), « Before training · decides how camera positions are solved · applies to the next run » (Cameras & Capture), « Before training · drives scene build-up and optimization · applies to the next run » (Training), « Display only » (Progress), « After training · applies immediately · reversible any time » (Look) et « Leveling the floor turns the view at once; the chosen orientation and format apply when saving » (Export). Tout en bas défile la ligne de statut avec l'état « Idle » ainsi que le bouton de démarrage vert et le bouton d'arrêt rouge ; en haut à droite se trouve le commutateur Simple/Expert, ici réglé sur Expert.

Inspector avec 35 images importées — en-tête « Images (35) », noms de fichiers IMG_0953.JPG en ordre croissant, Viewport encore vide, statut « Idle »
Inspector avec 35 images importées — en-tête « Images (35) », noms de fichiers IMG_0953.JPG en ordre croissant, Viewport encore vide, statut « Idle »

Inspector après import : L'en-tête de la liste d'images affiche « Images (35) », en dessous figurent les prises de vue importées avec des noms de fichiers croissants à partir de IMG_0953.JPG. Les images de cette série de tests ont une résolution de 4032×3024 pixels ; la logique Auto-Render-Scale lit cette résolution et propose une Render Scale adaptée. Le Viewport est encore vide, la ligne de statut indique « Idle ». Le bouton de démarrage vert en bas à gauche est maintenant actif et lance le training avec le préréglage actif.

Inspector en cours de training — barre de titre « RadianceKit — Training 23% », dans le Viewport l'aperçu en direct d'un canard en tissu sur une peau de mouton, progression 4,700/20,000 avec ETA 1m9s, barre de métriques Loss 0.0109 / LR 2.0e-04 / SH 1 / Gaussians 16.0K, dans l'Inspector le groupe CLASSIC déplié avec « Balanced 20K iters » coché en vert
Inspector en cours de training — barre de titre « RadianceKit — Training 23% », dans le Viewport l'aperçu en direct d'un canard en tissu sur une peau de mouton, progression 4,700/20,000 avec ETA 1m9s, barre de métriques Loss 0.0109 / LR 2.0e-04 / SH 1 / Gaussians 16.0K, dans l'Inspector le groupe CLASSIC déplié avec « Balanced 20K iters » coché en vert

Inspector pendant le training : La barre de titre affiche la progression globale, ici « RadianceKit — Training 23% ». Le Viewport rend la reconstruction en cours en temps réel — un canard en tissu sur une peau de mouton, déjà nettement reconnaissable (l'intervalle d'actualisation de l'aperçu en direct se règle dans Settings → General → Training → Live Preview). Sous le Viewport défilent la progression (« 4,700/20,000 », « ETA 1m9s ») et la barre de métriques avec Loss 0.0109, LR 2.0e-04, SH 1 et Gaussians 16.0K ; en bas à gauche se trouvent les boutons pause et arrêt. Dans l'Inspector, le groupe CLASSIC est déplié, « Balanced 20K iters » porte la coche verte. Un badge « Modified » n'apparaît que dès qu'un paramètre s'écarte du préréglage — ici aucun n'est visible. La barre latérale « Log » rassemble les événements des étapes SfM et training.

Inspector après achèvement du training — barre de titre « RadianceKit — Training Complete — 8,708 Gaussians », à gauche « Complete » avec 8,708 Gaussians, Images 25 et Cameras 35, ligne de statut « Completed » à 20,000/20,000, barre de métriques Loss 0.0075 / LR 0.0e+00 / SH 3 / Gaussians 9.7K, dans le Viewport la reconstruction terminée du canard occupant tout le cadre
Inspector après achèvement du training — barre de titre « RadianceKit — Training Complete — 8,708 Gaussians », à gauche « Complete » avec 8,708 Gaussians, Images 25 et Cameras 35, ligne de statut « Completed » à 20,000/20,000, barre de métriques Loss 0.0075 / LR 0.0e+00 / SH 3 / Gaussians 9.7K, dans le Viewport la reconstruction terminée du canard occupant tout le cadre

Inspector après le training : La barre de titre annonce le résultat : « Training Complete — 8,708 Gaussians ». Dans la colonne de gauche figure « Complete » avec le même chiffre, ainsi que Images 25 et Cameras 35 — 25 images parce que la boîte de dialogue Frame Quality a écarté dix prises de vue floues sur les 35. La ligne de statut indique « Completed » à 20,000/20,000, la barre de métriques Loss 0.0075, LR 0.0e+00, SH 3 et Gaussians 9.7K. Le Viewport affiche le nuage de points terminé occupant tout le cadre — navigation orbitale par glissement active (rotation autour du centre de la scène).

Le fait qu'il y ait ici deux chiffres différents de Gaussians est intentionnel : la barre de métriques et Training Metrics indiquent l'état à la fin du training (ici 9,660, arrondi à 9.7K), la barre de titre et la scène indiquent l'état après les passages de nettoyage automatiques (8,708). Entre les deux se situent la Post-Training Compactification et la suppression des splats en forme d'aiguille ou de disque. Le chiffre le plus petit est celui qui apparaît dans le Viewport et qui est conservé lors de l'export. Les groupes Training Metrics et Loss History sont désormais remplis avec les valeurs finales, la section Export est active.

L'Inspector est la barre latérale droite en mode Expert (⌘2). Il regroupe tous les paramètres pertinents pour le training en six sections repliables, regroupées depuis le 2026-07-18 par domaine. L'ordre par défaut de haut en bas est : Presets, Cameras & Capture, Training, Progress, Look et Export. Sous chaque titre figure une seconde ligne indiquant la phase — quand la section agit et à quel point elle est réversible (par ex. « Before training · decides how camera positions are solved · applies to the next run » pour Cameras & Capture, « After training · applies immediately · reversible any time » pour Look, « Display only » pour Progress). Deux anciennes sections ont fusionné : Métriques et Graphique de perte sont désormais deux groupes repliables distincts (« Training Metrics » et « Loss History ») au sein de Progress, et l'ancienne section Enhancements est entièrement intégrée dans Training. La section « Look » (ajustements d'image post-training) est le renommage réel dans l'UI de l'ancienne section « Finishing » — son nom interne reste, pour des raisons de compatibilité, « Finishing », le titre affiché est « Look » (même schéma pour Training, qui s'appelle en interne « Training Configuration »). Chaque section peut être repliée en cliquant sur son en-tête, et l'ordre peut être réorganisé par glisser-déposer. Au premier démarrage, les sections sont repliées — sur l'image ci-dessus, les six le sont ; l'état de l'app enregistre ensuite les préférences de repli et d'ordre d'une session à l'autre. Un agencement ancien déjà enregistré est migré une seule fois vers le nouveau regroupement au premier démarrage ; Viewport ▸ Reset Inspector Layout restaure l'état de livraison.

Une série d'éléments d'interface de l'Inspector apparaît sous une forme presque identique dans les réglages (chapitre 3) — typiquement le backend SfM, le Sky-Masking et des réglages par défaut similaires. Cette séparation est volontaire : les réglages fournissent le modèle global de l'app pour les projets nouvellement créés, l'Inspector écrase ces valeurs pour le projet actuellement ouvert. Qui connaît la logique d'utilisation d'un côté peut utiliser l'autre les yeux fermés.

La colonne de gauche en mode Expert — le Project Navigator — ne fait pas partie de l'Inspector, mais en est le voisin direct. On y sélectionne les images importées par clic, on les visualise avec la barre d'espace dans Quick Look et on les supprime via le bouton moins ou la touche Suppr (avec Cmd-Z pour annuler). L'Inspector suit la sélection actuelle de la barre latérale avec des informations détaillées contextuelles, mais les sept sections principales restent toujours disponibles.

Section Look (L1–L5)

La section Look (en interne toujours appelée « Finishing ») est depuis le regroupement par domaines la cinquième section de l'Inspector — entre progression et export — et rassemble les ajustements d'image post-entraînement en un seul endroit. Tous les curseurs fonctionnent de manière non destructive : chaque slider applique à nouveau le calcul du Look sur un instantané pristine inchangé (couleur DC, opacity, mise à l'échelle d'origine) — l'ajustement est donc idempotent, et non cumulatif. Le résultat apparaît en direct dans le viewport (WYSIWYG, exactement comme l'export final) et est intégré dans chaque export. La section n'est disponible qu'après la fin d'un entraînement (avant cela, on voit « Available after a training run completes. ») ; ses valeurs sont réinitialisées à chaque nouvel entraînement. Tant qu'un export est en cours, tous les curseurs sont verrouillés — un message de verrouillage « Locked while exporting — the file uses the current settings. » apparaît et la GroupBox est désactivée.

L1Curseur Saturation

Inspector → section Look → GroupBox → Saturation.

TECHNIQUE

Slider 0.5–1.2, affichage à deux décimales (par ex. « 1.00 »). Met à l'échelle la chroma SH-DC de chaque splat autour de la valeur de luminance : 1.0 = inchangé, < 1.0 = désaturé (couleur tirée vers le gris), > 1.0 = plus intense. Mathématiquement, la couleur DC est recalculée à partir de l'instantané pristine, de sorte qu'un déplacement répété ne s'additionne pas. A été validé sur du matériel de drone DJI (viaduc de Pensford), qui a tendance à sursaturer — la valeur par défaut pour drone est de 0.82. N'agit que sur la base de couleur (degré SH 0), les coefficients SH supérieurs restent inchangés.

L2Curseur Splat length

Inspector → section Look → GroupBox → Splat length.

TECHNIQUE

Slider 0.3–1.0, affichage à deux décimales. Rapproche les trois axes de mise à l'échelle de chaque gaussienne vers leur moyenne dans l'espace logarithmique (plus la valeur est petite, plus l'effet est fort) : 1.0 = inchangé, des valeurs plus petites arrondissent les splats allongés en forme d'« aiguille », 0 donnerait des sphères pures. S'attaque aux splats en forme d'aiguille trop étirés sans modifier la taille globale, ce qui réduit les artefacts typiques en « confettis ». Appliqué à partir de l'instantané pristine (mise à l'échelle logarithmique d'origine), donc idempotent. Commute avec Splat size (L3), car les deux opèrent dans l'espace logarithmique.

L3Curseur Splat size

Inspector → section Look → GroupBox → Splat size.

TECHNIQUE

Slider 0.5–2.0, affichage à deux décimales. Met à l'échelle chaque gaussienne uniformément sur les trois axes : 1.0 = inchangé, < 1.0 = plus petit/dense/net, > 1.0 = plus grand/« duveteux » (comble les espaces entre les splats). Comme les mises à l'échelle sont dans l'espace logarithmique, la multiplication devient là un décalage additif — ce qui commute avec Splat length (L2), car un décalage constant laisse intact l'écart par rapport à la moyenne. Appliqué à partir de l'instantané pristine, donc idempotent. Nouveau dans cette version.

L4Fade far region (avec sous-curseurs)

Inspector → section Look → GroupBox → interrupteur « Fade far region » plus les sous-curseurs « Fade start ×radius » et « Fade floor ».

TECHNIQUE

Interrupteur qui active une atténuation radiale de l'opacity en fonction de la distance au centre de gravité de la caméra — les « confettis lointains » faiblement observés en arrière-plan sont estompés. Uniquement pour les prises en orbite : l'interrupteur est grisé si la scène ne s'y prête pas (vols linéaires, caméras trop peu nombreuses ou dégénérées) ; à la place des sous-curseurs apparaît alors le message « Far-fade applies only to orbit captures (not this scene). » L'aptitude est déterminée par la couverture azimutale des positions de caméra (une orbite entoure le centre de gravité et remplit de nombreux secteurs de la boussole, un vol linéaire seulement ~2). Deux sous-curseurs pilotent la géométrie : Fade start ×radius (1.0–3.0) définit le rayon intérieur comme multiple du rayon de l'orbite, à l'intérieur duquel l'opacity totale s'applique ; Fade floor (0.0–1.0) est le facteur d'opacity bien au-delà du rayon de fondu. Important : le fondu saute la zone du Sky-Dome (les gaussiennes figées de la coupole), afin que la coupole d'arrière-plan volontaire ne soit pas assombrie avec le reste.

L5Bouton Reset finishing

Inspector → section Look → GroupBox → « Reset finishing » (en bas, petit bouton).

TECHNIQUE

Réinitialise tous les réglages de Look aux valeurs par défaut (Saturation 1.0, Fade désactivé, Splat length 1.0, Splat size 1.0) et déclenche immédiatement un nouveau finishing, de sorte que le viewport revienne à l'état entraîné inchangé. Comme toute la chaîne de Look calcule de manière idempotente à partir de l'instantané pristine, « retour aux valeurs par défaut » correspond exactement à la sortie d'entraînement d'origine — aucune perte de qualité en cas d'allers-retours répétés. Comme tous les curseurs de la section, verrouillé pendant un export en cours.

Section Préréglages (I1–I11)

La section Préréglages est le moyen le plus rapide d'appliquer une configuration éprouvée. Les préréglages intégrés (Capture Class, Classic, MCMC, Hybrid) fournissent des points de départ testés et reproductibles ; vos propres préréglages peuvent être enregistrés, exportés, importés et partagés. La liste est groupée par catégories (Capture Class, Classic, MCMC, Hybrid, Custom) et plusieurs catégories peuvent être déployées simultanément. Le mécanisme de menu contextuel (clic droit sur une ligne) permet d'accéder à l'export, à la duplication et — pour les préréglages personnalisés — à la suppression.

I1Bouton Save…

Inspecteur → section Préréglages → bouton Save… (barre d'actions en bas).

TECHNIQUE

Ouvre une popover avec un champ de texte et des boutons Save/Cancel. L'état actuel des paramètres d'entraînement est persisté en tant que nouveau préréglage personnalisé (encodé en JSON, stocké au niveau de l'application). L'opération de sauvegarde copie les 81 paramètres d'entraînement ainsi que la stratégie de densification actuelle. Le préréglage atterrit automatiquement dans la catégorie Custom, indépendamment du préréglage intégré dont il a été dérivé. Les noms vides et les saisies uniquement composées d'espaces sont rejetés. Les noms déjà existants ne sont pas refusés — chaque préréglage possède son propre identifiant interne, les noms en double sont techniquement autorisés, mais concrètement source de confusion.

I2Champ de texte Preset Name

Popover Save → champ de texte « Preset Name ».

TECHNIQUE

Simple champ de texte à bordure arrondie, de forme large. La valeur est reprise comme nom du préréglage lors du clic sur le bouton Save. Aucune limitation de longueur dans l'interface, mais le nom enregistré doit être encodable en JSON et affichable dans les listes de l'interface — emoji et caractères accentués fonctionnent. Le contenu est automatiquement réinitialisé à une chaîne vide à l'ouverture de la popover. Le bouton Save reste désactivé tant que le champ est vide après suppression des espaces. Il n'y a ni autocomplétion ni pré-remplissage avec le nom du préréglage actuellement actif.

I3Bouton Cancel (dialogue Save)

Popover Save → bouton Cancel (à gauche).

TECHNIQUE

Ferme la popover sans enregistrer. Abandonne le contenu du champ de texte — à la prochaine ouverture, il sera de nouveau réinitialisé à vide par la logique du bouton Save… (I1). Style de bouton standard, aucun dialogue de confirmation, aucun raccourci clavier. La TrainingConfig actuelle reste inchangée, puisque le chemin de sauvegarde n'a pas été exécuté du tout.

I4Bouton Save (dialogue Save)

Popover Save → bouton Save (à droite, style plus marqué).

TECHNIQUE

Déclenche la persistance proprement dite. Valide à nouveau que le nom n'est pas vide (vérification défensive), puis écrit la TrainingConfig actuelle en JSON dans le stockage de l'application. Ferme ensuite la popover. Mis en évidence en bleu, grisé tant que le champ de texte est vide. Si l'enregistrement échoue (par ex. parce que le stockage de l'application est plein — très improbable), il n'existe actuellement aucun dialogue d'erreur visible ; le préréglage n'apparaîtrait alors simplement pas au prochain démarrage de l'application.

I5Bouton Export…

Inspecteur → section Préréglages → barre d'actions → bouton Export….

TECHNIQUE

Exporte le préréglage actuellement sélectionné en tant que fichier .radiancepreset (JSON en interne). Désactivé si aucun préréglage n'est sélectionné. Au clic, l'application ouvre un dialogue d'enregistrement avec un nom de fichier prédéfini (nom du préréglage + extension .radiancepreset). Le format enregistré contient la TrainingConfig complète ainsi que des métadonnées (nom, catégorie, ID, indicateur intégré). Un double-clic dans le Finder ouvre l'application — mais pas automatiquement l'import ; l'utilisateur doit utiliser le bouton Import (I6).

I6Bouton Import…

Inspecteur → section Préréglages → barre d'actions → bouton Import….

TECHNIQUE

Ouvre un dialogue de fichier qui n'accepte que les fichiers .radiancepreset (sélection multiple désactivée). Lors de la sélection, le fichier JSON est chargé, validé et inséré dans la catégorie Custom — avec un nouvel identifiant interne, pour éviter toute collision avec les préréglages intégrés. L'import définit automatiquement la catégorie sur Custom, même si le préréglage exporté était à l'origine par exemple un préréglage intégré. Les fichiers corrompus ou incompatibles avec une version de schéma plus ancienne sont rejetés silencieusement, sans dialogue d'erreur (le journal de la console fournit toutefois des informations).

I7Ligne de préréglage (activation par clic)

Inspecteur → section Préréglages → chaque ligne de préréglage dans chaque catégorie.

TECHNIQUE

Un clic sur une ligne de préréglage remplace tous les champs de la TrainingConfig par les valeurs du préréglage, mémorise l'identifiant du préréglage actif et réinitialise le statut Modified. La coche d'activation devant la ligne n'apparaît que si le préréglage est sélectionné ET non modifié. Dès qu'une valeur de la TrainingConfig est modifiée (curseur, compteur, interrupteur dans les autres sections de l'inspecteur), un badge orange « Modified » apparaît derrière le nom. Les préréglages intégrés ne peuvent pas être écrasés — en cas de modification, il faut créer une copie personnelle via le bouton Save (I1).

I8Menu contextuel « Export… »

Clic droit sur chaque ligne de préréglage → premier élément « Export… ».

TECHNIQUE

Fonctionnalité identique à I5 (bouton Export…), mais plus facilement accessible — sans que le préréglage doive être sélectionné au préalable. Exporte directement le préréglage cliqué dans la ligne. Fonctionne de la même manière pour toutes les catégories de préréglages (intégré ou personnalisé), sans restriction. L'export contient l'indicateur intégré et la catégorie d'origine, mais lors du réimport, la catégorie est mappée sur Custom comme décrit dans I6.

I9Menu contextuel « Duplicate »

Clic droit sur chaque ligne de préréglage → deuxième élément « Duplicate ».

TECHNIQUE

Clone le préréglage dans la catégorie Custom. Crée un nouvel identifiant interne, ajoute « Copy » au nom et enregistre la copie. Fonctionne aussi pour les préréglages intégrés — le clone est alors modifiable. L'original reste intact. La TrainingConfig est copiée valeur par valeur (aller-retour JSON), de sorte qu'il n'existe aucune liaison par référence entre l'original et la copie.

I10Menu contextuel « Delete »

Clic droit sur les lignes de préréglages personnels → dernier élément « Delete » (rouge, destructif).

TECHNIQUE

Visible uniquement pour les préréglages Custom. Les préréglages intégrés ne peuvent pas être supprimés. L'élément est marqué comme destructif, apparaît en rouge dans le menu contextuel et est séparé par un diviseur, afin qu'on ne clique pas dessus par inadvertance. Il n'y a aucun dialogue de confirmation — un clic supprime immédiatement le préréglage. Le préréglage supprimé n'est pas récupérable (Cmd-Z ne fonctionne pas ici — l'annulation n'existe dans la version actuelle que pour la liste d'images, pas pour les opérations sur les préréglages). Si le préréglage supprimé était actif au moment de la suppression, la TrainingConfig actuelle reste inchangée, seule la sélection de préréglage actif est réinitialisée.

I11En-tête de catégorie (déplier/replier)

Inspecteur → section Préréglages → chaque en-tête de catégorie (Capture Class, Classic, MCMC, Hybrid, Custom).

TECHNIQUE

État de pliage par catégorie avec valeurs par défaut différentes : le groupe organisé Capture Class démarre déplié, Classic, MCMC, Hybrid et Custom démarrent repliés. L'état n'est pas persisté — au redémarrage de l'application, toutes les catégories reviennent à l'état par défaut. La flèche chevron pivote de manière animée. Le chiffre à droite dans l'en-tête indique le nombre de préréglages dans cette catégorie. La zone cliquable englobe toute la zone de l'en-tête.

Section Configuration d'entraînement (I12–I22)

Extrait de la section Training — Densification en commutateur à trois positions Classic | MCMC | Hybrid avec Classic actif, en dessous les lignes grisées MCMC Quality (désactivé), Auto-scale by scene (activé) et Max Gaussians 150,000 avec indication de cadenas ; plus bas Depth-Priority Scatter (désactivé), Full-Resolution Training (désactivé), Max Iterations 5,000 et Densify Until 3,500 avec icône de chaîne bleue, curseurs SSIM Weight à 0.20 et Render Scale à 50%
Extrait de la section Training — Densification en commutateur à trois positions Classic | MCMC | Hybrid avec Classic actif, en dessous les lignes grisées MCMC Quality (désactivé), Auto-scale by scene (activé) et Max Gaussians 150,000 avec indication de cadenas ; plus bas Depth-Priority Scatter (désactivé), Full-Resolution Training (désactivé), Max Iterations 5,000 et Densify Until 3,500 avec icône de chaîne bleue, curseurs SSIM Weight à 0.20 et Render Scale à 50%

C'est ici qu'atterrissent les leviers centraux du processus d'entraînement : comment fonctionne la Densification, combien d'itérations, quel poids SSIM — et en bas, les fonctionnalités autrefois indépendantes (Perceptual Loss, groupe Outdoor, Advanced Densifier, passes Post-Training). Tout en haut se trouve la Densification sous forme de commutateur à trois positions Classic | MCMC | Hybrid. Le backend SfM ne se trouve plus ici, mais dans sa propre section Caméras & Prise de vue (I12, I13). Les trois lignes MCMC (« MCMC Quality », « Auto-scale by scene » et « Max Gaussians ») ne disparaissent plus en mode Classic, mais restent visibles et sont grisées ; en dessous se trouve une ligne avec une icône de cadenas qui indique ce qu'il faut changer (« Only used by the MCMC and Hybrid densifiers — switch Densification above to change these. »). Un bloc séparé en dessous regroupe les lignes qui s'appliquent à chaque densifier : Depth-Priority Scatter, Full-Resolution Training, la paire couplée Max Iterations / Densify Until ainsi que les curseurs SSIM Weight et Render Scale.

I12Sélecteur Camera Alignment

Inspecteur → Caméras & Prise de vue → Camera Alignment (menu déroulant sous le sélecteur Projection).

TECHNIQUE

Menu déroulant, pas de sélecteur segmenté — les libellés dépassent l'étroite colonne de l'inspecteur. Les entrées affichées dépendent du build : la version App Store en bac à sable propose Apple Photogrammetry et Native, les builds développeur/DMG proposent en plus COLMAP. Raison : COLMAP est un programme externe en ligne de commande, et les applications en bac à sable ne peuvent pas lancer de binaires tiers (règle App Review 2.5.2) — c'est pourquoi l'entrée backend, avec son sélecteur de mapper et son chemin de binaire, est totalement absente dans le build Store, plutôt que grisée en permanence : une ligne qui ne peut jamais s'allumer n'est pas une indication, c'est du bruit. À ne pas confondre : L'import et l'export d'un workspace COLMAP est du pur parsing de fichiers en Swift, ne nécessite aucune installation de COLMAP et fonctionne dans chaque build (chapitre 1, M5). La mention « (Beta) » sur l'entrée Native a disparu — Native n'est plus en beta depuis la v1.5.2. Le choix détermine le backend SfM du prochain run et contrôle en même temps quelles lignes en dessous sont utilisables (I13, High-Quality, Native SfM Recipe). Note de bas dans l'UI : Pour un ensemble de photos non trié, le pipeline s'aligne toujours avec Native, quel que soit ce qu'affiche le sélecteur — cette recette n'existe que là. Le sélecteur n'est volontairement pas verrouillé (la valeur n'est pas indisponible, elle est simplement outrepassée) ; à la place, un avertissement avec une icône de branchement apparaît.

I13Champ FOV Override (Native SfM)

Inspecteur → Caméras & Prise de vue → FOV Override (toujours visible, utilisable seulement si Camera Alignment = Native).

TECHNIQUE

Champ de texte numérique (plage 0-170°), défaut 0 = détermination automatique à partir de l'EXIF ou d'une heuristique. La saisie manuelle est nécessaire lorsque les images d'entrée ont été extraites d'une vidéo qui ne contient pas de métadonnées de focale. Valeurs typiques : iPhone Wide ≈ 73°, DJI Mavic Wide-Crop ≈ 70°, drone avec capteur plein format ≈ 84°. La valeur est bornée à [0, 170] — les valeurs hors plage sont directement ramenées dans l'intervalle. N'affecte que le pipeline SfM natif (Q4/Q5) ; Apple Photogrammetry ignore complètement cette valeur. Depuis le 18/07/2026 : Avec d'autres backends, le champ n'est plus masqué, mais grisé — ainsi que « High-Quality » et « Native SfM Recipe » et une ligne avec icône de cadenas (« These configure the Native aligner — choose Native under Camera Alignment to change them. »). Le masquage précédent occultait le fait que ces réglages existent tout simplement. Le verrouillage dépend du backend sélectionné, pas de celui réellement utilisé — la redirection des ensembles de photos non triés vers Native est signalée à la place par l'avertissement sous I12. La ligne « Native SfM Recipe » nécessite en plus un ensemble de photos non trié et possède sinon sa propre ligne d'explication.

I15Sélecteur Densification

Inspecteur → Configuration d'entraînement → Densification (sélecteur segmenté, toujours visible).

TECHNIQUE

Bascule entre les deux stratégies de Densification : Classic (méthode 3DGS originale avec Clone/Split/Prune et seuil de gradient) et MCMC (Stochastic Gradient Langevin Dynamics avec Relocation, NeurIPS 2024). Lors du passage de Classic à MCMC, l'application règle automatiquement les champs spécifiques à MCMC sur des valeurs par défaut éprouvées (Reg-Weights = 0, multiplicateur de cap MCMC 3.0, planification Sample/Noise). Sans cette initialisation automatique, les sessions avec d'anciens préréglages souffraient du bug d'effondrement MCMC de 1.4.4 (460K→5 Gaussians, arrêt par watchdog). Le choix dans le sélecteur détermine en outre quels éléments de l'inspecteur sont visibles — avec MCMC, I16/I17 apparaissent. Effet détaillé des champs au chapitre 6, T11–T16 (Classic) et T61–T73 (MCMC).

I16Interrupteur MCMC Quality

Inspecteur → Training → MCMC Quality (toujours visible, utilisable si Densification = MCMC ou Hybrid).

TECHNIQUE

Bascule l'accumulation de gradient sur 2 étapes (actif) ou 1 étape (inactif). Accumule les gradients de deux vues de caméra consécutives avant l'exécution de l'étape d'optimisation. Cela lisse le chemin d'optimisation et améliore légèrement mais visiblement le résultat final. Le prix : temps d'entraînement doublé. Pour des entraînements très longs (200K itérations), cela entraîne 10+ minutes d'attente supplémentaires — donc cela ne vaut la peine que si les derniers pour cent de qualité sont vraiment nécessaires. N'affecte que l'entraînement, pas le format d'export ni le rendu dans le viewport. S'applique aussi à Hybrid, qui utilise la même mécanique MCMC. Depuis le 18/07/2026 : Sous Classic, la ligne ne disparaît plus, mais est grisée avec I17 et « Max Gaussians » ; en dessous figure « Only used by the MCMC and Hybrid densifiers — switch Densification above to change these. »

I17Interrupteur Auto-scale by scene

Inspecteur → Training → Auto-scale by scene (toujours visible, utilisable si Densification = MCMC ou Hybrid).

TECHNIQUE

Si actif, met à l'échelle la limite supérieure effective de Max Gaussians avec le nombre de points d'initialisation SfM × multiplicateur de cap MCMC (défaut 3.0). Exemple : SfM fournit 250K points initiaux, cap de base = 150K, multiplicateur 3.0 → limite supérieure effective = max(150K, 750K) = 750K. Si désactivé, seule la base s'applique strictement. La base elle-même se trouve dans la ligne Max Gaussians juste en dessous (depuis 1.8, défaut 150 000, saisie bornée à 10 000–30 000 000). Si la limite supérieure effective dépasse la base, l'application l'affiche en clair (« Effective cap for this scene: … ») — avec un avertissement RAM si elle devient trop élevée. Introduit pour la v1.4.5, car de grandes prises de vue en extérieur avec plus de 1000 frames et une densité de points SfM correspondamment élevée affamaient la Densification avec le cap rigide par défaut de 150K — des points superflus restaient, de nouveaux ne pouvaient pas apparaître. Défaut désactivé dans les préréglages personnalisés, activé dans les préréglages intégrés MCMC. N'agit qu'au moment de l'entraînement, pas à l'export. Depuis le 18/07/2026 : Sous Classic, la ligne est grisée au lieu d'être masquée (avec la même ligne d'explication que I16) ; l'affichage en clair et l'avertissement RAM n'apparaissent volontairement pas là, car Classic n'applique aucune limite supérieure.

I18Compteur Max Iterations

Inspecteur → Configuration d'entraînement → GroupBox → Max Iterations.

TECHNIQUE

Compteur avec plage 1 000–100 000, pas de 1 000. Détermine le nombre total d'itérations de l'optimiseur. Corrélé linéairement au temps d'entraînement (diviser par deux = env. 50% du temps). Les valeurs éprouvées sont 20K (Classic Balanced), 40K (Classic Quality) et 200K (MCMC Full). Au-delà de 40K, Classic n'apporte presque plus d'amélioration — le rendement s'aplatit. Lors d'une modification, si la fonction de lien (I19) est active, Densify Until est ajusté proportionnellement (ratio par défaut : 0.5, c'est-à- dire Densify-Until = Max/2).

I19Bouton lien/délier (Densify ↔ Iterations)

Inspecteur → Configuration d'entraînement → GroupBox → petit bouton de lien entre Max Iterations et Densify Until.

TECHNIQUE

Bouton bascule qui fige le rapport entre Densify Until et Max Iterations. Si actif (icône de chaîne mise en évidence), Densify Until est ajusté proportionnellement à chaque modification de Max Iterations. En cas de délien (icône chaîne-plus), les valeurs restent indépendantes. Le défaut est lié, car cela reflète la corrélation typique — si tu doubles les itérations de l'entraînement, tu veux généralement aussi laisser la Densification tourner proportionnellement plus longtemps. Le rapport est calculé à partir de la valeur actuelle au moment où le bouton de lien est activé ; un rapport typique est 0.5 (Densify-Until = moitié du nombre d'itérations).

I20Compteur Densify Until

Inspecteur → Configuration d'entraînement → GroupBox → Densify Until.

TECHNIQUE

Compteur avec plage 500–50 000, pas de 500. Détermine l'index d'itération à partir duquel plus aucun nouveau Gaussian n'est ajouté par Clone/Split (Classic) ou Relocation (MCMC). Une fois atteint, seules la position et la couleur continuent d'être affinées. Des valeurs plus élevées = plus de Gaussians = fichier plus gros, temps par itération plus long (+30-60% de temps GPU par étape). Valeurs typiques : 15K (pour 30K Max-Iter), 20K (pour 40K), 100K (pour 200K MCMC). Mis à l'échelle automatiquement si le lien (I19) est actif. A un effet différent avec Classic vs MCMC : Classic arrête complètement la croissance, MCMC arrête la logique de Relocation, mais l'adaptation Sample/Noise continue.

I21Curseur SSIM Weight

Inspecteur → Configuration d'entraînement → GroupBox → SSIM Weight.

TECHNIQUE

Curseur 0.0–1.0 par pas de 0.05, affiché comme « 0.20 ». Mélange la perte L1 (0.0) et la perte SSIM (1.0). L1 corrige la luminosité par pixel, SSIM la similarité structurelle (contours, statistiques locales). Le défaut 0.2 est la valeur du papier 3DGS original (Kerbl 2023) et un compromis robuste pour presque toutes les scènes. Des valeurs plus élevées (0.5+) favorisent la préservation des détails, mais peuvent ignorer des erreurs locales de luminosité. Des valeurs plus basses (< 0.1) entraînent une perte de détails sur les arêtes vives. Le calcul SSIM s'exécute dans le shader avec une fenêtre gaussienne 11×11. Performance : à 0.0 (L1 seul), l'entraînement est environ 8-12% plus rapide, car le calcul SSIM est ignoré dans le shader.

I22Curseur Render Scale

Inspecteur → Configuration d'entraînement → GroupBox → Render Scale.

TECHNIQUE

Curseur 0.25–1.0 par pas de 0.25, affiché comme « 100% ». Met à l'échelle la résolution de rendu pendant l'entraînement par rapport à la taille de l'image source. Levier le plus important sur la performance : 50% réduit le temps GPU d'environ 75% (car 4× moins de pixels), 25% d'environ 94%. Le seuil de gradient est automatiquement mis à l'échelle en conséquence. Sous le curseur apparaît un affichage en direct de la résolution en MP (par exemple « 2304×1296 (3.0 MP) »). Si la valeur actuelle s'écarte de la valeur recommandée, un texte orange « — recommended: 50% » s'affiche. La recommandation vise une résolution effective d'environ 3 MP — la plage traitée le plus efficacement par les GPU Apple Silicon. Les images source 4K reçoivent par exemple automatiquement une recommandation de 25%, les images FullHD 100%. Un changement déclenche en plus une réallocation de buffer.

Groupes Enhancements (dans la section Training, I26–I29, I42–I44)

Extrait des lignes Enhancements, aujourd'hui en bas de la section Training — en haut le curseur Perceptual Loss tout à gauche sur « Off », en dessous le groupe Outdoor avec les quatre interrupteurs désactivés Sky Masking, Person Masking, Floater Cleanup et Reconstruct Sky Dome, puis la ligne repliée « Advanced Densifier (Expert) » avec triangle d'avertissement, enfin le groupe « Runs automatically at the end of training » avec Post-Training Compactification (activé) et Remove Needle/Disc Floaters. Chaque ligne a sa propre ligne d'explication
Extrait des lignes Enhancements, aujourd'hui en bas de la section Training — en haut le curseur Perceptual Loss tout à gauche sur « Off », en dessous le groupe Outdoor avec les quatre interrupteurs désactivés Sky Masking, Person Masking, Floater Cleanup et Reconstruct Sky Dome, puis la ligne repliée « Advanced Densifier (Expert) » avec triangle d'avertissement, enfin le groupe « Runs automatically at the end of training » avec Post-Training Compactification (activé) et Remove Needle/Disc Floaters. Chaque ligne a sa propre ligne d'explication

Ces groupes rassemblent des fonctionnalités qui améliorent la qualité d'image sans modifier la boucle d'entraînement elle-même. Jusqu'au 2026-07-18, ils formaient une section Inspector à part nommée Enhancements ; depuis le regroupement par domaines, ils se trouvent en bas de la section Training. L'ancien sélecteur Viewport-Scaling (Off/MetalFX/Lanczos) a disparu sans remplacement : il n'a jamais eu d'effet réel — la décision de blit dans le viewport est purement géométrique — et son intitulé promettait en plus un suréchantillonnage, alors que le passage Lanczos réel effectue un rééchantillonnage vers le bas avec anticrénelage d'une image suréchantillonnée. L'affichage dans le viewport s'appelle donc désormais « Sampling » au lieu de « Scaling » (chapitre 4) ; nulle part dans l'app un suréchantillonnage MetalFX n'est effectué. La Perceptual Loss (I29) est, malgré son appartenance au groupe, un élément d'entraînement à part entière — elle est activée pendant l'entraînement comme terme de loss supplémentaire ; elle figure tout en haut, avec la ligne d'explication « Multi-scale blur feature matching for structural similarity ». Vient ensuite le groupe Outdoor avec quatre interrupteurs — Sky Masking, Person Masking, Floater Cleanup et Reconstruct Sky Dome (I42–I44) —, des options d'entraînement contre les floaters de ciel, qui se trouvaient auparavant dans la fenêtre de réglages et sont désormais ici, par projet. Suit la ligne repliée « Advanced Densifier (Expert) », qui porte un triangle d'avertissement parce qu'elle cache des curseurs capables de déstabiliser un entraînement. Le groupe « Runs automatically at the end of training » clôt l'ensemble, avec la Post-Training Compactification (I26) et l'interrupteur « Remove Needle/Disc Floaters ».

I26Interrupteur Post-Training Compactification

Inspector → Training → groupe « Runs automatically at the end of training » → Post-Training Compactification.

TECHNIQUE

Active une passe de nettoyage en fin de traitement : une fois les itérations d'entraînement terminées, les Gaussians dont l'opacity est inférieure à 0.01 (1 % de visibilité) sont supprimées. Cela réduit typiquement la taille du fichier de moitié environ, sans perte de qualité visible — car ces Gaussians ne contribuent de toute façon pas visuellement. La compactification s'exécute comme une passe GPU compact et dure, selon le nombre de Gaussians, de quelques fractions de seconde à quelques secondes. N'affecte pas la performance de l'entraînement. Si cet interrupteur est désactivé, les Gaussians invisibles sont aussi exportées — pertinent uniquement si tu veux réutiliser le format pour une étape d'entraînement ultérieure (Continue Training), sinon c'est un gaspillage de mémoire.

I29Curseur Perceptual Loss

Inspector → Training → Perceptual Loss.

TECHNIQUE

Curseur 0.0–0.2 par pas de 0.01, affiché à 0.0 comme « Off », sinon comme « 0.05 » etc. Active un terme de loss supplémentaire qui compare un flou gaussien multi-échelle du rendu avec l'image ground-truth (3 échelles de flou). Capture des différences structurelles que L1+SSIM seuls ne détectent pas. Des valeurs entre 0.05 et 0.1 améliorent visiblement les structures fines et ne coûtent que peu de temps d'entraînement — environ 5 % (passage forward supplémentaire à travers les noyaux de flou). Au-delà de 0.15, l'entraînement devient instable et la qualité rechute, car ce terme de loss domine l'optimisation. Agit pendant l'entraînement, pas en post-traitement — malgré sa position parmi les lignes Enhancements en fin de section Training, il ne s'agit donc pas d'une simple amélioration a posteriori.

I42Sky Masking

Inspector → Training (groupe Outdoor) → interrupteur « Sky Masking ». Enregistré par projet ; par défaut : désactivé.

TECHNIQUE

Active une segmentation pré-entraînement des pixels de ciel basée sur Apple Vision. Avant le démarrage de l'entraînement, pour chaque caméra d'entrée, la région de ciel est extraite via le masque de premier plan (foreground mask) d'Apple Vision (ciel = arrière-plan) et associée comme masque par pixel à la caméra correspondante. Pendant l'entraînement, la contribution de loss par pixel est multipliée par le complément du masque de ciel — les pixels de ciel contribuent 0 au gradient, si bien que les Gaussians qui se projettent dans le ciel ne reçoivent aucun signal d'optimisation et ne deviennent donc ni « plus denses » ni « plus lumineuses ». Réduit significativement les floaters (amas sombres dans le ciel) pour les scènes outdoor/drone. Coûte environ 3 % de régression L1 pour un entraînement classique de 40K. Pertinent uniquement pour les scènes outdoor avec un ciel clairement identifiable ; pour les scènes d'intérieur ou un fond blanc, la segmentation de ciel identifie des zones erronées et bloque des signaux de loss valides. La valeur est enregistrée par projet (n'est plus globale à l'app) et suit le préréglage ou le fichier de scène.

I43Floater Cleanup

Inspector → Training (groupe Outdoor) → interrupteur « Floater Cleanup » (sous-titre « Remove Gaussians outside all camera views »). Enregistré par projet ; par défaut : désactivé.

TECHNIQUE

L'interrupteur contrôle deux effets avec des conditions différentes ; les deux sont dérivés au démarrage vers la configuration locale au run, sans être écrits dans la configuration enregistrée (sinon ils resteraient accrochés comme verrouillage à usage unique). (1) Frustum-union cull en fin d'entraînement — les Gaussians hors de l'union de tous les frustums de caméra sont supprimées (« jamais observé » = « jamais contraint », et c'est justement le cas de la plupart des floaters). Cette partie n'a aucune condition de stratégie et s'exécute de façon identique en Classic, MCMC et Hybrid — c'est d'après elle que l'interrupteur est nommé. (2) Deux passes de density control supplémentaires en milieu de run — uniquement en Classic et seulement à partir de 30 000 itérations, fixées à 55 % et 85 % de la longueur du run (pour 35–40K, donc vers 20K et 30K). Les deux passes recherchent des Gaussians avec une opacity très faible, une taille écran-space minuscule et sans contribution de loss, et les purgent. Effet : environ 5–15 % de Gaussians en moins au final, sensiblement moins d'amas sombres dans le ciel pour les scènes drone/outdoor. Coûte environ 1–3 % de régression L1 pour les scènes indoor en gros plan, d'où le fait que ce ne soit pas activé par défaut. La valeur est enregistrée par projet et suit le préréglage ou le fichier de scène. Correction par rapport aux versions précédentes : l'interrupteur n'est plus limité au densifier Classic et n'est plus grisé en MCMC/Hybrid — cela privait justement les utilisateurs de MCMC et Hybrid du cull qui, chez eux, fonctionne. Pour les runs courts (par ex. P2 Preview 5K), seule la partie milieu de run est omise.

I44Reconstruct Sky Dome

Inspector → Training (groupe Outdoor) → interrupteur « Reconstruct Sky Dome ». Enregistré par projet ; par défaut : désactivé.

TECHNIQUE

Active la projection du sky dome avant l'entraînement. Après le SfM et avant le démarrage de l'entraînement, pour chaque caméra d'entrée, le masque de ciel Apple Vision partagé en S7 est extrait de l'image ; les pixels de ciel sont dé-projetés à l'aide des intrinsèques de la caméra sur une surface sphérique virtuelle (rayon par défaut : 8× le rayon de la scène). Sur cette sphère, environ 5000 nouvelles Gaussians sont initialisées avec des couleurs moyennées à partir des pixels de ciel projetés, une échelle très grande (1.0 en unités de scène) et une opacity initiale de 0.95. Ces 5000 Gaussians ne constituent pas un sky mask au sens classique — elles sont entraînées comme toutes les autres, mais restent dans une coquille fine grâce à leur opacity initiale élevée. Résultat : pour les novel views à 360° dans les scènes outdoor/drone, on obtient une véritable couleur de ciel et des structures nuageuses au lieu d'amas confettis sombres. La valeur est mémorisée entre les redémarrages. Utile uniquement pour les scènes outdoor avec au moins une couverture caméra à 360° ; pour les captures d'objet pures sans vue sur le ciel, cela n'a aucun effet. Statut : expérimental, une validation A/B plus large sur d'autres jeux de données outdoor reste à faire.

Section Métriques (I30–I37)

Recadrage du groupe « Training Metrics » après un entraînement terminé — huit lignes : Iteration 20000 / 20000, Loss 0.007471, Learning Rate 0.00e+00, SH Degree 3, Gaussians 9,660, GPU Memory 5.7 MB, Speed 223.7 it/s, Elapsed 1:29
Recadrage du groupe « Training Metrics » après un entraînement terminé — huit lignes : Iteration 20000 / 20000, Loss 0.007471, Learning Rate 0.00e+00, SH Degree 3, Gaussians 9,660, GPU Memory 5.7 MB, Speed 223.7 it/s, Elapsed 1:29

Pendant qu'un entraînement est en cours, le groupe de métriques (« Training Metrics », l'un des deux groupes rétractables de la section Progression) affiche huit valeurs en direct issues de la boucle d'entraînement. Avant le lancement d'un entraînement, il est vide (« Start training to see live metrics »). Toutes les valeurs sont mises à jour toutes les ~30 itérations (fréquence de mise à jour des métriques en direct). La section est en lecture seule — aucun élément n'est cliquable ou modifiable. Pour une analyse plus poussée, consulte les journaux d'entraînement JSONL sous ~/Documents/RadianceKit/Logs/.

I30Iteration

Inspecteur → Progression → Training Metrics → Iteration. Lecture seule.

TECHNIQUE

Affichage au format « 4523 / 40000 » — itération actuelle sur le nombre total d'itérations prévues. Compte de manière synchrone avec la boucle d'entraînement, qui envoie les valeurs toutes les ~30 itér. Le second nombre correspond à la valeur Max Iterations au moment du démarrage ; il ne change plus, même si l'utilisateur modifie ensuite le stepper — l'exécution en cours utilise sa propre copie figée. Si l'app ajoute des itérations via le menu Training (Continue Training +5K/+10K/+20K), le dénominateur augmente.

I31Loss

Inspecteur → Progression → Training Metrics → Loss. Lecture seule.

TECHNIQUE

Valeur flottante à six décimales (p. ex. « 0.024385 »). Mesure la loss combinée L1+SSIM (mélange contrôlé via I21 SSIM Weight) plus, en option, la Perceptual Loss (I29) et d'autres régularisateurs. L'échelle n'est pas absolue mais dépend de la scène — exige le même jeu de données pour la plupart des comparaisons. Valeurs finales typiques avec de bonnes configurations : - Classic Quality 40K itér : 0.022–0.025 (Horse, Truck, Garden) - MCMC Full 200K itér : 0.024–0.028 - Drone extérieur 30K : 0.030–0.060 (moins bon en raison de la géométrie) - Appartements intérieurs : 0.018–0.025

Des valeurs supérieures à 0.10 après 5K itérations indiquent des problèmes de SfM (poses caméra incorrectes) — interrompre et recalculer le SfM.

I32Learning Rate

Inspecteur → Progression → Training Metrics → Learning Rate. Lecture seule.

TECHNIQUE

Affichage en notation scientifique (p. ex. « 1.60e-04 »). Taux d'apprentissage actuel pour les paramètres de position (3DGS possède six taux d'apprentissage indépendants pour Position, SH-DC, SH-Rest, Opacity, Scale, Rotation — celui affiché ici est le LR de Position à titre représentatif). Valeur initiale par défaut de 1.6e-4, qui décroît via une décroissance exponentielle jusqu'à ~1.6e-6 en fin d'entraînement. La décroissance est ajustable via le champ LR Schedule dans la configuration d'entraînement (champ T au chap. 6). Si le LR reste anormalement élevé (p. ex. 1e-3 ou plus après 10K itérations), cela peut indiquer une configuration mal chargée.

I33SH Degree

Inspecteur → Progression → Training Metrics → SH Degree. Lecture seule.

TECHNIQUE

Entier de 0 à 3. Degré des harmoniques sphériques pour la représentation de couleur. Commence à 0 (uniquement la composante DC, c'est-à-dire une couleur indépendante de la direction par gaussienne — donc une simple constante RVB) et augmente progressivement jusqu'à 3 au fil de l'entraînement. Le calendrier par défaut relève le degré de 1 à chaque fois aux itérations 1000/2000/3000. SH-3 correspond à 48 coefficients de couleur par gaussienne (3 canaux RVB × 16 fonctions de base SH). Un degré SH plus élevé = plus de réflexion dépendante de la direction (les surfaces brillantes ont l'air correctement différentes selon l'angle de vue), mais aussi plus de mémoire et un entraînement plus lent.

I34Gaussians

Inspecteur → Progression → Training Metrics → Gaussians. Lecture seule.

TECHNIQUE

Nombre actuel de gaussiennes dans le modèle, formaté avec le séparateur régional (p. ex. « 524.318 »). Croissance : - Classic : démarre avec les points d'initialisation SfM (typiquement 50K-300K), croît par Clone/Split jusque juste avant Densify Until, puis reste stable jusqu'à la fin de l'entraînement (modulo pruning) - MCMC : des points d'échantillonnage sont ajoutés jusqu'au plafond MCMC, puis seulement de la relocalisation

Valeurs finales saines : - Classic Quality : 400K-700K (Horse 524K, Garden 800K) - MCMC Full : exactement au plafond (défaut 150K, avec Auto-Scale Multiplier × nombre SfM selon la scène 500K-1.5M)

Avec MCMC, si le nombre tombe sous 60% du plafond → anomalie (indicateur d'effondrement, révélant des régularisateurs trop agressifs).

I35GPU Memory

Inspecteur → Progression → Training Metrics → GPU Memory. Lecture seule.

TECHNIQUE

Estimation de la consommation mémoire du buffer de gaussiennes calculée comme Nombre de gaussiennes × 616 octets (formaté dans le style mémoire). 616 octets est la taille d'une gaussienne entièrement équipée (position, échelle, rotation, opacité, coefficients SH de degré 3, accumulateur de gradient). L'affichage ne couvre pas les frais généraux du moteur de rendu (buffer de tuiles, buffer de tri, buffer de rétropropagation) — le besoin réel en mémoire GPU est typiquement 2 à 3× supérieur à cette valeur. Avec 500K gaussiennes : affiché ~290 MB, réel ~700 MB. Avec 1.5M gaussiennes : affiché ~880 MB, réel ~2.5 GB. Sans problème sur un M3 Max avec 64+ Go de mémoire unifiée, mais déjà une limite sur un M3 Pro avec 18 Go.

I36Speed

Inspecteur → Progression → Training Metrics → Speed. Lecture seule.

TECHNIQUE

Itérations par seconde avec une décimale (« 24.3 it/s »). Calculé par l'entraîneur comme une moyenne glissante sur les ~100 dernières itérations. Valeurs typiques : - Préréglage Quick (1K itér) : 80-120 it/s (court, pas d'état stable) - Classic 20K @ 1.0 Render Scale (scène Truck, M3 Max) : 25-35 it/s - Classic 20K @ 0.5 Render Scale : 80-120 it/s - MCMC 200K @ 0.5 Render Scale : 25-50 it/s (plus lent à cause de la relocalisation) - Avec 1M+ gaussiennes et pleine résolution : < 10 it/s

Une baisse de vitesse au fil de l'entraînement est normale — plus de gaussiennes = plus de calcul par itération. Des chutes soudaines (p. ex. de 30 → 5 it/s) indiquent un throttling thermique du GPU ou des apps concurrentes.

I37Elapsed

Inspecteur → Progression → Training Metrics → Elapsed. Lecture seule.

TECHNIQUE

Temps déjà écoulé au format « 4:23 » (m:ss) ou « 1:23:45 » (h:mm:ss). Changement de format à partir d'une heure. Ne mesure que le temps d'entraînement pur, pas les phases précédentes (calcul SfM, import d'images). En cas de pause/reprise, l'horloge continue de tourner — il s'agit donc du temps réel (wall-clock), pas du temps CPU.

Section du diagramme de perte (I39–I41)

Crop du groupe « Loss History » après entraînement terminé — Current : 0.0075, à droite en vert Min : 0.0051, courbe bleue partant d'environ 0.14 et chutant fortement puis descendant de manière effilochée jusqu'à 20K, axe à gauche 0.14 / 0.071 / 0.0051 ; en dessous le diagramme orange « Gaussian Count » avec un axe de 16K à 9K et une valeur finale de 9 660
Crop du groupe « Loss History » après entraînement terminé — Current : 0.0075, à droite en vert Min : 0.0051, courbe bleue partant d'environ 0.14 et chutant fortement puis descendant de manière effilochée jusqu'à 20K, axe à gauche 0.14 / 0.071 / 0.0051 ; en dessous le diagramme orange « Gaussian Count » avec un axe de 16K à 9K et une valeur finale de 9 660

Le groupe du diagramme de perte (« Loss History », le deuxième groupe repliable de la section Progression) visualise l'évolution de l'entraînement au fil du temps. Il se compose de deux graphiques : un graphique de courbe de perte (grand, en haut, bleu) et un graphique du nombre de gaussiennes (plus petit, en bas, orange). Les deux se construisent en direct pendant l'entraînement et persistent jusqu'au prochain démarrage d'entraînement. Avant le premier entraînement, la zone est vide (« Loss curve will appear during training »). Les graphiques sont de purs dessins de chemins SwiftUI (pas de framework Swift Charts), afin qu'ils restent fluides même avec 100K+ points.

I39Current Loss (affichage)

Inspecteur → Progression → Loss History → zone d'étiquette de gauche « Current : 0.0075 ». Lecture seule.

TECHNIQUE

Valeur flottante du dernier point d'échantillon de perte, formatée avec quatre décimales. Identique à I31 (Loss dans la section Métriques), mais formaté de façon plus compacte ici. La source est l'historique de perte — une liste qui reçoit une entrée toutes les ~30 itérations. Seules les valeurs finies sont ajoutées à la liste — NaN/Infinity (très rare, en cas de bug d'explosion de gradient) sont filtrées.

I40Min Loss (affichage)

Inspecteur → Progression → Loss History → zone d'étiquette de droite « Min : 0.0051 » (verte). Lecture seule.

TECHNIQUE

Minimum de toutes les valeurs de perte jamais observées durant l'exécution d'entraînement en cours. Recalculé en direct à partir de l'historique de perte — pas de persistance séparée. Affiché en vert, car « Min » = « meilleur jusqu'à présent ». La ligne verte en pointillés au bas du graphique marque visuellement cette position en Y. Lors des sessions de reprise d'entraînement (Continue Training), le suivi du minimum redémarre — l'ancien historique est remplacé par le nouveau dans l'UI (et non concaténé). Si l'entraînement actuel se déroule moins bien que le précédent, l'affichage du minimum peut donc être supérieur au résultat final précédent.

I41Diagramme Gaussian Count

Inspecteur → Progression → Loss History → deuxième graphique en dessous (orange). Lecture seule.

TECHNIQUE

Diagramme en ligne du nombre de gaussiennes au fil des itérations d'entraînement. Source : l'historique du nombre de gaussiennes (liste de paires (Iter, Count), alimentée par l'entraîneur toutes les ~30 itérations). Échelle Y dynamique entre le minimum et le maximum de l'historique. Avec la stratégie Classic, la courbe ressemble typiquement à ceci : croissance continue jusqu'à Densify Until, puis plat (avec de petites fluctuations dues à l'élagage). Avec MCMC : montée abrupte jusqu'au plafond (Cap), puis ligne horizontale (la relocalisation maintient le nombre constant). Une baisse tout à la fin est normale — sur l'image ci-dessus, la courbe descend d'environ 16K à 9 660, car les passes de nettoyage s'appliquent après la dernière itération (I26). Seule une chute au milieu de l'exécution est alarmante : dans ce cas, la densification élague de manière trop agressive — indice de mauvais réglages par défaut ou d'un bug connu d'effondrement MCMC (sujet du correctif v1.4.4).

Comment lire la courbe de perte ?

Le diagramme de perte est l'outil de diagnostic le plus important de l'inspecteur — aucun autre indicateur ne montre aussi directement si l'entraînement progresse utilement ou s'il est bloqué. La forme saine typique est une chute rapide durant les 1000 à 3000 premières itérations (de ~0.15 à ~0.05), suivie d'une baisse lente et régulière jusqu'à la fin de l'entraînement (vers 0.020-0.030). Sur une échelle logarithmique, la courbe apparaît alors comme une diagonale lisse.

Que signifie un plateau au niveau de la perte ? Si la courbe reste plate pendant plusieurs milliers d'itérations, il y a deux interprétations possibles : (a) l'entraînement a « convergé » — la perte ne peut plus baisser significativement, car le modèle est aussi bon qu'il peut l'être avec les données et réglages donnés. C'est souhaitable ; c'est « terminé ». (b) l'entraînement « stagne » — la perte pourrait encore baisser, mais l'optimisation piétine (minimum local, taux d'apprentissage trop faible, densification désactivée). Pour distinguer les deux : si la valeur de perte se situe dans une plage typiquement bonne (0.020-0.030 pour intérieur/objet, 0.040-0.060 pour extérieur) et que la courbe est plate depuis 5K itérations, c'est convergé. Si la valeur est nettement plus élevée que pour des scènes comparables (par exemple 0.08), c'est que ça stagne.

Attention, plateau des gaussiennes ≠ plateau de la perte. Un plateau dans le nombre de gaussiennes ne signifie pas que l'entraînement est terminé. Cela signifie seulement que la densification a cessé d'ajouter de nouveaux points — soit parce que est atteint (Classic), soit parce que le plafond MCMC est plein. L'entraînement continue ensuite en ne faisant qu'affiner les points existants. Le véritable signal « terminé » se lit sur la courbe de perte et sur l'affichage des itérations (I30), pas ici.

Règle empirique pour interrompre : Si la courbe de perte est au-dessus de 0.08 après plus de 5000 itérations et ne baisse presque plus, il est fort probable que la reconstruction SfM soit défaillante. Interromps l'entraînement, vérifie au chapitre 9 si le backend SfM choisi convient à la scène, passe éventuellement à COLMAP/Native, puis redémarre. Il vaut mieux investir 10 minutes dans un meilleur SfM que 2 heures d'entraînement avec un mauvais alignement de caméra.

Quand recourir à l'inspecteur ?

Référence rapide : quelle section + quels contrôles pour quel cas d'usage typique ?

Tâche couranteSectionIDs de contrôle
Désaturer les couleurs du splat finalLookL1 (Saturation)
Arrondir les splats en forme d'aiguille/confettiLookL2 (Splat length)
Remplir un nuage troué / agrandir les splatsLookL3 (Splat size)
Masquer le « confetti lointain » lors des orbitesLookL4 (Fade far region)
Annuler les réglages de LookLookL5 (Reset finishing)
Charger une configuration prédéfiniePresetsI7 (cliquer sur la ligne)
Enregistrer sa propre configurationPresetsI1 → I2 → I4
Partager une configuration avec des collèguesPresetsI5 (Export) ou I6 (Import)
Changer de backend SfM (par ex. parce qu'Apple PG est trop instable)Caméras & Prise de vueI12 (voir chap. 9)
Traiter des images vidéo sans focale EXIFCaméras & Prise de vueI13 (FOV Override)
Performance COLMAP : GLOMAP au lieu de ClassiqueCaméras & Prise de vueI14 — seulement dans les builds développeur, la build App Store ne propose pas COLMAP comme backend
Passer de Classic à MCMCConfiguration de l'entraînementI15
Laisser tourner l'entraînement plus longtempsConfiguration de l'entraînementI18 (Max Iter) + I20 (Densify Until) — couplés via I19
Réduire de moitié le temps GPUConfiguration de l'entraînementI22 (Render Scale à 50 %)
Qualité d'entraînement +6 % (MCMC)Configuration de l'entraînementI16 (MCMC Quality)
Scène extérieure avec de nombreux points SfMConfiguration de l'entraînementI17 (Auto-scale by scene)
Configurer / changer le chemin COLMAPCaméras & Prise de vueI23 / I24 / I25 — seulement dans les builds développeur
Réduire la taille des fichiers exportésTrainingI26 (toujours laisser activé)
Le dernier soupçon de détail pour les structures finesTrainingI29 (Perceptual Loss 0.05-0.1)
Surveiller l'entraînementProgression ▸ Training MetricsI30 (Progression), I36 (Vitesse) — le temps restant s'affiche dans la barre de transport sous le Viewport
Évaluer la qualité rapidementProgression ▸ Training MetricsI31 (Loss < 0.05 après 5K = bon)
Suspicion de problème SfMProgression (les deux groupes)I31 + I39 (Loss > 0.08 après 5K → refaire SfM)
Distinguer convergence et blocageProgression ▸ Loss HistoryI39 + I40 (lire le plateau de Loss)
Détecter un problème de densificationProgression ▸ Loss HistoryI41 (la courbe Gaussian chute → bug)