見出し画像

【画像生成AI】 CLIP と T5xxl って何? テキストエンコーダーでイラストがこんなに綺麗になる!

はじめに

こんにちは、きまま / Easygoing です。

今日は 画像生成AI のテキストエンコーダーについて考えます。

テキストエンコーダーは辞書

AI は、私たち入力したテキストを、機械が分かる形に変えて理解しています。

画像生成AIのテキストエンコーダーの働きを示したフローチャート

この翻訳をするのがテキストエンコーダーで、その働きは 人間語を機械語に翻訳する辞書 にあたります。

画像生成AI でテキストエンコーダーを変更すると、画質はどのように変わるのでしょうか?

実際の画像を比較!

それでは、新しい 画像生成AI の Flux.1 で実際に画像がどのように変わるかを見てみます。

Flux.1 には、2種類のテキストエンコーダーが搭載されています。

Flux1のテキストエンコーダーのフローチャート
  • T5xxl:主にプロンプトの文脈を理解

  • CLIP-L:主に短文・単語を理解

今回は、この T5xxl と CLIP-L をより精度の高いものに変えてみます。

T5xxl-FP16 + CLIP-L-FP16(オリジナル)

T5xxlと書かれた黒板を持った女の子のアニメイラスト

Flan-T5xxl-FP16 + CLIP-L-FP16

Flan PP16と書かれた黒板を持った女の子のアニメイラスト
プロンプトの再現性が良くなる

Flan-T5xxl-FP32 + CLIP-L-FP32

Flan PP32 と書かれた黒板を持った女の子のアニメイラスト
画質が改善

Flan-T5xxl-FP32 + CLIP-GmP-ViT-L-14-FP32

Flan PP32 と書かれた黒板を持った女の子のアニメイラスト2
背景の描きこみが増える

Flan-T5xxl-FP32 + Long-CLIP-GmP-ViT-L-14-FP32

Flan PP32 と書かれた黒板を持った女の子のアニメイラスト3
さらに描きこみが増える

今回利用したしたテキストエンコーダーは、下にあるものほど性能が良くなります。

テキストエンコーダーを変えると、特に 右側の建物のディティール が細かくなり、画質が向上しているのが分かります。

なお、一番下の Long-Clip-L モデルは ComfyUI で利用できますが、Stable Diffusion webUI Forge では利用することはできません。

また、FP32 形式のテキストエンコーダーを使うには、後述の --fp32-text-enc 設定が必要です。

テキストエンコーダーを詳しく見ていこう

それでは、テキストエンコーダーをもう少し詳しく見ていきます。

まず、主な画像生成AI に搭載されているテキストエンコーダーは次のようになります。

Stable Diffusion 1, Stable Diffusion XL, Stable Diffusion 3, Flux1 のテキストエンコーダーを示したフローチャート

T5xxl と CLIP がテキストエンコーダーで、 UNET と Transformer は解析した情報をもとに画像を生成する部分です。

CLIP はすべての基本

CLIP は、OpenAI が開発した文章と画像の両方を理解できる AI です。

CLIP をオープンソースでリバースエンジニアリングして開発されたのが Open-CLIP で、現在は Open-CLIP を短縮して CLIP と呼称することが多くなっています。

CLIP には、性能に応じて次の種類があります。

CLIP-Lの登場年月と性能の表

CLIP-L は CLIP-B の性能向上型で、多くの画像生成AI は CLIP-L を搭載 しています。

Long-CLIP-L は CILP-L を長文も理解できるように改良したモデルです。

CLIP-G は CLIP-L よりパラメータ数を増やして全般の性能を向上させたモデルで、トークン数は変わらないものの、重要な要素を強調して再現することにより 200語以上の長文プロンプト も理解できるようになりました。

T5xxl は文脈を理解する

T5xxl は Google が開発したテキストからテキストを生成するモデルで、AIチャット や 翻訳AI など、今日の AIサービスの基本技術になっています。

T5xxl は理論上は非常に長い文章を扱うことができますが、それでも 長文になるにつれて精度は低下 します。

T5xxlの登場年月と性能の表

T5xxl v1.1 と Flan-T5xxl はパラメーター数は変化していませんが、効率的な追加学習を行ったことにより全体の精度が上がっています。

テキストエンコーダーは増えている

新しい 画像生成AI は、プロンプトの理解の精度を上げるために、複数のテキストエンコーダーが搭載されるようになっています。

Stable Diffusuin 1:単語・短文で理解

Stable Diffusion 1 のテキストエンコーダーのフローチャート

2022年7月に登場した Stable Diffusion 1 は、テキストエンコーダーとして CLIP-L を使用していました。

CLIP-L は理解できるトークン数が少なかったので、プロンプトは 単語で区切って短く書く、また 重要なキーワードは最初に書く などの工夫が必要でした。

Stable Diffusion XL:長文を理解

Stable Diffusion XL のテキストエンコーダーのフローチャート

2023年7月に登場した Stable Diffusion XL は、テキストエンコーダーを従来の CLIP-L に加えて新しく CLIP-G も搭載しました。

CLIP-G は CLIP-L より性能が高く、さらに長い文章も理解できるようになり、プロンプトを 自然言語の長文 で入力できるようになりました。

女の子が鳥の巣の中を覗き込んでいるアニメイラスト

SDXL モデルの容量は 7GBですが、CLIP-G をはじめとしたテキストエンコーダーはそのうち 1.8 GB を占めていて、SDXL がプロンプトの理解を重視していることが分かります。

Stable Diffusion 3:文脈を理解

Stable Diffusion 3 のテキストエンコーダーのフローチャート

2024年 6月に登場した Stable Diffusion 3 は、CLIP-L と CLIP-G に加えて新たに T5xxl も搭載することで、文章の理解力が向上しました。

T5xxl は高性能ですが、その分容量も大きく、エンコーダー部分だけでもサイズが 9GB もあります。

スズメが電線から羽ばたいているアニメイラスト

テキストエンコーダーが巨大化したことで、Stable Diffusion 3 から テキストエンコーダーを全体と分けて運用する のが一般的になりました。

Flux.1:CLIP-G が搭載されていない

Flux1 のテキストエンコーダーのフローチャート

2024年8月に登場した Flux.1 は、テキストエンコーダーは CLIP-L と T5xxl の 2つになっていて、CLIP-G は搭載されていません。

これはおそらく、CLIP-G の機能は T5xxl で十分にカバーできるという考えから来ているのだと思います。

複数の画像生成AIのプロンプトの再現性と画質を比較したグラフ
https://stability.ai/news/introducing-stable-diffusion-3-5

CLIP-G の有無から、Stability AI 社は Stable Diffusion 3.5 が Flux.1 よりも言語理解に優れていると主張していますが、実際のところ Flux.1 でプロンプトの理解力の不足を感じる場面はほとんどありません

なお、前世代の CLIP-G でも、長文のプロンプトを入力しても実用上の理解力は十分 にあります。

改良型のテキストエンコーダー!

それでは、今回利用した改良型のテキストエンコーダーのリンクを紹介します。

改良型 CLIP-L

CLIP-GmP-ViT-L-14

CLIP-GmP-ViT-L-14 は、Zer0int 氏が個人が開発して無償で公開しているCLIP-L の改良モデルです。

開発の理由は CLIP が好きだから だそうで、自宅の PC で RTX 4090 を使ってトレーニングをしているそうです。

CLIP-GmP-ViT-L-14 は Global mean Pooling(GmP:幾何学的パラメータ化)という方法で従来の CLIP-L より精度を高めていて、ImageNet / ObjectNet というベンチマークで、オリジナルの CLIP-L の正答率 85% に対して 正答率が 90% と大きく性能が向上しています。

Zer0int 氏によると、CLIP-GmP-ViT-L-14 は CLIP-L の 画像理解における過度なこだわり が改善しているそうです。

CLIP-ViT-L-14 と CLIP-GmP-ViT-L-14 の画像認識を比較した図
https://github.com/zer0int/CLIP-fine-tune

CLIP-GmP-ViT-L-14 のダウンロードページには複数のファイルがありますが、オリジナルの FP32版に加えて、さらに改良を行った ViT-L-14-BEST-smooth-GmP-TE-only-HF-format.safetensors の FP16 版も公開されています。

CLIP-GmP-ViT-L-14 のHuggingFace のダウンロードページ

どれを使うか迷ったら、この FP16版をダウンロードすれば良いでしょう。

Long-CLIP-GmP-ViT-L-14 (ComfyUI のみ)

Long-CLIP-L は、標準の CLIP-L モデルの 77トークン という制限を拡張して、最大248トークンの入力に対応できるように改良したモデルで、これにより CLIP-L でも長いプロンプトにも対応できるようになっています。

今のところ Long-CLIP-L を使えるのは ComfyUI のみ で、Stable Diffusion webUI Forge では利用することができません。

LongCLIP-GmP-ViT-L-14のHuggingFace のダウンロードページ

ダウンロードページには、オリジナルの FP32版に加えて、FP16 は性能向上版の Long-ViT-L-14-BEST-GmP-smooth-ft.safetensors も配布されています。

2024.12.31 追記

改良型 CLIP-L の効果を実際の画像で比較してみました。

Flan-T5xxl (改良型T5xxl)

次は T5xxl の改良型です。Flan-T5xxl は、通常のT5xxl に追加学習を行なって、精度を上げたモデルです。

Flan-T5xxl オリジナル(分割版)

Google が公開しているオリジナルの Flan-T5xxl は、容量が大きいため分割して配布されています(FP32形式は 44GB)。

Flan-T5xxl 結合版

オリジナルをもとに、画像生成AI で使えるように結合したファイルです。

単純な結合版のほかに、Flux.1 / SD 3.5 で使用するテキストエンコーダー部分のみを抽出した TE-only 版も配布しています。

Flan-T5xxl モデルの使い方

配布形式は、FP32、FP16、 GGUF 形式を配布しています。

FP32 形式のテキストエンコーダーを使用する

テキストエンコーダーは、通常は FP16 形式で処理が行われます。

FP32形式のテキストエンコーダーを使うときは、起動時に設定が必要になります。

ここでは、Stability Matrix での設定方法をご紹介します。

ComfyUI

起動時に --fp32-text-enc を設定します。

ComfyUI の起動オプションの --fp32-text-enc の設定方法

Stable Diffusion webUI Forge

起動時に --clip-in-fp32 を設定します。

Screenshot of Stability Matrix's Stable Diffusion webUI Forge's --clip-in-fp32 boot configuration

SDXL はテキストエンコーダーのアップグレードが難しい

今回は、Flux.1 でテキストエンコーダーをアップグレードしてみました。

Flux.1 と SD 3.5 はテキストエンコーダーを分けて運用しているので簡単にアップグレードすることができますが、SDXL と SD 1.5 は本体に結合 されているのでアップグレードはやや難しくなります。

この点については、次回改めて記事にしたいと思います!

まとめ:テキストエンコーダーを変えてみよう!

  • CLIP は文字をベクトルに変換する

  • T5xxl は文脈を理解する

  • 改良型のテキストエンコーダーが公開されている

雨上がりの道路の上にスズメがいるアニメイラスト

画像生成のクオリティーについて考えるとき、画像を生成するトランスフォーマー部分に注目して、テキストエンコーダーは後回しにすることが多かったと思います。

今回の検証で、テキストエンコーダーもかなり画質に影響を与えている ことが分かりました。

スズメが電線の上にとまっているアニメイラスト

今回ご紹介した 改良型 CLIP-L は、小さな容量にも関わらず明らかに画質が改善するので、みなさんも一度試してみることをお勧めします。 

最後までお読みいただきありがとうございます!


クリエイター紹介

さて、今回ご紹介するクリエイターは Shiki さんです。Shiki さんはかわいい猫耳のキャラクターと、きれいな色使いで独自の世界を表現されています。

イラストは、Leonardo AI をで画像を生成したあと、Google フォトアプリで色を調整して仕上げているそうです。

色の表現でイラストの印象は大きく変わってきます。特にきれいな肌色の表現は必見です!


Flan-T5xxl と T5xxl_v1.1 の比較記事の紹介

matataByy さんが、Flan-T5xxl と T5xxl_v1.1 を含めて T5xxl を詳細に比較する記事を公開されました。

それによると、

  • プロンプトの理解力は Flan-T5xxl-FP32 が良い傾向にある

  • Flux.1[dev] より Flux.1[shnell] の方がプロンプトの追従性が良い

のようです。皆様もぜひ一度ご確認ください!


更新履歴

2025.8.12

記事の内容を一部修正しました

2025.4.20

Stable Diffusion webUI Forge の FP32 形式 のテキストエンコーダーの起動方法を追記しました

2025.3.9

Flan-T5xxl_TE-only の公開に伴い記事を一部修正しました

2025.1.12

matataByy さんの記事の紹介を追加しました

2024.12.15

ComfyUI の FP32 形式 のテキストエンコーダーの使用法を追記しました


English Article


いいなと思ったら応援しよう!