Este repositorio contiene definiciones de modelos de PyTorch, pesos previamente entrenados y código de inferencia/muestreo para nuestro artículo que explora el entrenamiento de débil a fuerte del transformador de difusión para la generación de texto a imagen 4K. Puede encontrar más visualizaciones en nuestra página de proyecto.
PixArt-Σ: Entrenamiento de débil a fuerte del transformador de difusión para la generación de texto a imagen 4K
Junsong Chen*, Chongjian Ge*, Enze Xie*†, Yue Wu*, Lewei Yao, Xiaozhe Ren, Zhongdao Wang, Ping Luo, Huchuan Lu, Zhenguo Li
Laboratorio del Arca de Noé de Huawei, DLUT, HKU, HKUST
Aprendiendo del proyecto anterior PixArt-α, intentaremos mantener este repositorio lo más simple posible para que todos los miembros de la comunidad PixArt puedan usarlo.
? diffusers
que usan parches para una experiencia rápida!-Principal
-Guía
-Otros
Modelo | Longitud del token T5 | vae | 2K/4K |
---|---|---|---|
PixArt-Σ | 300 | SDXL | ✅ |
PixArt-α | 120 | SD1.5 |
Modelo | Muestra-1 | Muestra-2 | Muestra-3 |
---|---|---|---|
PixArt-Σ | |||
PixArt-α | |||
Inmediato | Hombre de cerca, canoso y barbudo de unos 60 años, observando a los transeúntes, con abrigo de lana y boina marrón , gafas, cinematográfico. | Toma corporal, una mujer francesa, fotografía, fondo de calles francesas, contraluz, luz de borde, Fujifilm. | Video fotorrealista de primer plano de dos barcos piratas luchando entre sí mientras navegan dentro de una taza de café . |
conda create -n pixart python==3.9.0
conda activate pixart
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
git clone https://github.com/PixArt-alpha/PixArt-sigma.git
cd PixArt-sigma
pip install -r requirements.txt
En primer lugar.
Comenzamos un nuevo repositorio para crear una base de código más compatible y fácil de usar. La estructura del modelo principal es la misma que la de PixArt-α, aún puede desarrollar su función basándose en el repositorio original. Además, este repositorio admitirá PixArt-alpha en el futuro .
Consejo
Ahora puede entrenar su modelo sin extracción previa de características . Reformamos la estructura de datos en el código base PixArt-α, para que todos puedan comenzar a entrenar, inferir y visualizar desde el principio sin ningún problema.
Descargue primero el conjunto de datos del juguete. La estructura del conjunto de datos para la capacitación es:
cd ./pixart-sigma-toy-dataset
Dataset Structure
├──InternImgs/ (images are saved here)
│ ├──000000000000.png
│ ├──000000000001.png
│ ├──......
├──InternData/
│ ├──data_info.json (meta data)
Optional(?)
│ ├──img_sdxl_vae_features_1024resolution_ms_new (run tools/extract_caption_feature.py to generate caption T5 features, same name as images except .npz extension)
│ │ ├──000000000000.npy
│ │ ├──000000000001.npy
│ │ ├──......
│ ├──caption_features_new
│ │ ├──000000000000.npz
│ │ ├──000000000001.npz
│ │ ├──......
│ ├──sharegpt4v_caption_features_new (run tools/extract_caption_feature.py to generate caption T5 features, same name as images except .npz extension)
│ │ ├──000000000000.npz
│ │ ├──000000000001.npz
│ │ ├──......
# SDXL-VAE, T5 checkpoints
git lfs install
git clone https://huggingface.co/PixArt-alpha/pixart_sigma_sdxlvae_T5_diffusers output/pretrained_models/pixart_sigma_sdxlvae_T5_diffusers
# PixArt-Sigma checkpoints
python tools/download.py # environment eg. HF_ENDPOINT=https://hf-mirror.com can use for HuggingFace mirror
Seleccionando el archivo de configuración deseado del directorio de archivos de configuración.
python -m torch.distributed.launch --nproc_per_node=1 --master_port=12345
train_scripts/train.py
configs/pixart_sigma_config/PixArt_sigma_xl2_img512_internalms.py
--load-from output/pretrained_models/PixArt-Sigma-XL-2-512-MS.pth
--work-dir output/your_first_pixart-exp
--debug
Para comenzar, primero instale las dependencias requeridas. Asegúrese de haber descargado los archivos de puntos de control de los modelos (próximamente) a la carpeta output/pretrained_models
y luego ejecútelos en su máquina local:
# SDXL-VAE, T5 checkpoints
git lfs install
git clone https://huggingface.co/PixArt-alpha/pixart_sigma_sdxlvae_T5_diffusers output/pixart_sigma_sdxlvae_T5_diffusers
# PixArt-Sigma checkpoints
python tools/download.py
# demo launch
python scripts/interface.py --model_path output/pretrained_models/PixArt-Sigma-XL-2-512-MS.pth --image_size 512 --port 11223
Importante
¡Actualice sus diffusers
para que PixArtSigmaPipeline
esté disponible!
pip install git+https://github.com/huggingface/diffusers
Para diffusers<0.28.0
, consulte este script para obtener ayuda.
import torch
from diffusers import Transformer2DModel , PixArtSigmaPipeline
device = torch . device ( "cuda:0" if torch . cuda . is_available () else "cpu" )
weight_dtype = torch . float16
transformer = Transformer2DModel . from_pretrained (
"PixArt-alpha/PixArt-Sigma-XL-2-1024-MS" ,
subfolder = 'transformer' ,
torch_dtype = weight_dtype ,
use_safetensors = True ,
)
pipe = PixArtSigmaPipeline . from_pretrained (
"PixArt-alpha/pixart_sigma_sdxlvae_T5_diffusers" ,
transformer = transformer ,
torch_dtype = weight_dtype ,
use_safetensors = True ,
)
pipe . to ( device )
# Enable memory optimizations.
# pipe.enable_model_cpu_offload()
prompt = "A small cactus with a happy face in the Sahara desert."
image = pipe ( prompt ). images [ 0 ]
image . save ( "./catcus.png" )
pip install git+https://github.com/huggingface/diffusers
# PixArt-Sigma 1024px
DEMO_PORT=12345 python app/app_pixart_sigma.py
# PixArt-Sigma One step Sampler(DMD)
DEMO_PORT=12345 python app/app_pixart_dmd.py
Echemos un vistazo a un ejemplo sencillo utilizando http://your-server-ip:12345
.
Descarga directa desde Hugging Face
o ejecutar con:
pip install git+https://github.com/huggingface/diffusers
python tools/convert_pixart_to_diffusers.py --orig_ckpt_path output/pretrained_models/PixArt-Sigma-XL-2-1024-MS.pth --dump_path output/pretrained_models/PixArt-Sigma-XL-2-1024-MS --only_transformer=True --image_size=1024 --version sigma
Todos los modelos se descargarán automáticamente aquí. También puede optar por descargar manualmente desde esta URL.
Modelo | #parámetros | Ruta del punto de control | Descargar en OpenXLab |
---|---|---|---|
T5 y SDXL-VAE | 4,5 mil millones | Difusores: pixart_sigma_sdxlvae_T5_diffusers | muy pronto |
PixArt-Σ-256 | 0,6 mil millones | pth: PixArt-Sigma-XL-2-256x256.pth Difusores: PixArt-Sigma-XL-2-256x256 | muy pronto |
PixArt-Σ-512 | 0,6 mil millones | pth: PixArt-Sigma-XL-2-512-MS.pth Difusores: PixArt-Sigma-XL-2-512-MS | muy pronto |
PixArt-α-512-DMD | 0,6 mil millones | Difusores: PixArt-Alpha-DMD-XL-2-512x512 | muy pronto |
PixArt-Σ-1024 | 0,6 mil millones | pth: PixArt-Sigma-XL-2-1024-MS.pth Difusores: PixArt-Sigma-XL-2-1024-MS | muy pronto |
PixArt-Σ-2K | 0,6 mil millones | pth: PixArt-Sigma-XL-2-2K-MS.pth Difusores: PixArt-Sigma-XL-2-2K-MS | muy pronto |
Haremos todo lo posible para liberar
@misc{chen2024pixartsigma,
title={PixArt-Sigma: Weak-to-Strong Training of Diffusion Transformer for 4K Text-to-Image Generation},
author={Junsong Chen and Chongjian Ge and Enze Xie and Yue Wu and Lewei Yao and Xiaozhe Ren and Zhongdao Wang and Ping Luo and Huchuan Lu and Zhenguo Li},
year={2024},
eprint={2403.04692},
archivePrefix={arXiv},
primaryClass={cs.CV}