[18.04.2024] – ???Der Trainingscode und der Datensatz ( AnyWord-3M ) sind veröffentlicht!
[18.04.2024] – Sie können jetzt Gewichte von selbst trainierten oder Community-Modellen in AnyText zusammenführen, einschließlich aller Basismodelle und LoRA-Modelle basierend auf SD1.5. Viel Spaß!
[21.02.2024] – Der Evaluierungscode und der Datensatz ( AnyText-benchmark ) werden veröffentlicht.
[06.02.2024] – Frohes neues Mondjahr euch allen! Wir haben eine lustige App (表情包大师/MeMeMaster) auf ModelScope und HuggingFace gestartet, um niedliche Meme-Aufkleber zu erstellen. Kommen Sie und haben Sie Spaß damit!
[17.01.2024] – ?AnyText wurde von ICLR 2024 ( Spotlight ) akzeptiert!
[04.01.2024] – FP16-Inferenz ist verfügbar, 3x schneller! Jetzt kann die Demo auf einer GPU mit >8 GB Speicher bereitgestellt werden. Genießen!
[04.01.2024] – HuggingFace Online-Demo ist hier verfügbar!
[28.12.2023] – ModelScope Online-Demo ist hier verfügbar!
[27.12.2023] – ?Wir haben den neuesten Prüfpunkt (v1.1) und Inferenzcode veröffentlicht, siehe ModelScope auf Chinesisch.
[05.12.2023] – Das Papier ist hier verfügbar.
Weitere AIGC-bezogene Arbeiten unserer Gruppe finden Sie hier. Wir suchen Mitarbeiter und Forschungspraktikanten (schreiben Sie uns eine E-Mail).
AnyText umfasst eine Diffusionspipeline mit zwei Hauptelementen: einem latenten Hilfsmodul und einem Texteinbettungsmodul. Ersteres verwendet Eingaben wie Textglyphe, Position und maskiertes Bild, um latente Merkmale für die Textgenerierung oder -bearbeitung zu generieren. Letzteres verwendet ein OCR-Modell zum Kodieren von Strichdaten als Einbettungen, die mit Bildunterschrifteneinbettungen aus dem Tokenizer vermischt werden, um Texte zu generieren, die sich nahtlos in den Hintergrund einfügen. Wir nutzten den Diffusionsverlust der Textkontrolle und den Verlust der Textwahrnehmung für das Training, um die Schreibgenauigkeit weiter zu verbessern.
# Install git (skip if already done)
conda install -c anaconda git
# Clone anytext code
git clone https://github.com/tyxsspa/AnyText.git
cd AnyText
# Prepare a font file; Arial Unicode MS is recommended, **you need to download it on your own**
mv your/path/to/arialuni.ttf ./font/Arial_Unicode.ttf
# Create a new environment and install packages as follows:
conda env create -f environment.yaml
conda activate anytext
[Empfehlen] : Wir veröffentlichen eine Demo auf ModelScope und HuggingFace! Sie können AnyText auch über unseren API-Service ausprobieren.
AnyText umfasst zwei Modi: Textgenerierung und Textbearbeitung. Führen Sie den folgenden einfachen Code aus, um in beiden Modi eine Inferenz durchzuführen und zu überprüfen, ob die Umgebung korrekt installiert ist.
python inference.py
Wenn Sie über eine fortschrittliche GPU (mit mindestens 8 GB Speicher) verfügen, wird empfohlen, unsere Demo wie folgt bereitzustellen, die Gebrauchsanweisungen, Benutzeroberfläche und zahlreiche Beispiele enthält.
export CUDA_VISIBLE_DEVICES=0 && python demo.py
Als Standard wird die FP16-Inferenz verwendet und ein Chinesisch-Englisch-Übersetzungsmodell wird für die direkte Eingabe der chinesischen Eingabeaufforderung geladen (belegt etwa 4 GB GPU-Speicher). Das Standardverhalten kann geändert werden, da der folgende Befehl die FP32-Inferenz aktiviert und das Übersetzungsmodell deaktiviert:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --use_fp32 --no_translator
Wenn FP16 verwendet wird und das Übersetzungsmodell nicht verwendet wird (oder es auf die CPU lädt, siehe hier), belegt die Generierung eines einzelnen 512x512-Bildes etwa 7,5 GB GPU-Speicher.
Darüber hinaus können andere Schriftartdateien verwendet werden (obwohl das Ergebnis möglicherweise nicht optimal ist):
export CUDA_VISIBLE_DEVICES=0 && python demo.py --font_path your/path/to/font/file.ttf
Sie können auch einen angegebenen AnyText-Prüfpunkt laden:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --model_path your/path/to/your/own/anytext.ckpt
Bitte beachten Sie , dass bei der ersten Ausführung der Inferenz die Modelldateien heruntergeladen werden nach: ~/.cache/modelscope/hub
. Wenn Sie das Download-Verzeichnis ändern müssen, können Sie die Umgebungsvariable MODELSCOPE_CACHE
manuell angeben.
In dieser Demo können Sie den Stil während der Inferenz ändern, indem Sie entweder das Basismodell ändern oder LoRA-Modelle laden (müssen auf SD1.5 basieren):
/path/of/lora1.pth 0.3 /path/of/lora2.safetensors 0.6
. Laden Sie den AnyText-Benchmark-Datensatz von ModelScope oder GoogleDrive herunter und entpacken Sie die Dateien. Im Benchmark- Ordner sind laion_word und wukong_word Datensätze für die englische bzw. chinesische Bewertung. Öffnen Sie jede test1k.json und ändern Sie das data_root
mit Ihrem eigenen Pfad des imgs- Ordners. Das FID- Verzeichnis enthält Bilder, die zur Berechnung des FID-Scores (Fréchet Inception Distance) verwendet werden.
Vor der Auswertung müssen wir für jede Methode entsprechende Bilder basierend auf dem Auswertungssatz generieren. Für alle Methoden haben wir auch vorgenerierte Bilder bereitgestellt. Befolgen Sie die nachstehenden Anweisungen, um selbst Bilder zu erstellen. Beachten Sie, dass Sie die Pfade und andere Parameter im Bash-Skript entsprechend ändern müssen.
bash ./eval/gen_imgs_anytext.sh
(Wenn Sie auf einen Fehler stoßen, der durch die Blockierung von Huggingface verursacht wird, entkommentieren Sie bitte Zeile 98 von ./models_yaml/anytext_sd15.yaml und ersetzen Sie den Pfad des Ordners „clip-vit-large-patch14“ durch einen lokalen.)
bash eval/gen_glyph.sh
Als Nächstes klonen Sie bitte die offiziellen Repositorys von ControlNet , Textdiffuser und GlyphControl und befolgen Sie deren Dokumentation, um die Umgebung einzurichten, die entsprechenden Prüfpunkte herunterzuladen und sicherzustellen, dass die Inferenz normal ausgeführt werden kann. Kopieren Sie dann die drei Dateien
,
und gen_imgs_
aus dem Ordner ./eval in das Stammverzeichnis der entsprechenden Codebasen und führen Sie Folgendes aus:
bash gen_imgs_ < method > .sh
Wir verwenden Satzgenauigkeit (Sen. ACC) und Normalized Edit Distance (NED), um die Genauigkeit des generierten Textes zu bewerten. Bitte führen Sie Folgendes aus:
bash eval/eval_ocr.sh
Wir verwenden die FID-Metrik, um die Qualität der generierten Bilder zu bewerten. Bitte führen Sie Folgendes aus:
bash eval/eval_fid.sh
Im Vergleich zu bestehenden Methoden hat AnyText sowohl bei der englischen als auch bei der chinesischen Textgenerierung einen erheblichen Vorteil.
Bitte beachten Sie, dass wir den Code neu organisiert und die Konfiguration für jede zu evaluierende Methode weiter angepasst haben. Daher kann es zu geringfügigen numerischen Unterschieden im Vergleich zu den Angaben im Originalpapier kommen.
anytext
-Umgebung anhand der vorherigen Anweisungen zu erstellen und zu aktivieren, in der die Versionen der Bibliotheken überprüft werden. Wenn Sie andernfalls auf eine Umgebungsabhängigkeit oder ein Trainingsproblem stoßen, überprüfen Sie bitte, ob es mit den in environment.yaml
aufgeführten Versionen übereinstimmt.data_root
mit Ihrem eigenen Pfad des imgs- Ordners für jeden Unterdatensatz.python tool_add_anytext.py
aus, um ein vorab trainiertes Anytext-Modell zu erhalten.python train.py
aus.Configs
in train.py, bitte überprüfen Sie diese sorgfältig. @article{tuo2023anytext,
title={AnyText: Multilingual Visual Text Generation And Editing},
author={Yuxiang Tuo and Wangmeng Xiang and Jun-Yan He and Yifeng Geng and Xuansong Xie},
year={2023},
eprint={2311.03054},
archivePrefix={arXiv},
primaryClass={cs.CV}
}