Capítulo 4 — Janelas auxiliares
Além da janela principal (viewport 3D mais Inspector), o RadianceKit gerencia mais seis janelas, todas abertas pelo menu Help. O menu tem oito itens, de cima para baixo: User Guide (⌘?), Keyboard Shortcuts (⌘/), Open Training Logs… (⇧⌘L), Open Exports Folder…, Manage Storage…, Pareto Dashboard… (⇧⌘D), Holdout Analysis… (⇧⌘H), BayesOpt Console… (⇧⌘B). Os dois itens "Open …" não abrem uma janela do app, mas sim o Finder; por isso não são tratados em detalhe aqui. Três das janelas — Dashboard, Holdout, BayesOpt — são ferramentas de análise autônomas: funcionam independentemente da janela principal e leem ou gravam arquivos JSON no disco. Cada uma dessas três janelas é aberta pelo menu Help, e é você quem escolhe em seguida o arquivo ou a pasta que deseja avaliar — por meio de "Open Reports Folder…", "Open transforms.json…" ou do botão "Start". Essas três janelas são as únicas que não foram traduzidas: seus botões, controles deslizantes e títulos de coluna aparecem em inglês em qualquer idioma da interface. Assim, as denominações mencionadas aqui são exatamente as que você encontrará na tela.
As três janelas simples (User Guide, Keyboard Shortcuts, Manage Storage) e os dois itens de menu de pasta (Open Training Logs / Open Exports Folder) recebem uma breve entrada por controle. As três janelas de análise têm documentação mais detalhada — cada uma com uma introdução que explica o que você vê na janela, quando deve abri-la e como interpretar a imagem exibida.
No final do capítulo há uma seção de referência cruzada ao Inspector da janela principal: o que você pode interpretar de forma útil no gráfico de perda ao vivo (Live-Loss-Chart) e na exibição da contagem de gaussianas durante um treinamento em andamento.
Guia do Usuário (W1–W4)

O que é: Uma janela de ajuda integrada que renderiza o arquivo guide_<sprache>.md fornecido junto com o app. O idioma é derivado das Settings (aba General → Language) ou, se lá estiver definido como "System", das preferências de idioma do macOS. O layout é clássico: barra lateral à esquerda com todos os títulos, texto corrido à direita.
Quando você precisa de uma lembrança rápida sobre um único ponto — ou seja, como substituto de anotações. A referência completa é este Manual; a janela de ajuda integrada é a versão curta para consulta rápida. Ela é atualizada a cada release do app, mas mantida com conteúdo mais superficial.
W1NavigationSplitView (Sidebar + Detail)
ONDE
Help → User Guide (⌘?).
TÉCNICO
Layout de duas colunas com uma sidebar estreita (no mínimo 180 pt de largura) para a árvore de conteúdo e uma área de detalhe rolável para o conteúdo Markdown propriamente dito. A janela tem um tamanho mínimo de 700 × 500 pt. Ao abrir pela primeira vez, a janela carrega o guide_<lang>.md correspondente do bundle do app (fallback guide_en.md), faz o parsing em registros de bloco (títulos H1–H4, parágrafos, listas, tabelas, linhas divisórias) e extrai separadamente a estrutura de títulos para a sidebar. A formatação inline (negrito, itálico, code-span) é renderizada pela engine de Markdown integrada. O idioma é lido das configurações do app, com o caso especial de chinês (zh-Hans) e português brasileiro (pt-BR), que são mantidos como tags de locale completas, pois essas variantes se diferenciam de zh e pt, respectivamente.
W2List (Sidebar de Títulos)
ONDE
Coluna esquerda na janela do Guia do Usuário.
TÉCNICO
Lista com todos os títulos H2 e H3 do documento Markdown atual. Entradas H2 aparecem sem recuo, com peso de fonte médio; entradas H3 aparecem com 16 pt de recuo à esquerda e estilo de primeiro plano reduzido. Todos os outros níveis — tanto H1 quanto H4 e abaixo — não aparecem na sidebar, pois deixariam a navegação confusa. Os IDs de âncora são gerados a partir do texto do título por slugificação (letras minúsculas + espaços viram traços + filtragem para letras/números/traços — o mesmo algoritmo que o GitHub usa para suas âncoras de Markdown, de forma que até URLs externas para a documentação poderiam potencialmente apontar para a mesma âncora). A lista usa o estilo nativo do macOS.
W3Button (Salto de Título → Âncora)
ONDE
Um botão por linha da sidebar.
TÉCNICO
Cada item da sidebar é um botão que define a âncora atual, mas visualmente parece um item de lista. Uma variável observadora então dispara o salto de rolagem até a âncora correspondente, com uma animação suave de 0,3 s. Depois do salto, o valor da âncora é resetado, para que o próximo clique na mesma âncora dispare novamente (caso contrário, o observador não seria acionado de novo, pois o valor não teria mudado).
W4ScrollView (Conteúdo de Detalhe)
ONDE
Coluna direita.
TÉCNICO
Área de conteúdo rolável, empilhada verticalmente, com renderização preguiçosa (lazy), pois guias mais longos podem facilmente ter mais de 200 blocos Markdown — uma variante não-lazy instanciaria todos simultaneamente. Cada bloco recebe um ID próprio, seja a âncora do título (que todo título recebe, independente do nível) ou um placeholder de índice. A largura máxima é de 720 pt, com padding de 32 horizontal / 24 vertical, para que linhas longas mantenham um layout de boa legibilidade. Tabelas são renderizadas célula por célula com stacks horizontais e linhas divisórias; código inline pela engine de Markdown integrada. Blocos de código reais são atualmente tratados como parágrafo — uma limitação conhecida da janela de ajuda.
Atalhos de Teclado (W5–W6)

Lista de referência estática em cinco seções. Navigation: Mouse Drag (Orbit/Fly), Shift+Drag/Right-Drag (Pan), Scroll (Zoom), WASD (movimento Fly-Through), Q/E (Up/Down), F (Toggle Orbit/Fly), Double-click (Re-center), Cmd+Scroll (ajuste de FoV). Views: R (Reset Camera), T (Auto-Rotation), P (Camera Playback), B (Background-Cycle), 0–9 (pula para Training-Cam 1=10%/5=50%/0=último), Left/Right Arrow (Prev/Next Cam). Capture: S (Screenshot to Desktop), V (vídeo Turntable), C (Copy Camera Info). Editor: Tab (modo de edição), Click/Drag (seleção por pintura), Option+Click (desmarcar seleção), X / Delete (apagar seleção), Cmd-Z (desfazer última exclusão), [ / ] (diminuir/aumentar tamanho do pincel), Esc (limpar seleção). Training: Option+Space (pausar/retomar treinamento), Cmd+E (exportar cena). Nada além disso está aqui — Start, Cancel e as extensões você acessa pelo menu Training (capítulo 1).
O que é: Uma visão geral estática e simples de todos os atalhos de teclado — Navigation, Views, Capture, Editor, Training. O conteúdo é fixo e não é carregado a partir de um arquivo.
Quando você procura a forma mais rápida de fazer algo no Viewport. WASD-Fly-Through, R para Camera-Reset, B para o Background-Cycling — tudo está aqui.
W5ScrollView (área de conteúdo)
ONDE
Help → Keyboard Shortcuts (⌘/).
TÉCNICO
Uma área de rolagem simples com uma lista vertical dentro. Padding de 20 ao redor, sem árvore de navegação lateral (a lista é curta o bastante). O conteúdo é agrupado em cinco seções (Navigation, Views, Capture, Editor, Training). Para cada combinação de teclas há uma linha com texto traduzível em ambas as colunas. A coluna esquerda (código da tecla) tem largura fixa de 180 pt, para que as descrições à direita permaneçam alinhadas verticalmente. Nenhuma interação além de rolar — clicar em uma linha não dispara nada, os atalhos de teclado são modificadores de teclado reais no menu e no viewport.
W6VStack (seções de atalhos)
ONDE
Dentro do ScrollView.
TÉCNICO
Seções empilhadas alinhadas à esquerda com 16 pt de espaçamento. Dentro das cinco seções, cada uma tem um Heading + sequência de linhas. Os headings usam um estilo secundário de subheadline — propositalmente sem formato de Title, pois as seções não precisam ser navegáveis. O conteúdo é propositalmente plano (sem disclosure, sem search, sem filter), para que o componente funcione sem alterações em qualquer versão do macOS e o arquivo permaneça legível.
Manage Storage (W7–W12)

Visualização em tabela de todos os arquivos gerenciados pelo RadianceKit. O cabeçalho conta 1.356 itens, 55,1 GB de tamanho total. Barra de ferramentas acima: „Show in Finder" + „Refresh". Cada linha: ícone de exportação, nome do arquivo (ex.: training_20260718T194416Z.ply), data de exportação, tamanho (varia aqui de 7,8 MB a 2,24 GB), ícone de lupa (Reveal) e ícone de lixeira (Move to Trash). A ordenação é primeiro por categoria e, dentro de uma categoria, por data, com as mais recentes no topo. Nesta captura predominam as exportações PLY, porque neste local foram salvos principalmente resultados de treinamento.
O que é: Uma visão geral do uso de disco para tudo que o RadianceKit armazena em ~/Documents/RadianceKit/ — logs, exportações, cenas, pacotes de captura (do companion iOS), importações (cópias temporárias das imagens de entrada). Por item, um tamanho em bytes e dois botões: „im Finder anzeigen" e „in den Papierkorb verschieben". NÃO é uma limpeza automática — o app em si não apaga nada; você decide item por item. Esta janela é traduzida: em alemão chama-se „Speicher verwalten", os dois botões do cabeçalho se chamam „Im Finder anzeigen" e „Aktualisieren", os botões de linha „Im Finder anzeigen" e „In den Papierkorb legen". Os nomes em inglês nos itens abaixo são as denominações da versão em inglês.
Quando o disco começa a ficar cheio. Sobretudo os logs se acumulam (um JSONL por tentativa de treinamento, mais o _qualityMetrics.json); as exportações também, claro (PLY é 100% dados brutos, um por exportação). Também útil após uma falha, quando o diretório de staging de importações ainda tem cópias antigas das imagens de entrada espalhadas por aí.
W7Botão „Show in Finder"
ONDE
Cabeçalho, canto superior direito da janela do navegador de armazenamento.
TÉCNICO
Abre a pasta de dados do RadianceKit no Finder — exatamente o diretório cujo conteúdo esta janela lista. Assim você vê a estrutura de pastas (Logs, Exports, Scenes, Captures, Imports) diretamente e também pode mover ou copiar os arquivos usando o próprio Finder. A ação abre uma nova janela do Finder; a lista na janela não é atualizada com isso — é para isso que serve „Refresh" (W8).
W8Botão „Refresh"
ONDE
Cabeçalho, ao lado do botão do Finder.
TÉCNICO
Dispara uma varredura em segundo plano que roda como uma tarefa assíncrona iniciada pelo usuário, para que a varredura de árvores de diretório grandes não bloqueie a interface. A travessia percorre cada subpasta conhecida (Logs, Exports, Scenes, Captures, Imports) e cria um item de armazenamento para cada filho direto. Para cada item, o tamanho recursivo é determinado — preferencialmente o uso real de disco (incluindo o compartilhamento de hardlinks do APFS), com fallback para o tamanho lógico do arquivo.
W9List (itens de armazenamento)
ONDE
Conteúdo principal abaixo do cabeçalho.
TÉCNICO
Lista com este layout por linha: ícone SF Symbol específico da categoria (documento para Logs, seta de upload para Exports, cubo para Scenes, iPhone para pacotes de captura, bandeja para Imports), nome + subtítulo (rótulo de tipo + data de modificação formatada), contador de bytes à direita (alinhado à direita, monoespaçado), botão Reveal (ícone de lupa), botão Trash (lixeira). Ordenação: primeiro por tipo (Scenes primeiro, depois Exports, Logs, Captures, Imports, Other), secundariamente por data de modificação decrescente (mais recentes no topo). Se a varredura ainda estiver em andamento, o local exibe em vez disso um progresso „Scanning…". Se nada foi encontrado, uma exibição de estado vazio com ícone de bandeja.
W10Botão de linha „Reveal in Finder"
ONDE
Por linha, ícone de lupa à direita.
TÉCNICO
Abre o Finder e seleciona o item específico (arquivo ou pasta). Diferença em relação a W7: W7 abre o diretório raiz; W10 marca exatamente esse item. Fluxo de trabalho prático: identifique um item grande, clique na lupa, depois copie-o, por exemplo, para um volume externo.
W11Botão de linha „Move to Trash"
ONDE
Por linha, ícone de lixeira à direita da lupa.
TÉCNICO
Aciona a caixa de diálogo de confirmação (W12). Só após a confirmação é executada a operação padrão do macOS „mover para a lixeira" (portanto reversível, sem exclusão direta). Após o descarte bem-sucedido, o item é removido da lista e o contador de bytes total é atualizado. Em caso de erro, uma caixa de diálogo de erro modal é exibida.
W12ConfirmationDialog (confirmação de exclusão)
ONDE
É acionado pelo W11, exibido como uma sheet do macOS.
TÉCNICO
Caixa de diálogo de confirmação padrão com título dinâmico „Delete <name>?" e uma linha de mensagem que indica explicitamente que o item vai para a lixeira e pode ser restaurado de lá (até que a lixeira seja esvaziada). Dois botões: „Move to Trash" como ação destrutiva (exibida em vermelho) e „Cancel" com atalho automático de Esc. A caixa de diálogo é não modal no sentido de que bloqueia apenas essa janela, não o app inteiro — isso é o padrão do macOS para exclusões reversíveis.
Painel Pareto (W13–W22)

Estado vazio (após a primeira abertura) — Empty-State com Call-to-Action „Open Reports Folder…". Os pontos de dados aparecem assim que relatórios de treinamento são carregados, veja o próximo screenshot.

A barra de ferramentas superior mostra à direita „384 reports of 384" (todos os relatórios na pasta selecionada foram analisados com sucesso); à esquerda do botão „Open Reports Folder…" está o nome da pasta carregada, aqui „Benchmarks". Eixos: seletor de eixo X em Gaussians, seletor de eixo Y em PSNR (dB), ao lado a marcação ativa „Show Pareto Front". Legenda no canto superior esquerdo: azul = mcmc, verde = classic, laranja = hybrid, além da forma de símbolo para Mip-Splatting On/Off. A linha tracejada da Pareto-Front percorre os melhores valores de PSNR alcançados e estabiliza em torno de PSNR≈30 dB a partir de aprox. 300 mil Gaussians; a nuvem de pontos vai além de 1,5 milhão de Gaussians. Chips de filtro à direita: mais de 30 cenas (entre outras bicycle, bonsai, family, flowers, garden, kitchen, stump, truck, bem como as séries de teste numeradas 360, drone e photo), 3 Strategies (classic, hybrid, mcmc), 3 opções de Mip-Splatting (All, On, Off) com „All" ativo. Atualmente não há filtro de Scene ou Strategy definido, por isso o denso agrupamento de pontos.
O que é: Uma ferramenta de comparação multi-execução. No passado, você treinou várias cenas ou a mesma cena com diferentes Presets — de uma avaliação de benchmark surge, por execução de treinamento, um arquivo JSON de relatório, que contém, entre outras coisas, PSNR final, SSIM, LPIPS, contagem de Gaussians e tempo de parede. Não há um botão específico para essa avaliação na interface; o painel avalia o que já está presente como relatório na pasta selecionada. Ele lê uma pasta inteira desses relatórios de uma só vez e os plota como um scatter 2D com eixos selecionáveis. Além disso, a Pareto-Front (o conjunto de pontos não dominados) é desenhada como uma linha tracejada.
Depois de você ter criado pelo menos três ou quatro relatórios de treinamento. Com menos pontos, a linha de fronteira não é significativa. Caso de uso típico: você tentou reconstruir uma cena externa e testou sequencialmente P3 Balanced (Classic), P4 Quality (Classic), P8 Quality (MCMC) e P9 Drone / Aerial — agora você quer saber qual configuração oferece o melhor PSNR por segundo de tempo de treinamento ou qual precisa de menos Gaussians para um determinado PSNR.
Ambos os eixos são livremente selecionáveis (eixo X: Gaussians, tempo de treinamento, PSNR, SSIM, LPIPS, …; eixo Y da mesma forma). O cálculo da Pareto-Front sabe para cada métrica se „menor = melhor" (LPIPS, Gaussians, Training Time, BRISQUE) ou „maior = melhor" (PSNR, SSIM, FSIM, MS-SSIM) — a linha percorre, dependendo da escolha dos eixos, de baixo à esquerda para cima à direita ou de cima à esquerda para baixo à direita, sempre ao longo da melhor combinação alcançada. Um ponto é Pareto-ótimo se NENHUM outro ponto for pelo menos igualmente bom em AMBAS as dimensões (ou seja, nenhum outro o domina). Pontos Pareto-ótimos estão na linha, outros pontos ficam à direita/acima (dependendo da orientação dos eixos) dela. Pontos NA linha são os verdadeiros candidatos ao „melhor Preset"; pontos LONGE da linha representam tempo de treinamento desperdiçado.
Você pode restringir a seleção a uma cena específica (se, por exemplo, quiser comparar apenas execuções externas), a uma estratégia específica (classic, hybrid ou mcmc), ou a Mip-Splatting ligado/desligado (Mip-Splatting é uma configuração opcional para usuários avançados, por isso a comparação direta vale a pena).
Você tem três relatórios para a cena „truck" em uma pasta de relatórios: Run A (P4 Quality (Classic), 524 mil Gs, 105 s, PSNR 23.4), Run B (P8 Quality (MCMC), 150 mil Gs, 693 s, PSNR 24.6), Run C (P5 Ultra Detail, 1,25 milhão Gs, 312 s, PSNR 25.8). Defina o eixo X para Training Time, o eixo Y para PSNR. Run B fica no canto superior direito, Run C ainda mais à direita e acima, Run A na parte inferior esquerda. A Pareto-Front conecta A e C — ambos não dominados. Run B está „perdido" (C é melhor em Time E PSNR). Conclusão: para „truck" o caminho MCMC não vale a pena; ou rápido+ok (A) ou longo+muito bom (C). Salve a configuração de C como Preset próprio (Inspector → I1 Save Preset).
Próxima ação: Salvar a melhor configuração como Preset. Concretamente: observe os pontos Pareto (passar o mouse mostra PSNR/SSIM/LPIPS/Gs/Time no tooltip), decida qual se encaixa melhor no trade-off entre tempo e qualidade, abra o relatório correspondente (o nome do arquivo contém o timestamp da execução), copie a configuração de treinamento correspondente em uma nova execução ou salve-a após a próxima sessão de treinamento como Preset através do Inspector.
W13Botão „Open Reports Folder…"
ONDE
Barra de ferramentas superior esquerda.
TÉCNICO
Abre uma caixa de diálogo de seleção de pasta com a solicitação „Select a folder containing benchmark .json reports". Após a confirmação, uma tarefa em segundo plano é executada, analisando sequencialmente todos os arquivos .json na pasta. Relatórios com erro (JSON corrompido, esquema incorreto) são coletados e exibidos abaixo na barra lateral como „N file failed to parse" — sem travamento. Se um segundo clique ocorrer enquanto um primeiro carregamento ainda está em andamento, a tarefa anterior é cancelada, para que dois resultados não sejam gravados no estado ao mesmo tempo.
A pasta selecionada não é lembrada permanentemente: depois de abrir a janela via Ajuda → Pareto Dashboard… (⇧⌘D) você a seleciona novamente aqui. O nome da pasta carregada aparece então à direita do botão.
W14Seletor „X-Axis"
ONDE
Acima do gráfico, à esquerda.
TÉCNICO
Seletor de menu com todos os eixos de métricas disponíveis do módulo do painel (PSNR, SSIM, LPIPS, contagem de Gaussians, tempo de treinamento e assim por diante). O padrão é contagem de Gaussians. Ao trocar, o ponto sob o cursor é reiniciado, porque uma posição destacada anteriormente no sistema de coordenadas do eixo antigo deixa de fazer sentido após a troca de eixo. O seletor é limitado à largura do conteúdo, para não se estender por toda a largura.
W15Seletor „Y-Axis"
ONDE
Acima do gráfico, ao lado de X-Axis.
TÉCNICO
Idêntico ao W14, exceto que o padrão é PSNR. A escolha do eixo é armazenada de forma independente, então o usuário pode escolher combinações sem sentido (X=PSNR, Y=PSNR — jogaria todos os pontos em uma diagonal). No entanto, tais combinações não são bloqueadas; decisão consciente, porque uma comparação „SSIM vs PSNR" é bastante interessante para ver quão consistentes as métricas se comportam entre si.
W16Alternância „Show Pareto Front"
ONDE
À direita dos seletores de eixo.
TÉCNICO
Uma caixa de marcação, ativada por padrão. A Pareto-Front é sobreposta à nuvem de pontos como uma linha sobre o gráfico — tracejada (padrão de traço 4–4), cinza semitransparente, espessura de linha 1,5 pt. Atenção: Na versão distribuída, a marcação não afeta o gráfico — a linha da fronteira é sempre desenhada, marcada ou não. A fronteira é recalculada a cada troca de eixo e após cada alteração de filtro.
W17Chips de filtro „Scene"
ONDE
Barra lateral direita na janela do painel.
TÉCNICO
Chips de filtro para cada cena presente nos relatórios carregados. Layout de fluxo próprio, que reorganiza automaticamente os chips em várias linhas assim que a largura é esgotada. Chips ativos recebem o fundo de destaque, os inativos um fundo neutro de material padrão. É possível seleção múltipla (semântica de conjunto); se nenhum chip estiver selecionado, todas as cenas são consideradas „permitidas" — ou seja, a lógica de conjunto é „seleção vazia = tudo", não „seleção vazia = nada".
W18Chips de filtro „Strategy"
ONDE
Abaixo do filtro de Scene na barra lateral.
TÉCNICO
Exatamente como W17, mas para estratégias de treinamento — tipicamente os três valores „classic", „hybrid" e „mcmc", derivados do campo Strategy dos JSONs de relatório de benchmark. Útil quando você tem relatórios de várias estratégias misturados e quer ver apenas um tipo (por exemplo, „mostrar apenas execuções MCMC, porque já excluí o Classic").
W19Chips de filtro „Mip-Splatting"
ONDE
Abaixo do filtro de Strategy na barra lateral.
TÉCNICO
Filtro de três valores (em vez de conjunto como em W17/W18): „All" / „On" / „Off". Contexto: Mip-Splatting é uma extensão multi-escala que ajuda ou não dependendo da cena — por isso permanece uma configuração ativável conscientemente e não um padrão. Se você faz comparações Mip on/off, muitas vezes quer separar com clareza. Daí o filtro ternário dedicado com os estados „deixar tudo passar", „apenas Mip ligado", „apenas Mip desligado". A seção da barra lateral aparece assim que o conjunto carregado contém quaisquer relatórios — ou seja, praticamente sempre; ela só desaparece quando absolutamente nada foi carregado.
W20ChipButton (alternador de filtro, all/on/off)
ONDE
Componente auxiliar, usado em W17/W18/W19.
TÉCNICO
Wrapper de botão minimalista. Conteúdo: texto de rótulo com tamanho de fonte de legenda (Caption) e preenchimento de 10 horizontal / 5 vertical. Fundo condicional: se ativo → cor de destaque do app com texto branco; caso contrário, fundo neutro de material padrão com a cor de texto normal (adapta-se à aparência clara e escura). O formato é uma cápsula (formato de pílula). Estilo de botão simples (plain), para que o material da cápsula não seja sobreposto por uma borda de sistema.
W21Gráfico (Pareto-Scatter)
ONDE
Área central do painel.
TÉCNICO
Gráfico Swift Charts com duas camadas: 1. um ponto por relatório — posição a partir das métricas X e Y selecionadas, cor por Strategy, símbolo por status de Mip. Tamanho do símbolo normal 80, destacado 200 (quando o ID corresponde ao relatório atualmente sob o cursor). 2. uma linha para a Pareto-Front (veja W16 — ela é sempre desenhada). Além disso, o ponto atualmente sob o cursor exibe o nome da cena como uma pequena cápsula acima dele.
Sobreposição do gráfico: um retângulo transparente registra o movimento do mouse; a cada quadro, a posição do ponto euclidianamente mais próximo no quadro do gráfico é determinada e o relatório sob o cursor é atualizado, caso a distância esteja abaixo de 24 px (caso contrário, é reiniciado). Assim você obtém o tooltip sem clicar — passar o mouse já basta.
W22Tooltip (detalhe ao passar o mouse)
ONDE
Abaixo do gráfico, exibido ao passar o mouse.
TÉCNICO
Pilha horizontal: nome da cena (Headline), tag de Strategy (Caption), linha divisória, depois métricas PSNR/SSIM/LPIPS/Gs/Time, cada uma em um pequeno grupo vertical (rótulo + valor monoespaçado). Se Mip estava ativado, uma tag adicional em cápsula „Mip" em cor de destaque. Fundo com desfoque semitransparente, retângulo arredondado com raio de 8 pt. Só é exibido quando o mouse está realmente sobre um ponto. Desaparece automaticamente ao sair.
Análise de Holdout (W23–W29)

Estado vazio com Empty-State e call-to-action „Open transforms.json…". Aceita os formatos NeRF-Studio e Instant-NGP. Os marcadores de câmera aparecem assim que um transforms.json é carregado — veja a próxima figura.

O cabeçalho mostra o arquivo carregado (transforms.json) e a contagem de câmeras („86 cameras"). Barra lateral esquerda: seletor de estratégia com duas opções — Angular (longitudinal) ativa (ordena as câmeras pelo seu ângulo longitudinal ao redor da órbita e as distribui depois em rodízio pelos folds) vs Linear (round-robin) (a mesma distribuição em rodízio, mas pela ordem das imagens em vez do ângulo de visão). O slider de k-Folds está em 5, o seletor de test-fold em Fold 1. O botão Export gera um fold-assignment.json para uso posterior em ferramentas externas de avaliação. Painel central: projeção em globo 3D de todas as 86 câmeras, distribuídas por toda a esfera — pontos verdes = treino, pontos vermelhos = fold de teste atual (Fold 1 com 18 câmeras). Barra lateral direita (Angular Correlation): por fold o número de câmeras + Mean Nearest Angle (Fold 1: 18 Cams / 8,5°, Fold 2: 17 / 6,1°, Fold 3: 17 / 6,2°, Fold 4: 17 / 6,7°, Fold 5: 17 / 6,4°) — um valor menor significa que cada câmera de teste tem uma câmera de treino próxima, o teste é, portanto, mais fácil.
O que é: Um visualizador 3D para o arranjo das suas câmeras com lógica de validação cruzada. Você carrega um transforms.json (o formato padrão do Nerfstudio / Instant-NGP para poses de câmera), o app lê todas as câmeras, projeta suas direções de visão em uma esfera unitária e as exibe como pequenos marcadores esféricos em um globo virtual. Em seguida, ele divide as câmeras em k folds (de acordo com a estratégia escolhida: angular ou linear), marca em verde a parcela de treino e em vermelho a parcela de teste (holdout), e calcula, por fold, um score de correlação angular que indica o quão longe o fold de teste está, no espaço dos ângulos de visão, do fold de treino.
Quando você quer fazer uma avaliação de holdout — ou seja: o quão bem seu modelo generaliza para ângulos de visão nunca vistos? O padrão no treinamento é „every-8th view como holdout" (convenção Mip-NeRF360), mas essa é uma divisão muito linear. Se, por exemplo, suas imagens estiverem agrupadas temporalmente (primeiro um lado do objeto, depois o outro), então „every-8th" não é representativo — uma posição de sequência aleatória vai para o teste, mas todas as suas vizinhas ficam no treino, o que é fácil demais. Com „angular" você estratifica em vez disso pelo espaço dos ângulos de visão: cada fold contém câmeras de todas as regiões da órbita, de modo que o teste realmente avalia lacunas de generalização.
Angular vs Linear: - Angular (padrão): ordena todas as câmeras pelo seu ângulo longitudinal (coordenada φ ao redor do eixo Y) e as distribui então em rodízio pelos k folds — a primeira câmera do anel vai para o Fold 1, a segunda para o Fold 2, e após k câmeras o ciclo recomeça do início. Vantagem: cada fold contém câmeras de todas as direções da órbita, distribuídas uniformemente pelo anel. Bom para tomadas de órbita clássicas, porque a divisão deixa de depender da ordem de captura. - Linear (Round-Robin): a mesma distribuição em rodízio, mas pela posição da imagem em vez do ângulo (índice do fold = image_index módulo k). Essa é a divisão simples „every-k-th". Funciona bem quando a ordem das imagens NÃO tem viés espacial (por exemplo, tomadas de drone em ordem aleatória). Funciona mal quando as imagens se agrupam temporalmente — nesse caso, frames vizinhos acabam em folds diferentes e o teste fica fácil demais.
No globo 3D você vê imediatamente: pontos verdes (treino) e pontos vermelhos (teste). Se os pontos vermelhos estiverem todos agrupados em um canto, o holdout é ruim (não é um bom teste de generalização). Se estiverem distribuídos uniformemente entre os verdes, é bom. O score de correlação angular por fold (barra lateral direita, em graus) indica adicionalmente: um valor menor = o teste está próximo do treino (cada câmera de teste tem uma câmera de treino próxima, teste fácil); um valor maior = o teste está distante do treino (generalização mais difícil).
Você capturou sua cena Truck com 251 imagens, exporta pelo item de menu M33 (Export SfM transforms.json) um arquivo nerfstudio. Abra a janela Holdout (⇧⌘H), carregue o JSON via „Open transforms.json…", observe o globo. k=5 (padrão) fornece 5 folds. Clique em „Fold 3" — veja se os marcadores vermelhos estão razoavelmente uniformes. Se sim: „Export fold-assignment.json". O arquivo exportado é destinado a ferramentas externas de avaliação (Nerfstudio, Instant-NGP); o RadianceKit em si não o lê novamente e continua treinando contra seu próprio padrão de holdout „every-8th". A janela serve aqui, portanto, para avaliar se o seu conjunto de câmeras sequer permite um teste justo.
W23Botão „Open transforms.json…"
ONDE
Barra de ferramentas superior esquerda.
TÉCNICO
Abre uma caixa de diálogo de seleção de arquivo, restrita a arquivos JSON. Após a confirmação, o módulo Holdout carrega o arquivo. O loader interpreta tanto o formato nerfstudio (intrínsecos de câmera mais uma lista de frames com caminho de imagem e matriz de transformação) quanto o formato instant-ngp (mesma estrutura). Por frame, a direção de visão é extraída da matriz de transformação (eixo z da base local da câmera) e armazenada. Se a análise falhar, uma mensagem aparece na barra lateral esquerda — porém apenas se uma cena já tivesse sido carregada ali antes; na primeiríssima tentativa a janela permanece no estado vazio sem mensagem visível.
O arquivo carregado não é lembrado permanentemente: depois de abrir a janela via Ajuda → Holdout Analysis… (⇧⌘H) você o seleciona novamente aqui. O seu nome aparece então à direita do botão.
W24Seletor „Strategy" (angular/linear)
ONDE
Barra lateral esquerda, em cima.
TÉCNICO
Seletor de opções (rádio) com duas opções: Angular e Linear. A troca de estratégia dispara automaticamente um recálculo dos folds. As direções de visão são uma lista de vetores unitários 3D na esfera; a estratégia Angular as ordena pelo seu ângulo longitudinal φ e as atribui então em rodízio aos folds, enquanto a estratégia Linear faz a mesma atribuição em rodízio pelo índice do frame e ignora totalmente a geometria. Ambas as estratégias geram, portanto, folds de tamanho igual; elas se diferenciam apenas em relação a que critério é usado para a ordenação prévia.
W25Slider „k Folds"
ONDE
Barra lateral esquerda, no meio.
TÉCNICO
Slider de 3 a 10, com incremento de 1. Ao ser alterado, o cálculo dos folds é automaticamente refeito, de modo que a lista de folds, os índices de treino/teste e o score por fold são imediatamente recalculados. O valor escolhido é exibido como texto com dígitos monoespaçados à direita do rótulo.
Regra prática: k=5 é o padrão (dá 20% de teste por fold, o que é usual para validação cruzada). k=10 quando você tem muitos dados e precisa de mais folds para relevância estatística. k=3 quando você tem poucos dados.
W26Seletor „Test Fold"
ONDE
Barra lateral esquerda, abaixo do slider de k.
TÉCNICO
Seletor de menu. Ele lista exatamente tantos itens quanto folds estiverem configurados, rotulados de „Fold 1" a „Fold N". Se o índice previamente selecionado for ≥ k (por exemplo, porque você reduziu k de 10 para 5), ele é automaticamente redefinido para 0. O fold de teste selecionado é exibido em vermelho no globo, todos os outros em verde.
W27Botão „Export fold-assignment.json"
ONDE
Barra lateral esquerda, embaixo.
TÉCNICO
Abre uma caixa de diálogo de salvamento com nome de arquivo padrão fold-assignment.json. Após a confirmação, o módulo Holdout codifica a divisão atual em um esquema JSON (atribuição de fold por frame mais um bloco de metadados de estratégia). O arquivo é destinado a ferramentas externas de avaliação — o RadianceKit não o lê novamente. O botão fica acinzentado enquanto nenhum arquivo de câmera estiver carregado. O sucesso é reportado como „Saved to (filename)", um erro de escrita como „Export failed: …" — ambos aparecem no mesmo lugar abaixo do botão e ambos em texto verde, portanto a cor não diferencia os casos.
W28SCNView (3D Camera Globe)
ONDE
Painel central na janela Holdout.
TÉCNICO
View de globo em SceneKit. A cena consiste em: uma esfera em wireframe (raio 1,0, 36 segmentos, cinza-escuro), três segmentos de eixo coloridos (vermelho/verde/azul para X/Y/Z, cada um com 1,2 de comprimento), e por câmera um pequeno marcador esférico (raio 0,03) na posição de direção de visão correspondente sobre a esfera unitária (ligeiramente para fora, para que não desapareça DENTRO da esfera wireframe). Os marcadores NÃO são reconstruídos a cada mudança de fold — a reconstrução só é necessária quando a lista de frames muda (ou seja, quando um novo JSON é carregado). Em vez disso, a cada atualização ocorre uma atualização in-place das cores do material: vermelho para índices de teste, verde para treino, cinza-claro se nem um nem outro. Assim, os ticks do slider permanecem performáticos mesmo com N > 1000 câmeras.
O controle de câmera está ativado — você pode girar o globo com o mouse, dar zoom, fazer pan. A iluminação garante que os marcadores não pareçam planos. O fundo é cinza-escuro.
W29FoldCard (Tap to Select Fold)
ONDE
Barra lateral direita, seção „Angular Correlation".
TÉCNICO
Uma view de cartão por fold — retângulo arredondado com raio de 6 pt, padding de 10, layout vertical com duas linhas (em cima „Fold N" + número de câmeras, embaixo „Mean nearest angle:" + valor em graus). Cor de fundo condicional: fold ativo = cor de destaque semitransparente, inativos = material padrão neutro. Tocar seleciona o fold, e o globo muda de cor imediatamente.
O score „Mean nearest angle" é o ângulo mínimo médio por câmera de teste até a câmera de treino mais próxima (calculado internamente em radianos, exibido na UI em graus).
BayesOpt Console (W30–W39)

Estado vazio com o seletor de espaço de busca (RadianceKit defaults (6-dim)), o slider de orçamento de trials (padrão 40), a semente aleatória (42) e três painéis vazios para o gráfico de convergência, o registro de trials e a lista de parâmetros do espaço de busca. O gráfico de convergência e a tabela de trials se preenchem assim que um run é iniciado — veja a próxima figura.

Status no canto superior direito „Finished — best 0.9943 after 40 trials", ao lado o botão „Save Best Config"; no canto superior esquerdo o botão „Start". Barra lateral esquerda: seletor de espaço de busca em RadianceKit defaults (6-dim), orçamento de trials 40, semente aleatória 42. A lista de parâmetros mostra os seis hiperparâmetros a ajustar com seus intervalos de valores: mipSmoothing3DScale [0.05, 0.5], mipFilter2DVariance [0.1, 0.6], densifyGradThreshold [5e-07, 5e-06], ssimWeight [0.05, 0.5], mcmcNoiseScale [1e-05, 0.0001], mcmcRelocationInterval [50, 200]. No centro: gráfico de convergência „Convergence (best value so far)" (X = índice do trial 0–40, Y = valor objetivo 0–1) — pontos azuis = amostras iniciais, pontos verdes = aquisição BayesOpt, pontos laranja = trials de reinício (#22 com 0.5303 e #31 com 0.4885). A linha azul do melhor valor sobe abruptamente até o trial ~5, depois apenas melhora marginalmente até o trial ~13, a partir daí um platô plano próximo de 1.0. Barra lateral direita: registro de trials, aqui rolado até os trials #8–#36, com pontuação e tag (init/bo/restart). O botão Save Best Config no canto superior direito grava bayesopt-best.json.
O que é: Um console de otimização bayesiana para busca de hiperparâmetros. BayesOpt é um procedimento automático que tenta encontrar o ponto ótimo de uma função desconhecida usando o menor número possível de experimentos — tipicamente: „qual combinação de limite superior de Gaussians, peso SSIM e limiar de densificação entrega o melhor PSNR para minha classe de cena?" Em vez de uma grade de 6^4 = 1296 trials, o BayesOpt experimenta cerca de 40–100 trials informados e assim chega perto do ótimo.
Importante: A versão atual entregue no app não executa a otimização contra runs de treinamento reais (isso levaria dias), mas sim contra um objetivo de demonstração sintético — uma paisagem multimodal com característica de hill-climbing mais um leve ruído. Isso é intencional: a janela deve mostrar a você o comportamento do otimizador (histórico de convergência, pontos de amostra, melhor até agora) e deixar você entender as definições do espaço de busca. Para runs BayesOpt reais orientados por treinamento (como os realizados no desenvolvimento dos presets fornecidos), é usado um caminho de avaliação separado fora do app; a janela é a variante ao vivo para acompanhar.
Três casos de uso: 1. Você quer entender como o BayesOpt trabalha — então inicie um run de demonstração e observe o gráfico de convergência. 2. Você está planejando uma nova classe de cena (por exemplo, „aquários" ou „móveis antigos"), para a qual os quinze presets integrados não se encaixam perfeitamente. Defina mentalmente um espaço de busca, teste-o aqui com „Bowl demo (1-dim)" ou „densify-until + ssim-weight + grad-thresh", depois exporte a melhor configuração como JSON e use-a como ponto de partida para um run de treinamento real. 3. Você quer inspecionar os espaços de busca padrão fornecidos (subconjunto Mip, RadianceKit Defaults) — eles são listados no painel de parâmetros da barra lateral esquerda.
- Gráfico de convergência (coluna central): Y = melhor valor de função objetivo alcançado até agora. X = índice do trial. No início sobe abruptamente (o BayesOpt experimenta as amostras iniciais aleatoriamente, algumas delas têm sorte), depois fica cada vez mais plano, porque a região próxima ao ótimo já foi explorada. Se a linha permanecer plana por 20+ trials, você pode parar o run — mais trials não trazem mais benefício. Os pontos individuais no gráfico são os valores de trial individuais (portanto não „melhor até agora"), coloridos por fase: azul = amostra inicial, verde = aquisição bayesopt, laranja = reinício. - Tabela de trials (coluna direita): #1, #2, #3, … cada um com valor e tag de fase. O melhor trial até agora é marcado com uma estrela amarela. Na tabela você pode identificar o melhor trial e verificar seus valores de parâmetro mais tarde durante a exportação. - Inspetor de espaço de busca (barra lateral esquerda): mostra para o preset selecionado todos os nomes de parâmetros e seus intervalos de busca [lo, hi]. Se você estiver no preset „RadianceKit defaults (6-dim)", verá por exemplo „densifyGradThreshold [5e-7, 5e-6]" — ou seja, log-uniforme entre esses dois valores.
Escolha o preset „RadianceKit defaults (6-dim)", orçamento de trials 40, semente 42. Clique em „Start". Observe: os primeiros 8 trials são azuis (amostras iniciais, hipercubo latino), os seguintes verdes (adquiridos pelo BayesOpt). O gráfico de convergência sobe abruptamente até o trial ~13, depois se estabiliza. No trial ~30–40 o melhor valor se estabiliza. Clique em „Save Best Config" — um bayesopt-best.json é salvo com o nome do preset, índice do trial, valor e os valores de parâmetro decodificados. Esse JSON você pode depois incorporar manualmente na definição do seu preset.
W30Botão „Start"
ONDE
Barra de ferramentas à esquerda, no estado ocioso/finalizado.
TÉCNICO
Reinicia a lista de trials, muda para o estado de execução, gera um novo run-ID (para detecção de estado obsoleto em cliques múltiplos de início) e cria um novo pause-gate. Em seguida inicia uma tarefa em segundo plano que executa o otimizador como um stream assíncrono. O número de amostras iniciais cresce com o orçamento, mas no máximo até 8 — ou seja, tipicamente 8 amostras de hipercubo latino a partir de um orçamento de 28, menos com orçamento menor. As atualizações de trial são recebidas incrementalmente e anexadas à lista. Proteção contra run obsoleto: se, nesse meio tempo, um segundo clique em Start redefinir o run-ID, as atualizações do run antigo são descartadas.
Estilo de ação primária para o visual proeminente do botão.
W31Botão „Pause"
ONDE
Barra de ferramentas à esquerda, no estado de execução.
TÉCNICO
Ativa o pause-gate e muda para o estado pausado. O efeito real: o executor aguarda em um loop de polling de 50 ms antes de avaliar a próxima função objetivo. Isso significa que um trial em execução no momento é concluído (afinal é sintético e dura apenas microssegundos), mas nenhum trial adicional é iniciado. Assim que o Resume for acionado, continua de onde parou.
W32Botão „Stop"
ONDE
Barra de ferramentas à esquerda, nos estados de execução e pausado.
TÉCNICO
Cancela a tarefa do executor, zera a referência, libera o pause-gate (caso ainda estivesse pausado) e muda para o estado finalizado (se houver trials) ou o estado ocioso (se não houver). Os trials já calculados permanecem visíveis na lista — Stop não os apaga. O papel de botão destrutivo mostra o botão em vermelho, porque ele interrompe o run.
W33Botão „Resume"
ONDE
Barra de ferramentas à esquerda, no estado pausado.
TÉCNICO
Libera o pause-gate e volta para o estado de execução. A tarefa do executor já está em andamento (ela está aguardando no loop de polling); assim que o loop perceber que a pausa foi removida, ele continua e inicia o próximo trial.
W34Botão „Save Best Config"
ONDE
Barra de ferramentas à direita, sempre visível (mas acinzentado enquanto ainda não houver um melhor run).
TÉCNICO
Abre uma caixa de diálogo de salvamento com o nome de arquivo padrão bayesopt-best.json, restrita a JSON. Após a confirmação, é construído um dicionário de payload: nome do preset, índice do trial, valor (pontuação objetivo), parâmetros (dicionário dos nomes de parâmetro decodificados → valores). A decodificação projeta as coordenadas normalizadas do espaço de busca em [0,1]^d de volta para o intervalo de valores original (com escalas log-uniforme/linear/inteira conforme apropriado). A saída JSON é formatada de forma legível e com chaves ordenadas. Em caso de erro de escrita, isso é (na versão de demonstração atual) ignorado silenciosamente — sem UI de erro, porque este é um caminho de demonstração.
O botão permanece cinza enquanto nenhum trial tiver sido executado.
W35Seletor „Search Space"-Preset
ONDE
Barra lateral esquerda, no topo.
TÉCNICO
Seletor em menu com quatro opções de preset: - „RadianceKit defaults (6-dim)" — o espaço de busca padrão completo com todos os seis hiperparâmetros padrão. - „Mip subset (2-dim)" — apenas mipSmoothing3DScale [0.05, 0.5] log-uniforme e mipFilter2DVariance [0.1, 0.6] linear. Útil se você quiser ajustar o Mip-Splatting para uma classe de cena. - „densify-until + ssim-weight + grad-thresh" — três parâmetros relevantes para densificação (densifyGradThreshold log-uniforme, ssimWeight linear, densifyUntilIter inteiro). - „Bowl demo (1-dim)" — espaço de busca de parâmetro único, didático, para demonstrações de „como o BayesOpt funciona".
Enquanto um run está ativo, o espaço de busca não pode ser trocado (isso confundiria o otimizador).
W36Slider „Trial Budget"
ONDE
Barra lateral esquerda, abaixo do seletor de espaço de busca.
TÉCNICO
Slider de 10 a 200, incremento de 5. Padrão 40. Isso significa: o BayesOpt pode fazer no máximo N trials. Destes, os primeiros são amostras iniciais (hipercubo latino), o restante são trials reais de BayesOpt. Regras práticas de bolso: um espaço de busca com d dimensões precisa de cerca de dez a vinte vezes d em trials para um bom ótimo. Portanto, para os defaults de 6 dimensões, 60–120; para o subconjunto Mip de 2 dimensões, 20–40; para a demo Bowl de 1 dimensão, 10–20.
Durante o run, o slider fica desativado.
W37Slider „Random Seed"
ONDE
Barra lateral esquerda, abaixo do slider de orçamento.
TÉCNICO
Slider de 1 a 100, incremento de 1. Padrão 42. A semente é repassada tanto para as amostras iniciais de hipercubo latino quanto para o componente de ruído do objetivo de demonstração. Reprodutibilidade: a mesma semente + mesmo espaço de busca + mesmo orçamento resulta em uma sequência de trials exatamente idêntica. Útil para „todos os seus colegas obtêm o mesmo run ao reproduzir a demo?". Desativado durante o run.
W38Gráfico (Convergence)
ONDE
Coluna central da janela.
TÉCNICO
Diagrama Swift Charts com duas camadas: 1. uma linha para „melhor valor até agora" por trial — uma curva monotônica crescente ou constante na cor de destaque. 2. um ponto por trial com o valor objetivo individual, colorido por fase. Tamanho do símbolo 40. Três rótulos de fase: „init" (azul), „bo" (verde), „restart" (laranja).
Uma pequena legenda mostra as cores de fase no canto superior esquerdo. Se a lista de trials estiver vazia (antes do primeiro início), é exibido em vez disso um estado vazio com ícone de gráfico e a indicação „Press Start to begin a BayesOpt run."
W39Tabela (Trial Log)
ONDE
Coluna direita da janela.
TÉCNICO
Área de rolagem com linhas de trial empilhadas de forma preguiçosa (lazy). Por linha, uma pilha horizontal: número do trial (3 dígitos, monoespaçado, à esquerda), valor (monoespaçado, alinhado à direita, 70 pt de largura), tag de fase (cápsula, preenchida com 25% de opacidade — cinza para „init", azul para „bo", laranja para „restart"; essas são intencionalmente cores diferentes das cores dos pontos no gráfico ao lado), opcionalmente uma estrela amarela se esse trial for o melhor atual. Um mecanismo de rolagem automática pula automaticamente para o final assim que um novo trial é adicionado — para que você possa acompanhar o histórico ao vivo na parte inferior da tela sem precisar rolar você mesmo.
Janela principal: histórico de perda e contagem de Gaussians (I39–I41, referência cruzada)
Três dos indicadores do Inspector na janela principal merecem uma explicação própria, porque ficam constantemente visíveis durante um treinamento em andamento e existem regras práticas importantes sobre quando o histórico parece saudável. Os indicadores ficam no Inspector na seção Progresso, no grupo expansível Histórico de Perda (veja o Capítulo 2 — Inspector), e complementam a análise de holdout da janela Aux acima.
Quando a curva de loss está saudável? Uma curva de loss saudável mostra três fases: (1) Warmup — nas primeiras 200–500 iterações, o loss cai abruptamente de um valor alto (tipicamente 0.15–0.25 para L1+SSIM combinados, dependendo da cena) para cerca da metade. Se o loss NÃO cair nessa fase, geralmente a entrada está errada (imagens corrompidas, poses do SfM ruins, número de Gaussians iniciais pequeno demais). (2) Densification — entre ~500 e densifyUntilIteration (classicamente 15K, no MCMC até 20K ou 25K), o loss continua caindo, muitas vezes com pequenos saltos para baixo quando operações de densify inserem novos Gaussians e o otimizador os aproveita. A contagem de Gaussians aumenta nessa fase. (3) Refinement — depois disso, o loss entra em uma cauda cada vez mais achatada. Valores finais típicos como referência: uma cena de objeto bem iluminada (como o Truck de Tanks-&-Temples com P4 Quality) fica em torno de L1 ≈ 0.023, enquanto cenas externas amplas como as do Mip-NeRF 360 naturalmente ficam acima disso (0.04–0.07).
O que significa um platô? Um platô (a curva de loss anda na horizontal por vários milhares de iterações) tem duas interpretações: (a) o modelo convergiu, treinar mais não traz benefício algum — este é o caso bom. (b) o modelo está travado (mínimo local, informação de gradiente ruim, um limite no buffer atingido) — o caso ruim. Ambos parecem idênticos no gráfico. Para diferenciar: observe a contagem de Gaussians. Se ela também estiver estagnada E próxima do limite do MCMC (por exemplo, 150K de 150K no preset P8 Quality (MCMC)), você atingiu o limite — ou aumenta o limite ou aceita o platô. Se a contagem de Gaussians ainda está crescendo, mas o loss não cai, isso é travamento.
Quando interromper ou continuar treinando? Regra prática: se não houver melhora no loss mínimo por 10K iterações → interrompa, iterações adicionais são desperdiçadas. Antes disso: pelo menu Training → Continue Training → „+5,000 iterations" você pode adicionar uma extensão, caso perceba uma melhora limítrofe (não existe atalho de teclado para isso). Atenção: no MCMC o platô costuma ser real — o limite é a fronteira natural.
Platô na contagem de Gaussians NÃO é sinal de "concluído". Isso significa apenas que o MCMC atingiu o limite ou que a Classic Densification se esgotou. A verdadeira questão de "concluído" só é respondida por PSNR/SSIM/LPIPS em um conjunto de teste independente — os números correspondentes estão nos relatórios de benchmark que você analisa no Pareto Dashboard (W13–W22). A janela de Holdout (W23–W29) não fornece essas métricas; ela apenas avalia se seu conjunto de câmeras permite, de fato, uma divisão justa entre ângulos de treinamento e de teste.
PSNR/Holdout é a verdade, o loss é apenas um proxy. O loss é uma métrica relativa: ele cai enquanto seu modelo se ajusta às views de treinamento. Mas um loss baixo não significa automaticamente um modelo bom — se o modelo decorou as imagens de treinamento (overfitting), o loss seria pequeno, mas o PSNR em views não vistas (holdout) seria ruim. Por isso: para a avaliação final de qualidade, sempre observe as métricas de holdout, não apenas o loss final.
Regra de Ouro
- User Guide e Keyboard Shortcuts são ajuda estática — rápidos para dúvidas pontuais, mas para se aprofundar use este manual aqui. - Abra o Manage Storage assim que o disco cair abaixo de 10% de espaço livre. Logs e o staging de Imports costumam ser os grandes vilões. - O Pareto Dashboard só faz sentido depois de pelo menos três ou quatro relatórios de treinamento. Eixo X = custo (Time / Gs), eixo Y = qualidade (PSNR / SSIM). A Pareto-Front mostra as combinações eficientes. - Use o Holdout Analysis antes de publicar comparações de PSNR com outras pessoas — isso garante que seu conjunto de teste é realmente representativo. A divisão de folds exportada é para ferramentas externas; o RadianceKit continua treinando contra o "every-8th". - O BayesOpt Console é, antes de tudo, uma ferramenta de aprendizado e inspeção para definições de espaço de busca — ele calcula contra uma função de demonstração, não contra execuções de treinamento reais. - Plateau de loss e plateau de contagem de Gaussianas devem ser interpretados separadamente. O limite de cap não é um sinal de "pronto". A qualidade real só é medida pelo PSNR do holdout. - 10 mil iterações sem melhora no min-loss → pare o treinamento.