Allgemeine Einführung
UNO ist ein Open-Source-Framework zur Bilderzeugung, das vom ByteDance Intelligent Creation Team entwickelt wurde. Es basiert auf FLUX.1-Modell, das sich auf die individuelle Bilderzeugung für ein oder mehrere Subjekte durch einen "Weniger-zu-Mehr"-Verallgemeinerungsansatz konzentriert, löst UNO die Herausforderungen der Datenerweiterung und Subjektkonsistenz in Szenarien mit mehreren Subjekten, indem es die Kontexterzeugungsfähigkeit des Diffusionstransformers (DiT) in Verbindung mit einem hochkonsistenten Datensyntheseprozess nutzt. Es unterstützt die Benutzer bei der Generierung qualitativ hochwertiger Bilder aus Textbeschreibungen und Referenzbildern, was für die personalisierte Bilderstellung, das Design virtueller Charaktere und andere Szenarien weithin anwendbar ist. Der Projektcode ist unter Apache 2.0 lizenziert und die Modellgewichte sind unter CC BY-NC 4.0 lizenziert, geeignet für akademische Forschung und nicht-kommerzielle Nutzung.
Funktionsliste
- Erzeugung eines Bildes für ein einzelnes Objekt: Auf der Grundlage eines einzigen Referenzbildes wird ein Bild erzeugt, das mit der Beschreibung übereinstimmt, wobei die Objektmerkmale erhalten bleiben.
- Generierung von Bildern mit mehreren Objekten: Es werden mehrere spezifische Objekte in derselben Szene generiert, wobei die jeweiligen Merkmale nicht überladen werden.
- Kontexterzeugung: Ausnutzung der Kontextlernfähigkeit des Diffusionstransformators zur Erzeugung hochkonsistenter Bilder.
- Optimierung für geringen Speicherbedarf: Unterstützt den fp8-Modus mit einem maximalen Speicherbedarf von ~16 GB für Consumer-GPUs.
- Modell-Feinabstimmung: bietet Pre-Training und mehrstufige Trainingsstrategien zur Unterstützung der iterativen Optimierung von Text- und Bildmodellen.
- Open-Source-Unterstützung: Trainingscode, Inferenzcode und Modellgewichte werden bereitgestellt, um Forschern die Erweiterung der Anwendung zu erleichtern.
Hilfe verwenden
Einbauverfahren
Um UNO zu verwenden, müssen Sie die Abhängigkeiten in Ihrer lokalen Umgebung installieren und konfigurieren. Im Folgenden finden Sie detaillierte Installationsschritte für Python 3.10 bis 3.12 Umgebungen.
- Erstellen einer virtuellen Umgebung
Erstellen Sie zunächst eine separate virtuelle Python-Umgebung, um Konflikte mit Abhängigkeiten zu vermeiden. Sie können den folgenden Befehl verwenden:python -m venv uno_env source uno_env/bin/activate # Linux/MacOS uno_env\Scripts\activate # Windows
Oder verwenden Sie Conda, um eine Umgebung zu erstellen:
conda create -n uno_env python=3.10 -y conda activate uno_env
- Installation von PyTorch
Wenn Sie einen AMD-Grafikprozessor, eine NVIDIA RTX 50-Serie oder macOS MPS verwenden, müssen Sie die entsprechende Version von PyTorch manuell installieren. Besuchen Sie die PyTorch-Website (https://pytorch.org/) Wählen Sie die richtige Version aus. Zum Beispiel:pip install torch torchvision torchaudio
- Installieren von UNO-Abhängigkeiten
Klonen Sie das UNO-Repository und installieren Sie die Abhängigkeiten:git clone https://github.com/bytedance/UNO.git cd UNO pip install -e . # 仅用于推理 pip install -e .[train] # 用于推理和训练
Hinweis: Stellen Sie sicher, dass
requirements.txt
Abhängigkeiten korrekt installiert sind. Wenn Sie auf Probleme stoßen, prüfen Sie, ob Systembibliotheken fehlen (z. B. dieffmpeg
) und durchconda install -c conda-forge ffmpeg
Einbau. - Download der Modellprüfpunkte
UNO basiert auf dem FLUX.1-dev Modell und den dazugehörigen Checkpoints. Es kann auf die folgenden Arten heruntergeladen werden:- automatischer DownloadWenn Inferenzskripte ausgeführt werden, werden Checkpoints automatisch durch den
hf_hub_download
Herunterladen in den Standardpfad (~/.cache/huggingface
). - Handbuch-Download: Verwenden Sie das Hugging Face CLI, um Modelle herunterzuladen:
huggingface-cli download black-forest-labs/FLUX.1-dev huggingface-cli download xlabs-ai/xflux_text_encoders huggingface-cli download openai/clip-vit-large-patch14 huggingface-cli download bytedance-research/UNO
Legen Sie das Modell nach dem Herunterladen in dem angegebenen Verzeichnis ab (z. B.
models/unet
im Gesang antwortenmodels/loras
). - automatischer DownloadWenn Inferenzskripte ausgeführt werden, werden Checkpoints automatisch durch den
- Überprüfen der Installation
Führen Sie nach Abschluss der Installation den folgenden Befehl aus, um zu überprüfen, ob die Umgebung korrekt konfiguriert ist:python -c "import torch; print(torch.cuda.is_available())"
Wenn die Rückgabe
True
Im Folgenden finden Sie ein Beispiel für eine erfolgreiche Konfiguration der GPU-Umgebung.
Verwendung
UNO bietet eine Gradio-Schnittstelle (app.py
) für die interaktive Bilderzeugung, oder Sie können Inferenzskripte über die Befehlszeile ausführen (inference.py
). Im Folgenden werden die wichtigsten Arbeitsabläufe beschrieben.
Bilderzeugung über die Gradio-Schnittstelle
- Starten der Gradio-Anwendung
Stellen Sie sicher, dass Gradio installiert ist (enthalten in derrequirements.txt
(in). Führen Sie den folgenden Befehl aus, um die Schnittstelle zu starten:python app.py
Beim Start öffnet der Browser eine lokale Seite (normalerweise die
http://127.0.0.1:7860
). - Eingabeparameter
In der Gradio-Schnittstelle:- Geben Sie eine Textaufforderung (
prompt
), beschreiben Sie die Bildszene, die Sie erzeugen möchten, z. B. "eine Katze und ein Hund spielen in einem Park". - Laden Sie 1-4 Referenzbilder hoch (
image_ref1
bisimage_ref4
), definieren diese Bilder das Aussehen des Motivs. - Setzen Sie den Startwert (
seed
), um die Zufälligkeit der generierten Ergebnisse zu steuern. Der Standardwert ist 3407. - Wählen Sie den Modelltyp (
flux-dev
undflux-dev-fp8
vielleichtflux-schnell
), empfohlenflux-dev-fp8
um die Anforderungen an den Grafikspeicher zu reduzieren.
- Geben Sie eine Textaufforderung (
- Bilder generieren
Klicken Sie auf die Schaltfläche Generieren und UNO generiert die Ergebnisse auf der Grundlage der Eingabeaufforderungen und des Referenzbildes. Die Generierungszeit hängt von der Hardwareleistung ab und dauert auf Consumer-GPUs wie der RTX 3090 in der Regel einige Sekunden bis einige Minuten.
Ausführen der Argumentation von der Kommandozeile aus
- Vorbereiten auf den Eintritt
Erstellen Sie eine Konfigurationsdatei, die die Pfade für die Eingabeaufforderung und das Referenzbild enthält, oder geben Sie die Parameter direkt in der Befehlszeile an. Beispiel:python inference.py --prompt "A man in a suit, standing in a city" --image_paths "./assets/examples/man.jpg" --model_type "flux-dev-fp8" --save_path "./output"
- Beschreibung der gemeinsamen Parameter
--prompt
Textbeschreibung: Eine Textbeschreibung, die den Inhalt des erzeugten Bildes definiert.--image_paths
Referenzbildpfad mit Unterstützung für mehrere Bilder.--model_type
: Modelltyp, empfohlenflux-dev-fp8
.--offload
Enable video memory offloading to reduce video memory usage.--num_steps
Anzahl der Diffusionsschritte, Standardwert 25, beeinflusst die Qualität der Erzeugung.--guidance
Guidance-Faktor: Der Guidance-Faktor, Standardwert 4, steuert, wie gut der Text mit dem Bild übereinstimmt.
- Ergebnisse anzeigen
Das erzeugte Bild wird in der Datei--save_path
Das angegebene Verzeichnis (z. B.output/inference
).
Featured Function Bedienung
Generierung von Einzelobjekten
- Verfahren::
- Laden Sie ein Bild des Motivs hoch (z. B. ein Foto einer Person).
- Geben Sie eine Texteingabe ein, die die Zielszene beschreibt (z. B. "Diese Person geht am Strand spazieren").
- Setzen Sie die Auflösung des Referenzbildes auf 512 (Standard).
- Um ein Bild zu erzeugen, behält UNO das Aussehen der Merkmale der Person (z. B. Gesicht, Kleidung) bei.
- caveatAchten Sie darauf, dass das Referenzbild klar ist und das Motiv gut charakterisiert ist, und vermeiden Sie unscharfe oder qualitativ schlechte Bilder.
Generierung von mehreren Subjekten
- Verfahren::
- Laden Sie mehrere Referenzbilder hoch (z. B. ein Foto von einer Katze und ein Foto von einem Hund).
- Geben Sie Textaufforderungen ein, um Szenen mit mehreren Themen zu beschreiben (z. B. "Die Katze und der Hund spielen im Gras.").
- Setzen Sie die Auflösung des Referenzbildes auf 320 (Standardeinstellung für mehrere Objekte).
- Um das Bild zu erzeugen, vermeidet UNO durch die UnoPE-Technik (Universal Rotational Position Embedding) die Verwechslung von Merkmalen.
- caveatDie Anzahl der Referenzbilder sollte 4 nicht überschreiten, und jedes Motiv sollte auf dem Bild deutlich zu erkennen sein.
Optimierung für geringen Speicherbedarf
- ausnutzen
flux-dev-fp8
Modell ist der Speicherbedarf auf etwa 16 GB gesunken. - .
--offload
Parameter, wodurch ein Teil der Berechnungen auf die CPU verlagert wird, was die Anforderungen an den Grafikspeicher weiter reduziert. - Für Nutzer von Consumer-GPUs wie der RTX 3090 oder RTX 4090.
Häufig gestellte Fragen
- unzureichender VideospeicherVersuchen Sie, die Auflösung zu reduzieren (
--width
im Gesang antworten--height
) auf 512x512, oder verwenden Sie dieflux-dev-fp8
Modelle. - InstallationsfehlerPyTorch: Überprüfen Sie, ob die PyTorch-Version mit der GPU kompatibel ist und installieren Sie gegebenenfalls manuell eine bestimmte Version.
- Unzureichende Generierung von ErgebnissenAnpassungen
--guidance
(erhöht auf 5 oder 6) oder--num_steps
(erhöht auf 50), um die Bildqualität zu verbessern.
Anwendungsszenario
- Personalisierte Bilderstellung
Die Nutzer können ihre eigenen Fotos hochladen und sie mit Textbeschreibungen kombinieren, um Bilder von bestimmten Szenarien zu erzeugen. Wenn man zum Beispiel ein Selfie hochlädt, entsteht ein Bild von "sich selbst, wie man in der Stadt der Zukunft spazieren geht", das sich für die Erstellung von Inhalten für soziale Medien eignet. - Virtueller Charakterentwurf
Spieleentwickler oder Animatoren können Charakterskizzen hochladen, um Charakterbilder für verschiedene Szenarien zu erstellen und ein einheitliches Erscheinungsbild der Charaktere zu erhalten, das sich für Manga, Animation oder Spieleentwicklung eignet. - Werbung und Marketing
Marketingteams können Bilder von Produkten oder Markenmaskottchen hochladen, um verschiedene Werbeszenarien zu erstellen (z. B. Produkte, die zu verschiedenen Jahreszeiten gezeigt werden) und die Vielfalt der visuellen Inhalte zu erhöhen. - akademische Forschung
Forscher können den Open-Source-Code und den Trainingsablauf von UNO nutzen, um die Anwendung von Diffusionsmodellen auf die Generierung von mehreren Probanden zu untersuchen, neue Algorithmen zu validieren oder bestehende Modelle zu optimieren.
QA
- Welche Hardware wird von UNO unterstützt?
UNO empfiehlt NVIDIA-GPUs (z. B. RTX 3090 oder 4090) mit mindestens 16 GB Videospeicher. AMD-GPUs und macOS MPS werden unterstützt, aber PyTorch muss manuell konfiguriert werden. - Wie lässt sich die Qualität der erzeugten Bilder verbessern?
Hinzufügung einer Diffusionsstufe (--num_steps
auf 50 gesetzt) oder passen Sie den Bootstrap-Faktor (--guidance
(auf 5-6 eingestellt). Achten Sie darauf, dass das Referenzbild klar ist und die Textaufforderungen spezifisch sind. - Wird UNO kommerziell unterstützt?
Die Modellgewichte sind unter CC BY-NC 4.0 für nicht-kommerzielle Zwecke lizenziert. Die kommerzielle Nutzung unterliegt den Bedingungen der ursprünglichen FLUX.1-dev-Lizenz. - Wie geht man mit der Merkmalsverwirrung bei der Generierung von mehreren Subjekten um?
UNO Reduzieren Sie Verwirrung mit der UnoPE-Technik. Vergewissern Sie sich, dass die Motivmerkmale jedes Referenzbildes klar sind und dass die Auflösung angemessen reduziert ist (z. B. 320), um den Effekt zu optimieren.