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
|
||||
|
||||
Reference in New Issue
Block a user