Spatial splat [WIP]

Goal: generate splats which perfectly preserve relative position/scale of objects.

See before/after examples


Idea

As cool as it is to generate a gaussian splat from an image, you sacrifice the reliable nature of regular gaussian splatting. 3/10 times my generation scenes would get rotated wrong, get the floor height ever so slightly off, or add curvature to my straight edges. I tried 4 different ways to try and get the model to generalize the corrections. Some worked better then others.

The 4 ideas Links:

Prelim

Triposplat is weird to train on top of, as there were 2 phases in it's training. All I care about is phase 2. Phase 1 is developing the internal representation of 3d models in latent form. Phase 2 however is more of a "world model", hallucinating up with this 3d representation from a single image.
I don't have the resources to retrain phase 1 and teach a new language, but IF the latent contains the nessecary parameters to rotate/scale/position the world, using a LoRA should be enough.

LoRA (heavy)

Curating training data for this LoRA was a 4 step process,
Build a scene of geometric primitives
Then get a real-life scene interpretation of our primitives with an image model
Now by simply feeding this interpretation into triposplat, we can check the baseline accuracy compared to the original primitives (red lines are primitives):
We optimize for correct depth from 6 key angles, comparing the splat with the original primitives.

The result is a spatially-accurate splat (80% accuracy -> 96% accuracy):
Even after only ~50 examples the LoRA quickly discovered a way to correct bad rotations, check out this tree scene. Left is original, right is my LoRA. This splat was not part of training, it has never seen it before.
TriposplatSpatialsplat LoRA
Though this is evidence that my training method does generalize to any splat, the issue is that splat quality goes down the more corrections are done. Ideally, we could reinforce consistent visuals while still correcting the geometry.

LoRA (light)

CUt out GPT image step, reinforce that the splat stay rgb-consistent with the original primitive scene from all 6 angles as part of loss calculation.

Controlnet

Train a controlnet which takes in the primitive scene to apply slight adjustments each step.

SLoRA

Attempt to find rotation/scale/positioning parameters within the latent


Examples

BeforeAfter