Zirui Wang 1, 3 · Zhizhou Sha 2, 3 · Zheng ding 3 · Yilin Wang 2, 3 · Zhuowen Tu 3
1 Université de Princeton · 2 Université Tsinghua · 3 Université de Californie, San Diego
CVPR 2024
Projet réalisé tandis que Zirui Wang, Zhizhou Sha et Yilin Wang ont effectué un stage à UC San Diego.
Si vous utilisez notre méthode et / ou notre modèle pour votre projet de recherche, nous sommes heureux de fournir des références croisées ici dans les mises à jour. :)
[04/04/2024] Notre méthodologie de formation est incorporée dans le comat qui montre des affectations d'attribut text-to-image améliorées.
[26/02/2024] Le tokencompose est accepté au CVPR 2024!
Le tokencompose [20/02/2024] est utilisé comme modèle de base du papier RealCompo pour une compositionnalité améliorée.
Un modèle de diffusion stable amené avec des termes de cohérence au niveau du jeton pour une composition d'instance multi-catégorie améliorée et un photoréalisme .

| Méthode | Composition d'instance multi-catégories | Photoréalisme | Efficacité | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Précision de l'objet | Coco | ADE20K | FID (CoCo) | Fid (flickr30k) | Latence | |||||||
| Mg2 | Mg3 | Mg4 | Mg5 | Mg2 | Mg3 | Mg4 | Mg5 | |||||
| SD 1.4 | 29.86 | 90,72 1.33 | 50,74 0,89 | 11,68 0,45 | 0,88 0,21 | 89,81 0,40 | 53,96 1.14 | 16.52 1.13 | 1,89 0,34 | 20.88 | 71.46 | 7,54 0,17 |
| Composable | 27.83 | 63,33 0,59 | 21.87 1.01 | 3,25 0,45 | 0,23 0,18 | 69,61 0,99 | 29,96 0,84 | 6,89 0,38 | 0,73 0,22 | - | 75.57 | 13,81 0,15 |
| Mise en page | 43.59 | 93,22 0,69 | 60,15 1,58 | 19,49 0,88 | 2,27 0,44 | 96,05 0,34 | 67,83 0,90 | 21.93 1.34 | 2,35 0,41 | - | 74.00 | 18,89 0,20 |
| Structuré | 29.64 | 90.40 1.06 | 48,64 1,32 | 10,71 0,92 | 0,68 0,25 | 89,25 0,72 | 53.05 1.20 | 15,76 0,86 | 1,74 0,49 | 21.13 | 71,68 | 7,74 0,17 |
| Attn-exct | 45.13 | 93,64 0,76 | 65.10 1.24 | 28.01 0,90 | 6,01 0,61 | 91,74 0,49 | 62,51 0,94 | 26,12 0,78 | 5,89 0,40 | - | 71,68 | 25.43 4.89 |
| Tokencompose (le nôtre) | 52.15 | 98,08 0,40 | 76.16 1.04 | 28,81 0,95 | 3,28 0,48 | 97,75 0,34 | 76,93 1.09 | 33,92 1.47 | 6,21 0,62 | 20.19 | 71.13 | 7,56 0,14 |
| Version de diffusion stable | Point de contrôle 1 | Point de contrôle 2 |
|---|---|---|
| v1.4 | Tokencompose_sd14_a | Tokencompose_sd14_b |
| v2.1 | Tokencompose_sd21_a | Tokencompose_sd21_b |
Nos modèles à finetumés ne contiennent pas de modules supplémentaires et peuvent être directement utilisés dans une bibliothèque de modèles de diffusion standard (par exemple, les diffuseurs de HuggingFace) en remplaçant le réseau U Pretraind par notre réseau U finetuned de manière plug-and-play. Nous fournissons un cahier de jupyter de démonstration qui utilise notre point de contrôle de modèle pour générer des images.
Vous pouvez également utiliser le code suivant pour télécharger nos points de contrôle et générer des images:
import torch
from diffusers import StableDiffusionPipeline
model_id = "mlpc-lab/TokenCompose_SD14_A"
device = "cuda"
pipe = StableDiffusionPipeline . from_pretrained ( model_id , torch_dtype = torch . float32 )
pipe = pipe . to ( device )
prompt = "A cat and a wine glass"
image = pipe ( prompt ). images [ 0 ]
image . save ( "cat_and_wine_glass.png" )Voir Multigen pour plus de détails.
| Méthode | Coco | ADE20K | ||||||
|---|---|---|---|---|---|---|---|---|
| Mg2 | Mg3 | Mg4 | Mg5 | Mg2 | Mg3 | Mg4 | Mg5 | |
| SD 1.4 | 90,72 1.33 | 50,74 0,89 | 11,68 0,45 | 0,88 0,21 | 89,81 0,40 | 53,96 1.14 | 16.52 1.13 | 1,89 0,34 |
| Composable | 63,33 0,59 | 21.87 1.01 | 3,25 0,45 | 0,23 0,18 | 69,61 0,99 | 29,96 0,84 | 6,89 0,38 | 0,73 0,22 |
| Mise en page | 93,22 0,69 | 60,15 1,58 | 19,49 0,88 | 2,27 0,44 | 96,05 0,34 | 67,83 0,90 | 21.93 1.34 | 2,35 0,41 |
| Structuré | 90.40 1.06 | 48,64 1,32 | 10,71 0,92 | 0,68 0,25 | 89,25 0,72 | 53.05 1.20 | 15,76 0,86 | 1,74 0,49 |
| Attn-exct | 93,64 0,76 | 65.10 1.24 | 28.01 0,90 | 6,01 0,61 | 91,74 0,49 | 62,51 0,94 | 26,12 0,78 | 5,89 0,40 |
| La nôtre | 98,08 0,40 | 76.16 1.04 | 28,81 0,95 | 3,28 0,48 | 97,75 0,34 | 76,93 1.09 | 33,92 1.47 | 6,21 0,62 |
Pour ceux qui souhaitent utiliser notre base de code pour former vos propres modèles de diffusion avec des objectifs au niveau du jeton , suivez les instructions ci-dessous:
conda create -n TokenCompose python=3.8.5
conda activate TokenCompose
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
pip install -r requirements.txtNous avons vérifié la configuration de l'environnement en utilisant ces versions de package spécifiques, mais nous nous attendons à ce qu'elle fonctionne également pour les versions plus récentes!
Si vous souhaitez utiliser vos propres données, veuillez vous référer à Preprocess_Data pour plus de détails.
Si vous souhaitez utiliser nos données de formation comme exemples ou à des fins de recherche, veuillez suivre les instructions ci-dessous:
cd train/data
# download COCO train2017
wget http://images.cocodataset.org/zips/train2017.zip
unzip train2017.zip
rm train2017.zip
bash coco_data_setup.sh Après cette étape, vous devriez avoir la structure suivante dans le répertoire train/data :
train/data/
coco_gsam_img/
train/
000000000142.jpg
000000000370.jpg
...
Téléchargez les données de segmentation CoCo sur Google Drive et placez-les sous train/data Directory.
Après cette étape, vous devriez avoir la structure suivante dans le répertoire train/data :
train/data/
coco_gsam_img/
train/
000000000142.jpg
000000000370.jpg
...
coco_gsam_seg.tar
Ensuite, exécutez la commande suivante pour décompresser les données de segmentation:
cd train/data
tar -xvf coco_gsam_seg.tar
rm coco_gsam_seg.tar Après la configuration, vous devez avoir la structure suivante dans le répertoire train/data :
train/data/
coco_gsam_img/
train/
000000000142.jpg
000000000370.jpg
...
coco_gsam_seg/
000000000142/
mask_000000000142_bananas.png
mask_000000000142_bread.png
...
000000000370/
mask_000000000370_bananas.png
mask_000000000370_bread.png
...
...
Nous utilisons WANDB pour enregistrer certaines courbes et visualisations. Connectez-vous à WANDB avant d'exécuter les scripts.
wandb loginEnsuite, pour exécuter TokenCompose, utilisez la commande suivante:
cd train
bash train.sh Les résultats seront enregistrés sous le répertoire train/results .
Ce référentiel est publié sous la licence Apache 2.0.
Notre code est construit sur les diffuseurs, prompt-à-propter, visière, segment mis à la terre et clip. Nous remercions tous ces auteurs pour leur code d'origine bien ouverte et leurs grandes contributions à la communauté.
Si vous trouvez notre travail utile, veuillez envisager de citer:
@InProceedings { Wang2024TokenCompose ,
author = { Wang, Zirui and Sha, Zhizhou and Ding, Zheng and Wang, Yilin and Tu, Zhuowen } ,
title = { TokenCompose: Text-to-Image Diffusion with Token-level Supervision } ,
booktitle = { Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) } ,
month = { June } ,
year = { 2024 } ,
pages = { 8553-8564 }
}