[2024.04.18] - ???O código de treinamento e o conjunto de dados ( AnyWord-3M ) foram lançados!
[2024.04.18] - Você pode mesclar pesos de modelos autotreinados ou da comunidade em AnyText agora, incluindo todos os modelos básicos e modelos LoRA baseados em SD1.5. Divirta-se!
[2024.02.21] - O código de avaliação e o conjunto de dados ( AnyText-benchmark ) são lançados.
[2024.02.06] - Feliz Ano Novo Lunar a todos! Lançamos um aplicativo divertido (表情包大师/MeMeMaster) no ModelScope e HuggingFace para criar adesivos de meme fofos. Venha e divirta-se com isso!
[2024.01.17] - ?AnyText foi aceito pelo ICLR 2024 ( Spotlight )!
[2024.01.04] - A inferência FP16 está disponível, 3x mais rápida! Agora a demonstração pode ser implantada em GPU com memória >8GB. Aproveitar!
[2024.01.04] - A demonstração online do HuggingFace está disponível aqui!
[2023.12.28] - A demonstração ModelScope Online está disponível aqui!
[2023.12.27] - ?Lançamos o ponto de verificação mais recente (v1.1) e o código de inferência, verifique no ModelScope em chinês.
[2023.12.05] - O artigo está disponível aqui.
Para mais trabalhos do nosso grupo relacionados ao AIGC, visite aqui, e estamos buscando colaboradores e estagiários de pesquisa (envie-nos um e-mail).
AnyText compreende um pipeline de difusão com dois elementos primários: um módulo latente auxiliar e um módulo de incorporação de texto. O primeiro usa entradas como glifo de texto, posição e imagem mascarada para gerar recursos latentes para geração ou edição de texto. Este último emprega um modelo OCR para codificar dados de traços como embeddings, que se misturam com embeddings de legendas de imagens do tokenizer para gerar textos que se integram perfeitamente ao fundo. Empregamos perda de difusão de controle de texto e perda de percepção de texto para treinamento para melhorar ainda mais a precisão da escrita.
# 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] : Lançamos uma demonstração no ModelScope e HuggingFace! Você também pode experimentar AnyText por meio de nosso serviço API.
AnyText inclui dois modos: Geração de Texto e Edição de Texto. Executando o código simples abaixo para realizar inferência nos dois modos e verificar se o ambiente está instalado corretamente.
python inference.py
Se você possui GPU avançada (com pelo menos 8G de memória), é recomendável implantar nossa demonstração conforme abaixo, que inclui instruções de uso, interface de usuário e exemplos abundantes.
export CUDA_VISIBLE_DEVICES=0 && python demo.py
A inferência FP16 é usada como padrão e um modelo de tradução de chinês para inglês é carregado para entrada direta do prompt em chinês (ocupando aproximadamente 4 GB de memória da GPU). O comportamento padrão pode ser modificado, pois o comando a seguir habilita a inferência FP32 e desabilita o modelo de tradução:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --use_fp32 --no_translator
Se o FP16 for usado e o modelo de tradução não for usado (ou carregá-lo na CPU, veja aqui), a geração de uma única imagem 512x512 ocupará aproximadamente 7,5 GB de memória da GPU.
Além disso, outro arquivo de fonte pode ser usado por (embora o resultado possa não ser o ideal):
export CUDA_VISIBLE_DEVICES=0 && python demo.py --font_path your/path/to/font/file.ttf
Você também pode carregar um ponto de verificação AnyText especificado:
export CUDA_VISIBLE_DEVICES=0 && python demo.py --model_path your/path/to/your/own/anytext.ckpt
Observe que ao executar a inferência pela primeira vez, os arquivos do modelo serão baixados para: ~/.cache/modelscope/hub
. Se precisar modificar o diretório de download, você poderá especificar manualmente a variável de ambiente: MODELSCOPE_CACHE
.
Nesta demonstração, você pode alterar o estilo durante a inferência alterando o modelo base ou carregando modelos LoRA (deve ser baseado em SD1.5):
/path/of/lora1.pth 0.3 /path/of/lora2.safetensors 0.6
. Baixe o conjunto de dados de referência AnyText do ModelScope ou GoogleDrive e descompacte os arquivos. Na pasta benchmark , laion_word e wukong_word são conjuntos de dados para avaliação em inglês e chinês, respectivamente. Abra cada test1k.json e modifique data_root
com seu próprio caminho da pasta imgs . O diretório FID contém imagens que são usadas para calcular a pontuação FID (Fréchet Inception Distance).
Antes da avaliação, precisamos gerar imagens correspondentes para cada método com base no conjunto de avaliação. Também fornecemos imagens pré-geradas para todos os métodos. Siga as instruções abaixo para gerar imagens por conta própria. Observe que você precisa modificar os caminhos e outros parâmetros no script bash de acordo.
bash ./eval/gen_imgs_anytext.sh
(Se você encontrar um erro causado pelo bloqueio do huggingface, remova o comentário da linha 98 de ./models_yaml/anytext_sd15.yaml e substitua o caminho da pasta clip-vit-large-patch14 por um local)
bash eval/gen_glyph.sh
A seguir, clone os repositórios oficiais de ControlNet , Textdiffuser e GlyphControl e siga sua documentação para configurar o ambiente, baixar os respectivos pontos de verificação e garantir que a inferência possa ser executada normalmente. Em seguida, copie os três arquivos
,
e gen_imgs_
da pasta ./eval para o diretório raiz das bases de código correspondentes e execute:
bash gen_imgs_ < method > .sh
Usamos precisão de frase (Sen. ACC) e distância de edição normalizada (NED) para avaliar a precisão do texto gerado. Por favor, execute:
bash eval/eval_ocr.sh
Usamos a métrica FID para avaliar a qualidade das imagens geradas. Por favor, execute:
bash eval/eval_fid.sh
Comparado aos métodos existentes, AnyText tem uma vantagem significativa na geração de texto em inglês e chinês.
Observe que reorganizamos o código e alinhamos ainda mais a configuração para cada método em avaliação. Como resultado, pode haver pequenas diferenças numéricas em comparação com aquelas relatadas no artigo original.
anytext
a partir das instruções anteriores, onde são verificadas as versões das bibliotecas. Caso contrário, se você encontrar um problema de dependência ou treinamento ambiental, verifique se ele corresponde às versões listadas em environment.yaml
.data_root
com seu próprio caminho da pasta imgs para cada subconjunto de dados.python tool_add_anytext.py
para obter um modelo pré-treinado em qualquer texto.python train.py
.Configs
em train.py, verifique com atenção. @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}
}