Studienliste

Studie 03 · Computer Vision · Virtuelles Tragen

Virtuelle Anprobe-App für Porträts

2021 · Forschungsstudent im Grundstudium
Öffentlicher Code

Ich habe den Ablauf zwischen Android-App und Server umgesetzt: Nach Auswahl eines Personenfotos und Kleidungsstücks liefert der Server das virtuelle Anprobebild zurück.

  1. 1Auswahl von Porträtfoto und Kleidung

    Senden Sie Personenfotos und Kleidungsausweise über Ihre Android-App

  2. 2Körperanalyse, Pose, Kleidungsmaske

    Organisiert im ACGPN-Eingabeformat

  3. 3Tragebild generieren

    Der Flask-Server kehrt zur App zurück

Integrierte Implementierung, die ACGPN, Parsing des menschlichen Körpers und öffentliche Modelle zur Posenschätzung kombiniert

PyTorchVirtual try-onHuman parsingFlaskAndroid

Direkt zugewiesene Rolle und Ergebnis

Zugewiesene Rolle
Öffentliche Konfiguration der Eingabevorverarbeitung und der für virtuelle Tragemodelle erforderlichen Kleidungsmasken sowie Verbindung der Flask Upload API mit dem Kotlin · Retrofit Android-Client.
Ergebnisse
Ich habe einen integrierten Workflow entwickelt, der ein Porträtfoto und ausgewählte Kleidung empfängt, Vorverarbeitung durchführt, ein Bild des Outfits generiert und das Ergebnis an die App zurückgibt. Das Generierungsmodell sowie die Modelle zur Posen- und Körperanalyse wurden wiederverwendet. Die von mir implementierten Komponenten umfassen die Eingabekonfiguration, die Maskenverarbeitung und die Verbindung zwischen Server und App.

Was ich intern implementiert und analysiert habe

  • Körperanalyse, Pose, Kleidungsmaske im ACGPN-Eingabeformat
  • Generieren Sie eine Kleidungsmaske mit OpenCV GrabCut
  • Flaschen-Upload, Ergebnisrückgabe-API
  • Kotlin, Android-Client-Verbindung nachrüsten

Basierend auf Forschungs-/öffentlichem Modell

  • ACGPN-Modell für virtuelle Anprobe
  • Körperanalyse, Posenschätzung, öffentliches Modell

Experimentergebnisse und Fehlversuche

Verifiziert vom Upload bis zur Rückgabe des Trageergebnisses und analysierte Maskenfehler

Ausführung des öffentlichen Codes · VITON-HD-Testbilder (CC BY-NC 4.0) · Gesichter mosaikiert · Die Zeiten unten sind CPU-Messwerte

Beim Abrufen der Anprobebilder über die Server-Upload-API ragte bei 13 von 40 Kleidungsstücken das GrabCut-Rechteck über das Bild hinaus, sodass die Maske in den Hintergrund auslief.

  • Apple M1 Pro CPU
  • PyTorch
  • Öffentliche Modellgewichte
  • Ausführung der Server-Upload-API
Drei Beispiele vor und nach dem Tragen. Wenn Sie das Originalfoto und die zu tragende Kleidung hochladen, wird das Tragebild angezeigt, wobei nur das Oberteil verändert wurde. Das Gesicht wurde verpixelt.
Drei Anprobebeispiele, erstellt mit dem öffentlichen Modell und dem Servercode. In jeder Zeile zeigt links das Foto der Person, in der Mitte das anzuziehende Kleidungsstück und rechts das vom Server zurückgegebene Bild. Gesichter sind mosaikiert; die Bilder stammen aus dem VITON-HD-Testsatz.
  • 13 / 40 SätzeKleidung mit Maske, die in den Hintergrund hineinragt
  • 0.93 → 0.96Masken-IoU nach Rechteckkorrektur
  • 4,9 SekundenMedian der CPU-Auslastung pro Anfrage

Problem und Lösung

  1. ProblemVirtuelle Anprobemodelle benötigen neben Porträtfotos auch Posen, Körperteile und Kleidungsbereiche in einem definierten Format.

    Gelöst.Ich habe die Ausgabe des öffentlichen Modells zur Körperanalyse und Posenschätzung an das ACGPN-Eingabeformat angepasst und einen Vorverarbeitungsschritt zur Erstellung einer Kleidungsmaske mit GrabCut hinzugefügt.

  2. ProblemDer Prozess ist zu komplex, als dass der Benutzer die Dateiein- und -ausgabe für mehrere Modelle direkt handhaben könnte.

    Gelöst.Wir haben die Flask-Upload-API so konfiguriert, dass sie Vorverarbeitung und Inferenz ausführt und das resultierende Bild zurückgibt, und haben den Android-Client mit Retrofit verbunden.

  3. ProblemWenn der Hintergrund mit der Kleidungsmaske vermischt wird, können die generierte Kleidung und der Oberkörper verschwimmen.

    Ergänzendes ExperimentBeim Ausführen des öffentlichen Codes fand ich heraus, dass das anfängliche GrabCut-Rechteck über den Bildrand hinausragte; in einem Vergleich mit einem auf das Bild begrenzten Rechteck stieg der Median der Masken-IoU von 0,929 auf 0,957.

Vergleich der Experimente und detaillierte Ergebnisse

Pose-Skelette überlagert mit Fotos von vier Personen (oben) und Körpersegmentierung nach Körperteilen farblich dargestellt (unten). Gesichter sind mosaikartig angeordnet.
Ergebnisse der Pose-Schätzung (oben) und der Körperanalyse (unten) des verbundenen öffentlichen Modells. Die benutzerdefinierte Vorverarbeitung konfiguriert diese Ausgabe als Eingabe für das virtuelle Wear-Modell.
Werte gemessen mit VITON-HD-Testbild · 192×256 Auflösung
ElementErgebnisZustand
Bearbeitungszeit pro AnfrageMedian 4,90 Sek. (Quartil 3,57–6,57 Sek.)40 Anfragen, CPU
Unter anderem: Erstellung von ACGPNMedian 2,27 Sek.(40-mal identisch)
Stellen Sie den SSIM-Wert für dasselbe Kleidungsstück wieder her.Durchschnitt 0,869 · Median 0,88420 Personen
IoU der GrabCut-MaskeMedian 0,929 → 0,95740 Outfits · Code unverändert → Rechteck in Bild umwandeln

Beobachtete Ursachen und verbleibende Aufgaben

  1. GrabCut-Rechteckfehler

    Das Rechteck (1, 1, w, h) ragte über den Bildrand hinaus, sodass oben und links nur noch eine Linie als Hintergrundinformationen sichtbar war. In 13 von 40 Fällen verschwamm die Maske im Hintergrund.

  2. Drei Fehlertypen

    Wenn die Maske in den Hintergrund hineinragt, wird der Oberkörper unscharf. Ändert sich die Ärmellänge, entstehen Nachbilder an den Armen; ist die Länge unterschiedlich, bleibt das ursprüngliche Schnittmuster unterhalb des Saums sichtbar.

  3. So lesen Sie SSIM

    Dieser Wert wurde ermittelt, indem dasselbe Kleidungsstück erneut angezogen und mit dem Original verglichen wurde. Da die Eingabe für die Außenseite des Kleidungsstücks unverändert verwendet wird, ist der Wert hoch angesetzt und kann nicht mit dem Wert aus der ACGPN-Studie verglichen werden.

  4. Daten und Gewichtungen

    Die Verbreitung von VITON-Daten ist eingeschränkt, daher wurden VITON-HD-Testbilder verwendet und ACGPN- und OpenPose-Gewichte sind für nichtkommerzielle Forschungszwecke freigegeben.

Kriterien für das Lesen der Ergebnisse

  • Integrierte Implementierung, keine Verbesserung der Bildqualität oder Geschwindigkeit
  • Öffentliche Werte, die durch Ausführen von Dutzenden von Testbildern mit Gewichtungen ermittelt wurden
  • Produktleistung oder Betriebsstatus werden nicht angezeigt.
Verbindungen zu aktuellen Projekten

Die Aufgabe, die Ein- und Ausgänge verschiedener Module abzugleichen und zu einem Modul zu verbinden, ähnelt der aktuellen Aufgabe, den auf dem Server erstellten Bearbeitungsplan in Fusion auszuführen.

KI, die 3D-Modelle liest und Bearbeitungsstrategien entwirft