Let the fill show the model an open void: mirror depth 0 means no ring and nothing known beyond the band
This commit is contained in:
@@ -486,3 +486,40 @@ rectangle.
|
||||
`models/LICENCE.md`), installed by the PKGBUILD and unpacked by the APK
|
||||
beside the face and scene models; `tools/export-migan.sh` regenerates it
|
||||
from the upstream checkpoint.
|
||||
|
||||
## 14. The fill, trained — 2026-09-20
|
||||
|
||||
§13.5 named the remaining fault: in a deep corner the stock model puts its
|
||||
Places2 prior — clouds, peaks, a water line — into a hole, because it was
|
||||
trained on holes *inside* pictures and a panorama's border is a hole with
|
||||
the picture on one side and nothing on the other. Every ring (mirror,
|
||||
replicate, detrend) treated the symptom. The fix is a model that has seen
|
||||
the real thing: **MI-GAN's 512 generator fine-tuned on border-shaped voids
|
||||
cut from the user's own photographs**, in a separate repository
|
||||
(`darkroom-infill`, beside this one), so the truth beyond the void is known
|
||||
and the model learns one-sided extrapolation.
|
||||
|
||||
**What it was trained on.** Voids made the way this merge makes them:
|
||||
frames with a yaw, a common pitch and per-frame roll, projected onto the
|
||||
cylinder and rasterised, the canvas their union's bounding box, the void
|
||||
the canvas outside the union — arcs where straight edges bent, cusps where
|
||||
frames meet, the bow-tie wedge at a corner (a third of tiles are cut at a
|
||||
canvas corner). Voids to 256 px deep at a 512 tile. Half the deep tiles
|
||||
train the *second pass*: a no-grad first pass fills the tile, its nearest
|
||||
band (64–256 px) is marked known, and the remaining void is the example —
|
||||
so the model continues its own output without drift, which is how `fill`
|
||||
runs deep voids. Data: ~7 400 pictures — the 1024-px proxy tier of the
|
||||
library and ~2 000 raws sampled evenly across every year, developed at
|
||||
half size. Loss: hole-weighted L1, VGG16 perceptual, a hinge PatchGAN.
|
||||
One night on the reference desktop's RTX 3050.
|
||||
|
||||
**What changed here.** `FillParams::mirror_depth` **0** is now "no ring":
|
||||
the void reaches the tile's edge with nothing beyond, and beyond the band
|
||||
being filled the void stays *unknown* rather than presented as known coarse
|
||||
fill — the two conditions the model was trained under. Defaults: mirror 0,
|
||||
coarse 1 (the coarse pass seeds nothing the model is allowed to see), band
|
||||
192. The ring remains on the page for the stock model's sake, at any depth
|
||||
above zero. The model file is a drop-in (`models/inpaint/migan-512.onnx`,
|
||||
same six operators, same tensors) and the engine loads it unchanged.
|
||||
|
||||
**Measured.** PLACEHOLDER
|
||||
|
||||
@@ -107,7 +107,7 @@ A tag naming an ID `requirements.md` does not define — what renumbering produc
|
||||
| FR-MRG-3 | [`core/dr-decode/examples/linear_dng.rs:1`](../core/dr-decode/examples/linear_dng.rs#L1), [`core/dr-decode/src/lib.rs:137`](../core/dr-decode/src/lib.rs#L137), [`core/dr-decode/src/lib.rs:144`](../core/dr-decode/src/lib.rs#L144), [`core/dr-decode/src/lib.rs:598`](../core/dr-decode/src/lib.rs#L598), [`core/dr-decode/src/profile.rs:395`](../core/dr-decode/src/profile.rs#L395), [`core/dr-export/src/dng.rs:1`](../core/dr-export/src/dng.rs#L1), [`core/dr-gpu/src/demosaic.rs:254`](../core/dr-gpu/src/demosaic.rs#L254), [`ui/dr-ui/src/merge.rs:1`](../ui/dr-ui/src/merge.rs#L1) |
|
||||
| FR-MRG-4 | [`core/dr-export/src/inscribed.rs:1`](../core/dr-export/src/inscribed.rs#L1), [`core/dr-pano/src/fill.rs:1`](../core/dr-pano/src/fill.rs#L1), [`core/dr-pano/src/migan.rs:1`](../core/dr-pano/src/migan.rs#L1), [`core/dr-pano/src/projection.rs:1`](../core/dr-pano/src/projection.rs#L1), [`ui/dr-ui/src/library.rs:4457`](../ui/dr-ui/src/library.rs#L4457), [`ui/dr-ui/src/library.rs:4461`](../ui/dr-ui/src/library.rs#L4461), [`ui/dr-ui/src/merge.rs:143`](../ui/dr-ui/src/merge.rs#L143), [`ui/dr-ui/src/merge_ui.rs:1`](../ui/dr-ui/src/merge_ui.rs#L1), [`ui/dr-ui/ui/merge.slint:1`](../ui/dr-ui/ui/merge.slint#L1), [`ui/dr-ui/ui/merge.slint:46`](../ui/dr-ui/ui/merge.slint#L46) |
|
||||
| FR-MRG-5 | [`core/dr-pano/src/align.rs:1`](../core/dr-pano/src/align.rs#L1), [`ui/dr-ui/src/merge.rs:1`](../ui/dr-ui/src/merge.rs#L1), [`ui/dr-ui/src/merge_ui.rs:1`](../ui/dr-ui/src/merge_ui.rs#L1), [`ui/dr-ui/ui/merge.slint:1`](../ui/dr-ui/ui/merge.slint#L1) |
|
||||
| FR-MRG-6 | [`core/dr-pipeline/src/sidecar.rs:1033`](../core/dr-pipeline/src/sidecar.rs#L1033), [`core/dr-pipeline/src/sidecar.rs:113`](../core/dr-pipeline/src/sidecar.rs#L113), [`core/dr-pipeline/src/sidecar.rs:123`](../core/dr-pipeline/src/sidecar.rs#L123), [`core/dr-pipeline/src/sidecar.rs:2241`](../core/dr-pipeline/src/sidecar.rs#L2241), [`core/dr-pipeline/src/sidecar.rs:841`](../core/dr-pipeline/src/sidecar.rs#L841), [`ui/dr-ui/src/merge.rs:838`](../ui/dr-ui/src/merge.rs#L838) |
|
||||
| FR-MRG-6 | [`core/dr-pipeline/src/sidecar.rs:1033`](../core/dr-pipeline/src/sidecar.rs#L1033), [`core/dr-pipeline/src/sidecar.rs:113`](../core/dr-pipeline/src/sidecar.rs#L113), [`core/dr-pipeline/src/sidecar.rs:123`](../core/dr-pipeline/src/sidecar.rs#L123), [`core/dr-pipeline/src/sidecar.rs:2241`](../core/dr-pipeline/src/sidecar.rs#L2241), [`core/dr-pipeline/src/sidecar.rs:841`](../core/dr-pipeline/src/sidecar.rs#L841), [`ui/dr-ui/src/merge.rs:842`](../ui/dr-ui/src/merge.rs#L842) |
|
||||
| FR-MRG-7 | [`ui/dr-ui/src/merge.rs:1`](../ui/dr-ui/src/merge.rs#L1), [`ui/dr-ui/src/merge_ui.rs:1`](../ui/dr-ui/src/merge_ui.rs#L1), [`ui/dr-ui/ui/app.slint:829`](../ui/dr-ui/ui/app.slint#L829), [`ui/dr-ui/ui/merge.slint:1`](../ui/dr-ui/ui/merge.slint#L1) |
|
||||
| FR-MRG-8 | [`core/dr-pano/src/xfeat.rs:1`](../core/dr-pano/src/xfeat.rs#L1), [`core/dr-segment/examples/onnx_probe.rs:1`](../core/dr-segment/examples/onnx_probe.rs#L1) |
|
||||
| FR-NC-1 | [`core/dr-sync-nextcloud/src/auth.rs:132`](../core/dr-sync-nextcloud/src/auth.rs#L132), [`core/dr-sync-nextcloud/src/auth.rs:44`](../core/dr-sync-nextcloud/src/auth.rs#L44), [`core/dr-sync-nextcloud/src/provider.rs:1`](../core/dr-sync-nextcloud/src/provider.rs#L1), [`core/dr-sync/src/account.rs:375`](../core/dr-sync/src/account.rs#L375), [`ui/dr-ui/src/launch.rs:316`](../ui/dr-ui/src/launch.rs#L316), [`ui/dr-ui/src/launch.rs:61`](../ui/dr-ui/src/launch.rs#L61), [`ui/dr-ui/src/launch_ui.rs:418`](../ui/dr-ui/src/launch_ui.rs#L418) |
|
||||
|
||||
Reference in New Issue
Block a user