[2024.04.18] - ???Le code de formation et l'ensemble de données ( AnyWord-3M ) sont publiés !
[2024.04.18] - Vous pouvez désormais fusionner les pondérations des modèles auto-entraînés ou communautaires dans AnyText, y compris tous les modèles de base et modèles LoRA basés sur SD1.5. Amusez-vous!
[2024.02.21] - Le code d'évaluation et l'ensemble de données ( AnyText-benchmark ) sont publiés.
[2024.02.06] - Bonne année lunaire à tous ! Nous avons lancé une application amusante (表情包大师/MeMeMaster) sur ModelScope et HuggingFace pour créer de jolis autocollants mèmes. Venez vous amuser avec!
[2024.01.17] - ?AnyText a été accepté par ICLR 2024 ( Spotlight ) !
[2024.01.04] - L'inférence FP16 est disponible, 3x plus rapide ! La démo peut désormais être déployée sur un GPU avec > 8 Go de mémoire. Apprécier!
[2024.01.04] - La démo en ligne de HuggingFace est disponible ici !
[2023.12.28] - La démo ModelScope Online est disponible ici !
[2023.12.27] - ?Nous avons publié le dernier point de contrôle (v1.1) et le code d'inférence, vérifiez sur ModelScope en chinois.
[2023.12.05] - Le document est disponible ici.
Pour plus de travaux de notre groupe liés à l'AIGC, veuillez visiter ici, et nous recherchons des collaborateurs et des stagiaires de recherche (envoyez-nous un e-mail).
AnyText comprend un pipeline de diffusion avec deux éléments principaux : un module latent auxiliaire et un module d'intégration de texte. Le premier utilise des entrées telles que le glyphe de texte, la position et l'image masquée pour générer des fonctionnalités latentes pour la génération ou l'édition de texte. Ce dernier utilise un modèle OCR pour coder les données de traits sous forme d'intégrations, qui se mélangent aux intégrations de légendes d'images du tokenizer pour générer des textes qui s'intègrent parfaitement à l'arrière-plan. Nous avons utilisé la perte de diffusion du contrôle du texte et la perte de perception du texte pour la formation afin d'améliorer encore la précision de l'écriture.
# 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
[Recommander] : Nous publions une démo sur ModelScope et HuggingFace ! Vous pouvez également essayer AnyText via notre service API.
AnyText inclut deux modes : génération de texte et édition de texte. Exécutez le code simple ci-dessous pour effectuer une inférence dans les deux modes et vérifier si l'environnement est correctement installé.
python inference.py
Si vous disposez d'un GPU avancé (avec au moins 8 Go de mémoire), il est recommandé de déployer notre démo comme ci-dessous, qui comprend des instructions d'utilisation, une interface utilisateur et de nombreux exemples.
export CUDA_VISIBLE_DEVICES=0 && python demo.py
L'inférence FP16 est utilisée par défaut et un modèle de traduction du chinois vers l'anglais est chargé pour la saisie directe de l'invite chinoise (occupant environ 4 Go de mémoire GPU). Le comportement par défaut peut être modifié, car la commande suivante active l'inférence FP32 et désactive le modèle de traduction :
export CUDA_VISIBLE_DEVICES=0 && python demo.py --use_fp32 --no_translator
Si FP16 est utilisé et que le modèle de traduction n'est pas utilisé (ou si vous le chargez sur le CPU, voir ici), la génération d'une seule image 512x512 occupera environ 7,5 Go de mémoire GPU.
De plus, d'autres fichiers de polices peuvent être utilisés par (bien que le résultat puisse ne pas être optimal) :
export CUDA_VISIBLE_DEVICES=0 && python demo.py --font_path your/path/to/font/file.ttf
Vous pouvez également charger un point de contrôle AnyText spécifié :
export CUDA_VISIBLE_DEVICES=0 && python demo.py --model_path your/path/to/your/own/anytext.ckpt
Veuillez noter que lors de la première exécution de l'inférence, les fichiers de modèle seront téléchargés vers :
~/.cache/modelscope/hub
. Si vous devez modifier le répertoire de téléchargement, vous pouvez spécifier manuellement la variable d'environnement : MODELSCOPE_CACHE
.
Dans cette démo, vous pouvez modifier le style pendant l'inférence en modifiant le modèle de base ou en chargeant des modèles LoRA (doit être basé sur SD1.5) :
/path/of/lora1.pth 0.3 /path/of/lora2.safetensors 0.6
. Téléchargez l'ensemble de données de référence AnyText depuis ModelScope ou GoogleDrive et décompressez les fichiers. Dans le dossier de référence , laion_word et wukong_word sont des ensembles de données pour l'évaluation en anglais et en chinois, respectivement. Ouvrez chaque test1k.json et modifiez le data_root
avec votre propre chemin du dossier imgs . Le répertoire FID contient les images utilisées pour le calcul du score FID (Fréchet Inception Distance).
Avant l'évaluation, nous devons générer des images correspondantes pour chaque méthode en fonction de l'ensemble d'évaluation. Nous avons également fourni des images pré-générées pour toutes les méthodes. Suivez les instructions ci-dessous pour générer vous-même des images. Notez que vous devez modifier les chemins et autres paramètres dans le script bash en conséquence.
bash ./eval/gen_imgs_anytext.sh
(Si vous rencontrez une erreur causée par le blocage de huggingface, veuillez décommenter la ligne 98 de ./models_yaml/anytext_sd15.yaml et remplacer le chemin du dossier clip-vit-large-patch14 par un chemin local.)
bash eval/gen_glyph.sh
Ensuite, veuillez cloner les référentiels officiels de ControlNet , Textdiffuser et GlyphControl et suivez leur documentation pour configurer l'environnement, télécharger les points de contrôle respectifs et vous assurer que l'inférence peut être exécutée normalement. Ensuite, copiez les trois fichiers <method>_singleGPU.py
, <method>_multiGPUs.py
et gen_imgs_<method>.sh
du dossier ./eval vers le répertoire racine des bases de code correspondantes et exécutez :
bash gen_imgs_ < method > .sh
Nous utilisons la précision de la phrase (Sen. ACC) et la distance d'édition normalisée (NED) pour évaluer l'exactitude du texte généré. Veuillez exécuter :
bash eval/eval_ocr.sh
Nous utilisons la métrique FID pour évaluer la qualité des images générées. Veuillez exécuter :
bash eval/eval_fid.sh
Par rapport aux méthodes existantes, AnyText présente un avantage significatif dans la génération de texte en anglais et en chinois. Veuillez noter que nous avons réorganisé le code et aligné davantage la configuration pour chaque méthode en cours d'évaluation. En conséquence, il peut y avoir des différences numériques mineures par rapport à celles rapportées dans l’article original.
anytext
à partir des instructions précédentes, où les versions des bibliothèques sont vérifiées. Sinon, si vous rencontrez un problème de dépendance environnementale ou de formation, veuillez vérifier s'il correspond aux versions répertoriées dans environment.yaml
.data_root
avec votre propre chemin de dossier imgs pour chaque sous-ensemble de données.python tool_add_anytext.py
pour obtenir un modèle pré-entraîné anytext.python train.py
.Configs
de train.py, veuillez vérifier attentivement. @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}
}