Willkommen bei der Projektdokumentation für Objektsegmentierung und Positionsverschiebung. Dieses Repository enthält den Code zum Segmentieren eines Objekts in einem bestimmten Bild basierend auf einer Textaufforderung und zum anschließenden Verschieben des Objekts an eine neue Position innerhalb derselben Szene. Es nutzt modernste generative KI-Modelle, um diese Aufgabe auf benutzerfreundliche Weise zu erledigen.
Dieses Projekt umfasst zwei Hauptaufgaben, die auf die Nachbearbeitung von Produktbildern, insbesondere für E-Commerce-Zwecke, abzielen.
Aufgabe 1: Segmentiert ein Objekt im Bild anhand einer Textaufforderung (z. B. „Regal“) und hebt es mit einer roten Maske hervor.
Aufgabe 2: Bewegt das Objekt innerhalb der Szene durch Verschieben in x- und y-Richtung, wie vom Benutzer angegeben.
Beispielsweise könnten Sie ein Bild haben, das ein „Regal“ enthält. Sie können die Segmentierung ausführen, um alle Regale im Bild hervorzuheben. Anschließend können Sie das identifizierte Regal mithilfe von Pixeloffsets innerhalb der Szene verschieben.
Textbasierte Objektsegmentierung: Identifiziert Objekte mithilfe von Klassenaufforderungen wie „Regal“ und hebt sie hervor.
Positionsverschiebung: Verschiebt das Objekt um Pixelwerte in x- (horizontal) und y-richtung (vertikal).
Vorgefertigte Modelle: Nutzt vorhandene Modelle wie SAM (Segment Anything Model) und Stable Diffusion Inpainting für die Objektmanipulation, ohne dass eine Umschulung erforderlich ist.
Um das Projekt lokal einzurichten, gehen Sie folgendermaßen vor:
Klonen Sie das Repository:
git clone https://github.com/your-repo/object-segmentation-shift.git
cd object-segmentation-shift
Erstellen und aktivieren Sie eine virtuelle Umgebung:
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Abhängigkeiten installieren:
pip install -r requirements.txt
So segmentieren Sie ein Objekt in einem Bild basierend auf einer Klassenaufforderung:
python run.py --image ./example.jpg --class shelf --output ./generated.png
Dieser Befehl nimmt example.jpg
, segmentiert alle Instanzen des in der Klassenaufforderung angegebenen Objekts (z. B. „shelf“) und gibt ein Bild mit roten Masken auf diesen Objekten aus.
So verschieben Sie das segmentierte Objekt im Bild:
python run.py --image ./example.jpg --class shelf --x 80 --y 0
Dadurch wird das identifizierte Regal um 80 Pixel nach rechts und um 0 Pixel in vertikaler Richtung verschoben.
Hier sind die Ergebnisse der Anwendung des Algorithmus auf Beispielbilder:
Eingabebild | Segmentierung (Aufgabe 1) | Verschobenes Objekt (Aufgabe 2) |
---|---|---|
Daten | res1 | res2 |
Aufgabe 1: Das Objekt wird rot hervorgehoben.
Vor der Segmentierung
Nach der Segmentierung
Aufgabe 2: Das Objekt wird gemäß den benutzerdefinierten x- und y-Werten verschoben.
Komplexe Objektgrenzen: In Fällen, in denen Objekte komplizierte Grenzen haben oder teilweise verdeckt sind, ist die Segmentierung möglicherweise nicht perfekt.
Verschieben von Artefakten: Beim Verschieben von Objekten mit komplexem Hintergrund stellt es eine Herausforderung dar, sicherzustellen, dass sich der Hintergrund auf natürliche Weise regeneriert.
Feinabstimmungsmodelle: Experimentieren mit Feinabstimmungstechniken zur Verbesserung der Segmentierungsgenauigkeit.
Nahtloses Hintergrund-Inpainting: Verwendung fortschrittlicher Inpainting-Techniken zur Hintergrundrekonstruktion nach Objektbewegungen.
Wenn Sie zu diesem Projekt beitragen möchten, befolgen Sie bitte diese Schritte:
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Einzelheiten finden Sie in der LICENSE-Datei.