Gemeldet wurde "meldet OK, aber man erkennt nichts getauscht". Ursache
sind zwei Fehler, die sich verstärken:
1) apply_soft_face_blend() mischte das Originalbild ueber den Swap-Patch.
Die Gesichtsmaske deckte nur ~30 % der BBox ab, 74 % der von
inswapper veraenderten Pixel lagen ausserhalb und wurden zurueckgegeben
- genau Wangen, Schlaefen und Kiefer, also die identitaetsrelevanten
Partien. Der Blend erzeugte zudem die Naht, die er beseitigen soll
(Naht/Innen 1.38 mit gegen 1.18 ohne).
2) build_face_mask() war mit Faktor 0.80 zu schmal.
Gemessen ueber den vollen Batch-Pfad (tests/probe_batch_identity.py),
InsightFace-Embeddings als Identitaetsmetrik, vor/nach dem Fix am
gleichen Testmaterial:
vorher +0.34 bis +0.53 Identitaetsgewinn zur Quellperson
nachher +0.81 bis +0.97
Aenderungen:
- soft_blend standardmaessig aus (core/face_engine.py, core/config.py,
face_swap.py, config.json) - auch die persistierte Config, sonst
wuerde der alte true-Wert weiter den Default ueberschreiben
- Maskenfaktor 0.80 -> 1.25, damit die Filter Wangen und Kiefer
einschliessen
R16 war an den alten, blend-aktiven Zustand kalibriert: der Wert 2,1 %
war ein Messartefakt, weil der Blend alles zurueckschrieb - auch die
Stellen, die die Filter im Hintergrund veraendert hatten. R16 misst
jetzt den Filterbeitrag zum rohen Swap statt die Differenz zum Original
und prueft die eigentliche Aussage (Filter bleiben auf der Gesichtsform).
17/17 Regressionstests bestanden.