SDXL 1.0の画像生成例

StableDiffusion XL 1.0のpromptの生成例を他の画像生成モデルのprompt例から生成してみる。
今回試したのは[eDiff-I](https://arxiv.org/pdf/2211.01324.pdf)、[Imagen](https://arxiv.org/pdf/2205.11487.pdf)、[Parti](https://arxiv.org/pdf/2206.10789.pdf)、[Muse](https://arxiv.org/pdf/2301.00704.pdf)の論文内にあるPrompt例である。

# 生成コード

https://note.com/npaka/n/n138b466be643

上記参考。
ただし、自分の環境だとGPUが8GBではメモリが足りなく、エラーが出るので以下が必要。


```python
#pipe.to("cuda")
pipe.enable_model_cpu_offload()
```

# [eDiff-I](https://arxiv.org/pdf/2211.01324.pdf)のprompt
SDXLの結果を示す。Baseのみ、Refinerなし。infer_step=50。入力prompt以外初期値。


## 'A photo of a raccoon wearing a brown sports jacket and a hat. He is holding a whip in his hand'
大体描けてる。鞭の形が微妙だが大きく問題はない。
![output_00_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/2516cc67-499c-a6ed-e12a-d6d85cca310c.png)

## 'A photo of a red parrot, a blue parrot and a green parrot singing at a concert in front of a microphone. Colorful lights in the background.'
赤、青、緑の三羽のオウムは確率で描けている。
![output_01_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/13210895-4265-3632-e6bc-b5b8f8d319ff.png)

## 'A photo of a cute corgi wearing a beret holding a sign that says "Diffusion Models". There is Eiffel tower in the background.'
ベレー帽の生成率が低く、看板を手に持つ確率も低い。"Diffusion Models"もスペルミスが多い。
![output_02_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/9a6e8caa-b2a5-4233-9f03-549c7ceee798.png)

## 'A photo of a lion and a panda competing in the Olympics swimming event.'
パンダとライオンの書き分けはたまに混ざるが、大抵は問題ない。
![output_03_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/cb78d9cc-451a-445c-6c64-62f3c5362fbb.png)

## eDiff-I出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/c75b60e2-4ba0-b387-a915-24abd9a6f7cb.png)


## 'A photo of two cute teddy bears sitting on top of a grizzly bear in a beautiful forest. Highly detailed fantasy art, 4k, artstation'
「sitting on top of」という意味を理解しておらず、生成位置に問題がある。
![output_04_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/aeb35f24-053c-356d-5b88-376609bcafdb.png)

## 'There are two Chinese teapots on a table. One pot has a painting of a dragon, while the other pot has a painting of a panda.'
急須に龍の絵は描かれるがパンダの絵はあまりない。
![output_05_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/ca781648-9d59-20eb-aa83-e5d081607c3d.png)

## 'A photo of two squirrel warriors dressed as knights fighting on a battlefield. The squirrel on the left holds a stick, while the squirrel on the right holds a long sword. Gray clouds.'
鎧のリスは描かれるが、武器の指定(左が棒で右が剣)は出来ていない。
![output_06_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/6f479819-3da4-bbcb-96a7-636adc0f82ae.png)

## 'A photo of a dog wearing a blue shirt and a cat wearing a red shirt sitting in a park, photorealistic dslr.'
シャツの色は指定通り（犬が青）に描かれる事もあるが失敗する（犬が赤）事もある。確率的に約半数ということは単なる偶然だろうか。
ちなみにdslrはデジタル一眼レフカメラという意味。
![output_07_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/5cf28907-9b13-915f-cdb8-807803af4267.png)


## eDiff-I出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/3822a7c2-21cb-9e8d-5e07-297edc5d47a2.png)


## 'A photo of two monkeys sitting on a tree. They are holding a wooden board that says "Best friends", 4K dslr.'
板を持つ確率は低い。かろうじて一枚"BEST"っぽい板を持っている絵があるが。
![output_08_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/dc02677e-c71c-b1e1-a426-ffcc3f0c8156.png)

## 'A photo of a golden retriever puppy wearing a green shirt. The shirt has text that says "NVIDIA rocks". Background office. 4k dslr.'
"NVIDIA rocks"は割合描けている。
![output_09_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/c898b335-2ef3-e7d7-23d4-1bc0c7d5049a.png)

## 'An ice sculpture is made with the text "Happy Holidays". Christmas decorations in the bacground. Dslr photo.'
"Happy Holidays"はかなり描けている。
![output_10_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/74690e47-79d8-dafe-8dc5-a7e0ac8234e6.png)

## 'A dslr photo of a colorful Graffiti on a wall with the text "Peace love". There is a painting of a bull dog with sunglasses next to it.'
サングラスのブルドッグは描けているが、"Peace love"は見えない。
![output_11_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/2c790831-0813-d46c-f758-2823e96ac8e7.png)

## eDiff-I出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/d81a5048-0c6c-012a-4c45-a0642143dd33.png)




## 'A 4K dslr photo of a hedgehog sitting in a small boat in the middle of a pond. It is wearing a Hawaiian shirt and a straw hat. It is reading a book. There are a few leaves in the background.'
本を読んでいる、アロハシャツ、麦わら帽の特徴は部分的に表れている。
![output_15_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/91fb61a8-6156-f171-6c21-d3e14fc28432.png)
## 'A fantasy landscape on an alien planet in which there are many buildings. There is a beautiful bridge with a pond in the center. There is one large moon in the sky. The sky is orange. Digital art, artstation.'
特に違いは分からない。
![output_16_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/8bca8a6c-b92e-93eb-df0f-99c4f3fa4236.png)

## 'A close-up 4k dslr photo of a cat riding a scooter. It is wearing a plain shirt and has a bandana around its neck. It is wearing a scooter helmet. There are palm trees in the background.'
スクーター、首にスカーフ、頭にヘルメット、体はシャツを全て満たしているのは少ない。
![output_17_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/01366cb3-382b-3a56-72eb-99b59e2ed8fc.png)

## 'A photo of a plate at a restaurant table with spaghetti and red sauce. There is sushi on top of the spaghetti. The dish is garnished with mint leaves. On the side, there is a glass with a purple drink, photorealistic, dslr.'
スパゲッティの上に寿司が乗ってない。
![output_18_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/cce1faf9-08c8-0dc4-d4fc-476b9d9b4b04.png)

## eDiff-I出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/ef0b20be-2c74-ea02-3f5f-0287dd9f0914.png)

## 'An origami of a monkey dressed as a monk riding a bike on a mountain.'
「僧の格好の折り紙のサル」は平面的ではなく立体的に描かれている。
![output_12_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/7d8e58c1-64bc-2ae9-c0a9-9a0a8f5a2b42.png)

## 'A 4k dslr photo of two teddy bears wearing a sports jersey with the text "eDiffi" written on it. They are on a soccer field.'
"eDiffi"のスペルミスは多いが、それ以外の特徴は問題ない。細かい事を言うとサッカー場じゃなくてラグビー場に見える。
![output_13_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/de0dc143-5a95-6520-8614-a5937015eab7.png)

## 'A photo of a lemur wearing a red magician hat and a blue coat in a garden. The lemur is performing a magic trick with cards.'
赤い帽子と青いコートの組み合わせは高い確率で描けている。
![output_14_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/80a789b1-cbef-14d4-2cda-1513e921e127.png)


## eDiff-I出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/39337816-304c-8ffb-c4d5-fc6c3578feb3.png)

# [Imagen](https://arxiv.org/pdf/2205.11487.pdf)のprompt
ここから論文中の出力は転載しないので元論文を参照ください。

## 'Hovering cow abducting aliens.'
問題なし。
![output_19_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/8a926d9d-0fcb-7c58-4b63-7016c9ca991f.png)

## 'Greek statue of a man tripping over a cat.'
問題なし。
![output_20_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/439cf2f0-5aeb-d6b3-28d9-042a3f3b506e.png)

## 'yellow book and a red vase.'
黄色い本と赤い花瓶の指定は出来てない。Imagenは出来る。
![output_21_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/c456476d-15da-befa-1e59-3f751dcc48c7.png)

## 'A black apple and a green backpack.'
黒いリンゴと緑のリュックの指定は出来てない。Imagenは出来る。
![output_22_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/4804901d-6363-857f-8bd1-0b3acec45dcd.png)

## 'A horse riding an astronaut.'
引っかけ問題。「宇宙飛行士に乗る馬」は書けない。
![output_23_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/9c7bada2-df34-f6f2-5f7e-e2fde92c944a.png)

## 'A panda making latte art.'
問題なし。
DALL-E2だと「パンダのラテアート」が描かれる。
![output_24_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/944dfd57-2703-bbf3-5d50-90f735cd4b5a.png)

## 'A couple of glasses are sitting on a table.'
問題なし。
DALL-E2だと「眼鏡」が描かれる。
![output_25_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/7e627f79-51fd-7aef-4b43-174d8ce0b6d1.png)

## 'A cube made of brick. A cube with the texture of brick.'
レンガで作られた立方体はあまり書けてない。
![output_26_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/ef1a6cd0-a761-9161-68b0-36b57da5f177.png)

## 'New York Skyline with Hello World written with fireworks on the sky.'
Imagenの出力に比べると、文字の精度は微妙。
![output_27_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/494530fd-9610-024e-db0d-3704b53e3853.png)

## 'A storefront with Text to Image written on it.'
看板に「Text to Image」と書けていない。
![output2_00_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/ba554af5-b5a7-a359-fae8-c0b9a83f205d.png)

## 'A storefront with "Text to Image" written on it.'
「Text to Image」の前後を"で囲うと改善した。
![output3_00_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/13c6c9f3-fbce-1aa0-4c8f-9df1c955b772.png)

# [Parti](https://arxiv.org/pdf/2206.10789.pdf)のprompt

## 'A portrait photo of a kangaroo wearing an orange hoodie and blue sunglasses standing on the grass in front of the Sydney Opera House holding a sign on the chest that says Welcome Friends!'
出力を選べば「Welcome Friends」は書ける。
![output_28_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/7a5beb3d-16eb-c3bc-adcd-872e644ae09a.png)

## 'A green sign that says "Very Deep Learning" and is at the edge of the Grand Canyon. Puffy white clouds are in the sky.'
「Very Deep Learning」は誤字多い。「valley」との混同を狙っているのだろうか。
[SDXLの論文](https://arxiv.org/pdf/2307.01952.pdf)12ページの出力よりも平均で悪い気がする。
![output_29_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/d6a0fc0a-6d03-34fd-2d70-f13ee89b9dc0.png)

## 'A blue Porsche 356 parked in front of a yellow brick wall.'
ポルシェ356を知らないので合っているか不明。
![output_30_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/07e3fa39-db59-adc3-ea38-5b6d412a3c21.png)


## 'A photo of an astronaut riding a horse in the forest. There is a river in front of them with water lilies.'
問題なし。
![output_31_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/11308ab6-8ee0-5fee-8727-a06e20a22c19.png)

## 'A map of the United States made out of sushi. It is on a table next to a glass of red wine.'
問題なし。
![output_32_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/7cc40165-c650-a9ca-7e40-54f2a9df61e7.png)

# [Muse](https://arxiv.org/pdf/2301.00704.pdf)のprompt
## 'A high contrast portrait of very happy fuzzy panda dressed as a chef in a high end kitchen marking dough. There is  painting of flowers on the wall behind him.'
問題ないがごちゃごちゃしている印象。
![output_33_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/7f072357-38d4-a51e-34bf-cca8c519959a.png)

## 'Rainbow coloured penguin.'
問題なし。colorはアメリカ英語で、colourはイギリス英語らしい。
![output_34_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/573f3349-8220-631c-f208-6c27990cb49a.png)

## 'A stack of 3 books. A green book is on the top, sitting on a red book. The red book is in the middle sitting on a blue book. The blue book is on the bottom.'
位置の指定は難しい。
![output_35_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/20569a3b-0b8c-9ccc-48a1-0f82b5c2ae83.png)

## 'A real flamingo reading a large open book. a big stack of is piled up next to it. dslr photograph'
問題なし。
![output_36_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/02a47f61-b4c9-477f-7a10-596230e31b8d.png)

## 'A storefront with "Google Research Cafe" written on it.'
前述の'A storefront with Text to Image written on it.'と類似。色合いが「Google」っぽい。
![output_37_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/c1b4c65e-84e5-dc7f-72c4-cba7c0167686.png)

# その他：
ほか、いくつか試した。
論文中のベンチマークの[PartiPrompts](https://github.com/google-research/parti/blob/main/PartiPrompts.tsv)は試す余力がなかった。

## 'an armchair in the shape of an avocado'
問題なし。
![output4_00_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/ac59b6c6-3d84-57c6-ce64-beab580a3b7a.png)

## 'an illustration of a baby daikon radish in a tutu walking a dog'
「大根」が書けてない。
![output4_01_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/955c462f-b17c-8907-2e01-1845834684bc.png)

## 'a hedgehog using a calculator'
電卓が少し歪。
![output4_02_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/1409da5b-3733-5cf5-c794-ca3f017f695a.png)

## 'a corgi wearing a red bowtie and a purple party hat'
「赤い蝶ネクタイ」が書けてない。
![output4_03_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/1082fdfb-d596-c9c1-0d35-ede1d5947a33.png)

## 'a stained glass window of a panda eating bamboo'
問題なし。
![output4_04_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/94a71425-fe93-870e-09ba-a79128855076.png)

## 'a close up of a handpalm with leaves growing from it'
手の構造は再現出来てない。
![output4_05_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/612acd7d-6927-8e05-9a7f-29f4d30f40d2.png)

## 'A teddybear on a skateboard in Times Square.'
問題なし。
![output4_06_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/187f2c8d-2b9e-f75f-4fac-d991c1bd9cde.png)


# まとめ
・一個のオブジェクトに対する細かい衣装の指定は2~3個程度なら問題ない。
・異なる二個のオブジェクト(犬と猫、ライオンとパンダ)はたまに特徴が混じる。
・等しい二個のオブジェクトに対して、同じ指定は反映されるが異なる指定は反映されにくい。
・複数オブジェクトの色の指定、位置の指定は難しい。
・文字を書く場合、""で囲うと改善する事がある。
・eDiff-I、ImagenのT5-XXL採用モデルの方がテキスト記述性能は高いが、SDXLはSD1よりは向上しているように見える。



# [SDXL](https://arxiv.org/pdf/2307.01952.pdf)への個人的所感
**以下はSDXLのモデルに対する個人の感想なので興味のない方は飛ばしてください。**

SDXLはUnetの構成もSD1やSD2と異なっているらしいが、そこについてはあまりよく知らない。
BaseモデルとRefinerモデルで分かれているのはeDiff-Iにおけるexpert modelsなのか、SD2 upscaler的なものなのか分かってない。Refinerモデルの方がBaseモデルより若干Unetのサイズが小さいようである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/6c11f524-69bc-717f-61be-3b5d83ba1d45.png)


「学習画像サイズ」と「TextEncoder」に対する違いを追う。
**・SD1-1**
学習画像サイズは256x256。TextEncoderはCLIP(OpenAI)のTextEncoder(次元768)
**・SD1-4**
学習画像サイズは512x512。TextEncoderはCLIP(OpenAI)のTextEncoder(次元768)
**・Novel AI(NAI…SD1-4系派生)**
学習画像サイズは768x768+bucket。TextEncoderはCLIP(OpenAI)のTextEncoder(次元768)
**・SD2**
学習画像サイズは512x512, 768x768。TextEncoderはOpenCLIP(LAION)のTextEncoder(次元1024)
**・SDXL**
学習画像サイズは1024x1024+bucket。TextEncoderはCLIP(OpenAI)のTextEncoder(次元768)+OpenCLIP(LAION)のTextEncoder(次元1280)。合計次元2048。

OpenAIの開発したCLIPとLAIONの開発したOpenCLIPは別物である。
学習画像サイズとTextEncoderの次元には関連はない。
bucket学習（アスペクト比の異なる学習）は実は結構前(NAI)から提唱されていた。これを適用すると縦長の画像で頭部が途中で切れるという現象が起きにくくなる。
1024x1024+bucketは学習画像は512x2048～2048x512である。


eDiff-I、Imagen、Parti、MuseのTextEncoderを述べると
**・eDiff-I**
CLIP(OpenAI)とT5-XXL(Google)
**・Imagen**
T5-XXL(Google)のみ。
T5-XXLは次元4096相当のTransformerだが、完全にLLM(言語モデル)であってCLIPのような画像との紐づけはない。
**・Parti**
EncoderがTextEncoder相当。
次元は4096だがトータルパラメータは20Bでfp32だと80GBのモデルサイズ。
従ってフルモデルを一般PCでは動かすのは困難と思われる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/f67a815d-4c7d-3964-ccfa-80f9877eaf62.png)
**・Muse**
T5-XXL(Google)のみ。
生成速度はParti-3BやLDM(SD)よりも速い。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/adbbf17e-9ded-baaf-7338-e4906292d923.png)
一方でFIDではMuseはSDを上回っているものの、Imagen、Parti、eDiff-Iより劣る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299928/cd0d792e-52bd-8f6e-60b4-413927740bf6.png)

・eDiff-I、Imagen、MuseでいずれもT5-XXLのTextEncoderの使用が見られたので、SDXLでも使用されるのかと予想していたが、自分の予想に反してT5-XXLは使われなかった。
・SD2.0のフィルタリングした性能低下もあって、OpenCLIP自体を一時期懐疑的に思ったが、SDXLの結果で見る限りは今のところは良いようだ。
・優秀なTextEncoderは「猫の特徴は四足歩行で、猫耳で、ひげがあり、毛がふさふさで、毛色は…」のようにテキストを多くの特徴量に分解できるTextEncoderであると思っている。
個人的にCLIPの精度が等しいならImageEncoderが賢ければ賢いほど(画像から特徴量抽出して更に余った部分で分類問題も学習されるため)、CLIPのTextEncoderは相対的に馬鹿になる（テキストの単語の特徴量を分解できず。単語のトートロジーしか返さない(猫の特徴は猫である)）のではと思っている。
SDXLに使われるOpenCLIPのImageEncoderはViT-bigGだがImageEncoderが優秀だからと言ってTextEncoderが優秀とは限らないのではないか。
・現時点の最強LLMはChatGPT4(パラメータ数は220B×8)だと思うが、これ（または相当モデル）をTextEncoderとして無料で使える日は来るのだろうか。
ちなみにGPT3(Davinci)の時点でパラメータは175B(次元12288)のサイズである。GPT3(Curie)はパラメータ6.7B(次元4096)でT5-XXL(5.5B、次元4096相当)と大差ない。2023/08時点ではLlama2(70B)が公開されてるLLMで最大だと思われる。