[2024.04.18] - ???¡Se publican el código de entrenamiento y el conjunto de datos ( AnyWord-3M )!
[2024.04.18] - Ahora puede fusionar pesos de modelos comunitarios o autodidactas en AnyText, incluidos todos los modelos base y modelos LoRA basados en SD1.5. ¡Divertirse!
[2024.02.21] - Se publican el código de evaluación y el conjunto de datos ( AnyText-benchmark ).
[2024.02.06] - ¡Feliz Año Nuevo Lunar a todos! Lanzamos una aplicación divertida (表情包大师/MeMeMaster) en ModelScope y HuggingFace para crear lindos stickers de memes. ¡Ven y diviértete con él!
[2024.01.17] - ?AnyText ha sido aceptado por ICLR 2024 ( Spotlight )!
[2024.01.04] - La inferencia FP16 está disponible, ¡3 veces más rápida! Ahora la demostración se puede implementar en GPU con >8 GB de memoria. ¡Disfrutar!
[2024.01.04] - ¡La demostración de HuggingFace Online está disponible aquí!
[2023.12.28] - ¡La demostración en línea de ModelScope está disponible aquí!
[2023.12.27] - Lanzamos el último punto de control (v1.1) y código de inferencia, verifique ModelScope en chino.
[2023.12.05] - El documento está disponible aquí.
Para obtener más trabajos de nuestro grupo relacionados con AIGC, visite aquí, y estamos buscando colaboradores y pasantes de investigación (envíenos un correo electrónico).
AnyText comprende un canal de difusión con dos elementos principales: un módulo latente auxiliar y un módulo de incrustación de texto. El primero utiliza entradas como glifo de texto, posición e imagen enmascarada para generar características latentes para la generación o edición de texto. Este último emplea un modelo OCR para codificar datos de trazos como incrustaciones, que se combinan con las incrustaciones de títulos de imágenes del tokenizador para generar textos que se integran perfectamente con el fondo. Empleamos pérdida de difusión de control de texto y pérdida de percepción de texto para el entrenamiento y mejorar aún más la precisión de la escritura.
# 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
[Recomendar] : ¡Lanzamos una demostración de ModelScope y HuggingFace! También puedes probar AnyText a través de nuestro servicio API.
AnyText incluye dos modos: Generación de texto y Edición de texto. Ejecute el código simple a continuación para realizar inferencia en ambos modos y verificar si el entorno está instalado correctamente.
python inference.py
Si tiene una GPU avanzada (con al menos 8G de memoria), se recomienda implementar nuestra demostración como se muestra a continuación, que incluye instrucciones de uso, interfaz de usuario y abundantes ejemplos.
export CUDA_VISIBLE_DEVICES=0 && python demo.py
La inferencia FP16 se utiliza de forma predeterminada y se carga un modelo de traducción del chino al inglés para la entrada directa del mensaje en chino (ocupa ~4 GB de memoria de la GPU). El comportamiento predeterminado se puede modificar, ya que el siguiente comando habilita la inferencia FP32 y deshabilita el modelo de traducción:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --use_fp32 --no_translator
Si se utiliza FP16 y no se utiliza el modelo de traducción (o lo carga en la CPU, consulte aquí), la generación de una única imagen de 512x512 ocupará ~7,5 GB de memoria de la GPU.
Además, se pueden utilizar otros archivos de fuentes (aunque el resultado puede no ser óptimo):
export CUDA_VISIBLE_DEVICES=0 && python demo.py --font_path your/path/to/font/file.ttf
También puede cargar un punto de control AnyText específico:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --model_path your/path/to/your/own/anytext.ckpt
Tenga en cuenta que al ejecutar la inferencia por primera vez, los archivos del modelo se descargarán en:
~/.cache/modelscope/hub
. Si necesita modificar el directorio de descarga, puede especificar manualmente la variable de entorno: MODELSCOPE_CACHE
.
En esta demostración, puede cambiar el estilo durante la inferencia cambiando el modelo base o cargando modelos LoRA (debe basarse en SD1.5):
/path/of/lora1.pth 0.3 /path/of/lora2.safetensors 0.6
. Descargue el conjunto de datos AnyText-benchmark de ModelScope o GoogleDrive y descomprima los archivos. En la carpeta de referencia , laion_word y wukong_word son conjuntos de datos para evaluación en inglés y chino, respectivamente. Abra cada test1k.json y modifique data_root
con su propia ruta de la carpeta imgs . El directorio FID contiene imágenes que se utilizan para calcular la puntuación FID (Distancia de inicio de Fréchet).
Antes de la evaluación, necesitamos generar imágenes correspondientes para cada método según el conjunto de evaluación. También proporcionamos imágenes pregeneradas para todos los métodos. Siga las instrucciones a continuación para generar imágenes por su cuenta. Tenga en cuenta que necesita modificar las rutas y otros parámetros en el script bash en consecuencia.
bash ./eval/gen_imgs_anytext.sh
(Si encuentra un error causado por el bloqueo de huggingface, descomente la línea 98 de ./models_yaml/anytext_sd15.yaml y reemplace la ruta de la carpeta clip-vit-large-patch14 por una local)
bash eval/gen_glyph.sh
A continuación, clone los repositorios oficiales de ControlNet , Textdiffuser y GlyphControl , y siga su documentación para configurar el entorno, descargar los puntos de control respectivos y asegurarse de que la inferencia se pueda ejecutar normalmente. Luego, copie los tres archivos <method>_singleGPU.py
, <method>_multiGPUs.py
y gen_imgs_<method>.sh
de la carpeta ./eval al directorio raíz de las bases de código correspondientes y ejecute:
bash gen_imgs_ < method > .sh
Utilizamos la precisión de la oración (Sen. ACC) y la distancia de edición normalizada (NED) para evaluar la precisión del texto generado. Por favor ejecute:
bash eval/eval_ocr.sh
Utilizamos la métrica FID para evaluar la calidad de las imágenes generadas. Por favor ejecute:
bash eval/eval_fid.sh
En comparación con los métodos existentes, AnyText tiene una ventaja significativa en la generación de texto tanto en inglés como en chino. Tenga en cuenta que hemos reorganizado el código y hemos alineado aún más la configuración para cada método bajo evaluación. Como resultado, puede haber diferencias numéricas menores en comparación con las reportadas en el artículo original.
anytext
a partir de instrucciones anteriores, donde se verifican las versiones de las bibliotecas. De lo contrario, si encuentra una dependencia ambiental o un problema de capacitación, verifique si coincide con las versiones que se enumeran en environment.yaml
.data_root
con su propia ruta de la carpeta imgs para cada subconjunto de datos.python tool_add_anytext.py
para obtener un modelo preentrenado de cualquier texto.python train.py
.Configs
dentro de train.py; compruébelo cuidadosamente. @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}
}