Kann KI Risse und Kratzer reparieren? Zahlen zur Machbarkeit
Ja, und dieser Beitrag hält die Messungen fest, die sie von der Roadmap-Hoffnung zum ausgelieferten Feature gebracht haben: was die Pipeline früher mit beschädigten Scans machte, die Proof-of-Concept-Zahlen, die den Bau der Stufe rechtfertigten, und die End-to-End-Ergebnisse der Version, die jetzt hinter dem Kontrollkästchen „Kratzer & Risse reparieren“ ausgeliefert wird.
Was die Pipeline vorher mit einem eingerissenen Foto machte
Die Restaurierung hatte keine Inpainting-Stufe: nichts, das einen Bereich entfernen und einen Ersatz synthetisieren konnte. Verifiziert an einem stark rissigen Porträt: Innerhalb der Gesichtsbereiche verschwanden Schäden beiläufig (das Gesichtsmodell synthetisiert den ganzen Ausschnitt neu) und tauchten dann an der Überblendungsgrenze abrupt wieder auf, ein Riss, der an der Wange aufhört, was schlimmer aussehen kann als keine Reparatur. Überall sonst wurden Schäden verstärkt: Der Schärfungsdurchgang schärfte Risskanten, als wären sie Details, und der Kolorierer färbte weiße Risslinien als Bildinhalt ein.
Proof of Concept
Testobjekt: ein 510×817 großes Schwarzweißporträt mit einem Netz aus Emulsionsrissen. Hardware: eine bewusst schwache reine CPU-Sandbox, sodass jede Zeitmessung ein Worst Case ist. Zwei Stufen: Ein Kratzererkennungsnetz (aus Microsofts Open-Source-Projekt „Bringing Old Photos Back to Life“[2]) erzeugt eine Schadensmaske; das LaMa-Inpainting-Modell[1] füllt dann nur die maskierten Bereiche in 512-px-Kacheln, beide auf dem CPU-Provider von ONNX Runtime[3].
Die Schadensmaske deckte auf diesem stark beschädigten Foto 18,4 % der Pixel ab. Qualitätsergebnis: Das Rissnetz wurde über Gesicht, Kleidung und Hintergrund hinweg entfernt, ohne schädliche Fehltreffer: Die Spitzentischdecke, die klassische Falle für Kratzerdetektoren, überlebte.
Was ausgeliefert wurde, End-to-End gemessen
Die Produktionsstufe läuft in der Restaurierungsreihenfolge als erste, sodass Risse nie koloriert oder geschärft werden, bevor sie entfernt sind. Die Erkennung läuft bei einer kurzen Kante von 256 mit 2 px Maskendilatation; das Inpainting arbeitet patchweise in nativer Auflösung, begrenzt auf 12 Patches pro Foto, wobei die größten Schadensbereiche gewinnen. Zwei Invarianten werden erzwungen statt erhofft: Nur maskierte Pixel werden jemals geschrieben (jedes unbeschädigte Pixel in der Ausgabe ist byteidentisch mit dem Input), und eine Abdeckungsschwelle überspringt die Stufe komplett, wenn die erkannte Fläche unter 0,5 % liegt (nichts, das sich zu reparieren lohnt) oder über 35 % (eher fehlerkannte Textur als Schaden).
Eine spätere Produktionsrevision fügte der Automatik-Schwelle einen zweiten, schärferen Diskriminator hinzu: Form. Die Abdeckung allein kann einen haarfeinen Riss nicht von Detektorrauschen unterscheiden, aber ihre Geometrie unterscheidet sich um eine Größenordnung: Ein Riss ist lang und dünn, Rauschen sind Kleckse. Für jede zusammenhängende Komponente der Maske mit Bounding-Box bw×bh und Pixelfläche A berechnen wir
Kalibrierungspunkte aus der Testreihe: Eine saubere Marketinggrafik erreicht eine maximale Elongation von 2,4; der Rissnetz-Scan erreicht 29,8. Die Schwelle von 6 liegt deutlich abseits von beiden, und jeder Produktionslauf protokolliert seine Abdeckung und Elongation, sodass die Schwelle weiter an echtem Traffic statt an zwei Fotos abgestimmt wird.
Zwei Kontrollen: Ohne Häkchen lief die Stufe nie, und die Zeiten entsprachen exakt der vorherigen Pipeline. Auf einem nahezu sauberen Foto markierte der Detektor nur die tatsächlich beschädigten 0,81 % der Pixel (übrig gebliebene Eckrisse und Staub), ohne Fehltreffer auf Gesichtern, Spitze oder Textur.
Warum Opt-in statt Standard
Der bekannte Fehlermodus automatischer Schadensreparatur sind Fehltreffer: Ein Detektor, der Zaundrähte, Haarsträhnen oder Spitze als Kratzer markiert, löscht echten Inhalt, und ein Inpainter ist sehr gut darin, Dinge zu löschen. Zwei Kontrollfotos sind Belege, kein Benchmark. Die Stufe wird deshalb als explizites Kontrollkästchen ausgeliefert, und jeder Lauf protokolliert seinen Schadensabdeckungswert, damit die Schwellen an echtem Traffic abgestimmt werden können, bevor sie zum Standard befördert wird. Wir haben auch die Abkürzung verworfen, Fotos an eine externe generative Bild-API zu schicken: Dieses Tool verarbeitet Fotos flüchtig auf unserer eigenen Infrastruktur, und ein vollständiges generatives Neu-Rendern lässt die Identität driften; das Ziel ist, den Schaden zu reparieren, nicht deinen Verwandten neu zu malen.
Quellen
- Suvorov, R., Logacheva, E., Mashikhin, A., et al. (2022). Resolution-robust Large Mask Inpainting with Fourier Convolutions (LaMa). WACV. arXiv:2109.07161. arxiv.org
- Wan, Z., Zhang, B., Chen, D., et al. (2020). Bringing Old Photos Back to Life (the scratch-detection recipe). CVPR. arXiv:2004.09484. arxiv.org
- ONNX Runtime: the inference engine both our server (CPU) and in-browser (WebGPU/WASM) engines run on. onnxruntime.ai