이 저장소에는 4K 텍스트-이미지 생성을 위한 확산 변환기의 약-강 훈련을 탐구하는 논문에 대한 PyTorch 모델 정의, 사전 훈련된 가중치 및 추론/샘플링 코드가 포함되어 있습니다. 프로젝트 페이지에서 더 많은 시각화를 확인할 수 있습니다.
PixArt-Σ: 4K 텍스트-이미지 생성을 위한 확산 변환기의 약함 대 강함 훈련
Junsong Chen*, Chongjian Ge*, Enze Xie*†, Yue Wu*, Lewei Yao, Xiaozhe Ren, Zhongdao Wang, Ping Luo, Huchuan Lu, Zhenguo Li
화웨이 노아의 방주 연구소, DLUT, HKU, HKUST
이전 PixArt-α 프로젝트를 통해 우리는 PixArt 커뮤니티의 모든 사람이 사용할 수 있도록 이 저장소를 최대한 단순하게 유지하려고 노력할 것입니다.
? diffusers
빠른 경험을 위해 패치를 이용한 ? diffusers
!-기본
-안내
-기타
모델 | T5 토큰 길이 | VAE | 2K/4K |
---|---|---|---|
PixArt-Σ | 300 | SDXL | ✅ |
PixArt-α | 120 | SD1.5 |
모델 | 샘플-1 | 샘플-2 | 샘플-3 |
---|---|---|---|
PixArt-Σ | |||
PixArt-α | |||
즉각적인 | 회색 머리에 수염을 기른 60대 남성이 모직 코트와 갈색 베레모 , 안경, 영화를 입고 행인을 관찰하고 있습니다. | 바디샷, 프랑스 여성, 사진, 프랑스 거리 배경, 역광, 림 라이트, 후지필름. | 두 척의 해적선이 커피 한 잔 안에서 항해하면서 서로 싸우는 모습을 사실적으로 클로즈업한 영상입니다. |
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
가장 먼저.
우리는 보다 사용자 친화적이고 호환성이 높은 코드베이스를 구축하기 위해 새로운 저장소를 시작합니다. 기본 모델 구조는 PixArt-α와 동일하므로 원래 저장소를 기반으로 기능을 계속 개발할 수 있습니다. 또한, 이 저장소는 향후 PixArt-alpha를 지원할 예정입니다 .
팁
이제 사전 특징 추출 없이 모델을 훈련할 수 있습니다 . 우리는 PixArt-α 코드 기반의 데이터 구조를 재구성하여 모든 사람이 처음부터 어려움 없이 훈련, 추론 및 시각화를 시작할 수 있도록 합니다.
먼저 장난감 데이터세트를 다운로드하세요. 훈련을 위한 데이터 세트 구조는 다음과 같습니다.
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
구성 파일 디렉토리에서 원하는 구성 파일을 선택합니다.
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
시작하려면 먼저 필요한 종속성을 설치하세요. 모델(곧 출시 예정)의 체크포인트 파일을 output/pretrained_models
폴더에 다운로드했는지 확인한 다음 로컬 머신에서 실행하세요.
# 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
중요한
PixArtSigmaPipeline
을 사용할 수 있도록 diffusers
업그레이드하세요!
pip install git+https://github.com/huggingface/diffusers
diffusers<0.28.0
의 경우 이 스크립트를 확인하여 도움을 받으세요.
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
http://your-server-ip:12345
사용한 간단한 예를 살펴보겠습니다.
Hugging Face에서 직접 다운로드
또는 다음과 같이 실행하세요:
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
모든 모델은 여기에서 자동으로 다운로드됩니다. 이 URL에서 수동으로 다운로드하도록 선택할 수도 있습니다.
모델 | #Params | 체크포인트 경로 | OpenXLab에서 다운로드 |
---|---|---|---|
T5 및 SDXL-VAE | 4.5B | 디퓨저: pixart_sigma_sdxlvae_T5_diffusers | 곧 온다 |
PixArt-Σ-256 | 0.6B | pth: PixArt-Sigma-XL-2-256x256.pth 디퓨저: PixArt-Sigma-XL-2-256x256 | 곧 온다 |
PixArt-Σ-512 | 0.6B | pth: PixArt-Sigma-XL-2-512-MS.pth 디퓨저: PixArt-Sigma-XL-2-512-MS | 곧 온다 |
PixArt-α-512-DMD | 0.6B | 디퓨저: PixArt-Alpha-DMD-XL-2-512x512 | 곧 온다 |
PixArt-Σ-1024 | 0.6B | pth: PixArt-Sigma-XL-2-1024-MS.pth 디퓨저: PixArt-Sigma-XL-2-1024-MS | 곧 온다 |
PixArt-Σ-2K | 0.6B | pth: PixArt-Sigma-XL-2-2K-MS.pth 디퓨저: PixArt-Sigma-XL-2-2K-MS | 곧 온다 |
출시될 수 있도록 최선을 다하겠습니다
@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}