1. はじめに
法政大学情報科学研究科修士1年の立川駿と申します!大学院ではCGや深層学習を研究しており、研究テーマとの親和性が高いことから、SansanのR&Dインターンに参加しました。インターンでは社内イラスト生成のAI開発に取り組みましたので、企業のAI活用事例として共有します。
2. 背景
Sansanイラスト制作の課題

Sansanのホームページやパンフレットに載っているイラストを見たことがあるでしょうか?ミニマルな手書き風デザインと紺色を基調としたカラーパレットが特徴的ですが、このイラスト(以降、Sansanイラストと呼ぶ)の制作工数が社内で課題となっていました。
課題をより明確にするためのヒアリングを行ったところ、特に以下の太字で示した上流工程がボトルネックとなっていることが判明しました。原因は、プロダクトなどの依頼側と実際にイラストを描くデザイナーの間でイメージが乖離していることです。特に抽象的で複雑なテーマでは構図が決まるまでに時間を要し、完成イラストのクオリティに注力できないという現状があります。

また、Sansanイラストを担当できる人数が多くないため、外部パートナーと連携しながら制作を進めています。その場合、外注先とSansanのデザイナー間でもすり合わせが発生するため、社内制作の2〜3倍の時間がかかります。そこで議論されたのが、イラスト生成AIの活用です。
目標:Sansanイラスト制作をAIツールからスタートさせる
つまり、これまでラフを用いていたデザインのすり合わせを、AIツールに置き換えます。これにより次の効果が期待されます。
- デザイナーが構図決めで何度もラフを描く必要がなくなる
- 依頼者が絵を描けなくても、デザイナーにイラストの雰囲気を伝えられる
- デザイナーを介さず外注できる
3. 詳細
Sansanイラスト生成において満たすべき要件
実際にデザイナー間で絵柄に関する明確な定義はありませんでしたが、デザイナーの方との打ち合わせで次のような特徴を要件としました。
- ミニマルでデフォルメなタッチ
- 白い背景とカラーパレットに沿った色(下図参照)
- 構図が画面端で見切れずに、中心に集まっている
- 筆圧感のある線

SDXLベースのLoRA学習
インターンが始まる前に取り組まれていた内容として、StableDiffusionXL[1]を用いたLoRA学習[2]がありました。LoRAは元のモデルの重みをそのまま固定しつつ追加の小さな行列だけを学習する手法で、SDXLの表現力を残しつつ、数十から数百枚の画像でスタイルの学習が可能です。
データセットには、これまでに描かれたSansanイラスト128種類と、それらを説明するプロンプトを用いました。また、各プロンプトの文頭にはSansan illustrationが共通して入っており、これがLoRAのスタイルを呼び出すトリガーワードとなっています。トリガーワードとは学習対象である絵柄の特徴を圧縮した、すべての学習データに含まれる特定の文字列のことで、この文字列をプロンプトに加えることでLoRAがスタイルを呼び出すことができます。
実験の結果、画像のように期待した絵柄とは程遠い結果が得られています。理由は、テキストエンコーダーに採用されているCLIP[3]が77tokenしか入力を受け付けられず、キャプション形式のプロンプトに適していないからです。その上、SDXLでより良い画像を生成するためにはネガティブプロンプトも正確に入力する必要がありますが、タグベースのプロンプトやネガティブプロンプトを入力するのはユーザーの使用難易度をあげてしまいます。

FLUX.1ベースのLoRA学習
そこで私が取り組んだのはFLUX.1[4]をベースとしたLoRA学習です。FLUX.1はSDXLの倍近い120億パラメータを有し、テキストエンコーダーにT5xxl[5]を採用していることから512tokenのプロンプトを受け付けます。また、ネガティブプロンプトも不要です。
FLUX.1にはschnellモデルとdevモデルがあります。schnellは少ないステップ数で生成することに優れており、devはより自然で品質の高い画像生成を可能としています。通常の画像生成では差がわかりづらいですが、次のようなシンプルなイラストではdevがプロンプトのスタイル指定に忠実に従っていることがわかります。

よって今回のインターンではdevモデルを使用することにしました。ただし、devはモデル自体の商用利用は不可なので利用には注意が必要です。
データセットはSDXLの実験と同様で、train:test = 9:1に分割してAI-toolkitを用いて学習しました。以下はテストデータに対する推論結果です。

minimalやtwo dot eyesなど特定の共通プロンプトを持つ画像が精度良く生成されていることがわかります。これはトリガーワードに特徴が圧縮されていないことが原因です。我々の学習データには、トリガーワードとなるSansan illustration以外にも共通して入っているプロンプトが多すぎるせいで、絵柄の特徴(色合いや線など)がそちらに分散してしまいます。そこで、文頭のトリガーワード以外に、The facial features are minimal, with only two small dots for eyes. The illustration is drawn in a minimal, hand-drawn blue line art style.というプロンプトをデフォルトで末尾に追加するようにしました。
次に、ユーザースタディとして実際にデザイナーの方にプロンプトを考えていただき、生成結果に対するフィードバックをもらうという実験をしました。

フィードバックでは今までにないようなシチュエーションで生成できたことに感動している声が多かった他、シード値によって構図が変わるためバリエーションとして参考になるという声がありました。
しかしながら、「色味が若干カラーパレットと異なる」「良い構図が出たが一部分だけ修正したい時に、部分的に生成し直せない」などの意見もありました。
さらにプロンプトによる生成精度のばらつきも問題です。例えば満員電車のような複雑なシーンに対して短いプロンプトを与えてしまうと絵柄が崩れ、またデータや正規化 など抽象的で実体のないプロンプトに対して弱いこともわかりました。
カラーパレットと異なる生成への対策
ここからは課題として上がってきた意見への改善を行っていきます。
カラーパレットと異なる色合いのイラストに対して、グラデーションマップを適用して色調補正を行います。グラデーションマップとは画像やイラストの濃淡に合わせて、あらかじめ設定したグラデーションの色を置き換える機能で、イラスト制作ソフトなどに搭載されています。
Sansanイラストは線形グラデーションではなく離散的なカラーパレットが用いられているため、生成されたイラストを6階調に量子化して階調ごとにパレットカラーを適用します。また、量子化の閾値をリアルタイムに調整できるようなGUIも実装します。

画像編集モデルを用いた部分的な修正
シード値を固定したまま、部分的にイラストを修正できるようにするため、今回は最新の画像編集モデルであるQwen-Image-Edit[6]を検証しました。Qwen-Image-Editは入力画像をQwen2.5-VLとVAEエンコーダに同時に入力することで、セマンティック編集とアピアランス編集の両方の機能を実現します。検証では我々のLoRAモデルを用いて生成した画像に対して、実際にデザイナーが気になった箇所を修正しました。
画像のように自然な修正ができていることが分かります。今回はGPUのリソースの問題でFLUX.1とQwenの両方をAPIに組み込むことが難しかったため検証止まりでしたが、量子化などを行えばすぐに搭載可能なレベルであると感じました。

プロンプトによる崩れへの対策
例えば短いプロンプトを入力した際に崩れてしまうようなイラストを、もっともらしい構図で生成し直すための推論パラメータについて考察しました。
推論パラメータにはCFGスケールとJointAttentionスケールがあります。CFGスケールはプロンプトにどれだけ従うかを、JointAttentionスケールはLoRAスタイルの適用度合いを決めます。次の図は短いプロンプトによって生成された画像で、絵柄が崩れる場合はJointAttentionスケールを下げてCFGスケールを上げることで、絵柄を無視した正しい構図の生成が可能だということがわかりました(下図右上)。

APIの実装
画像の部分編集機能を除く、ここまでの改善を反映したAPIを社内リリースしました。UIには先述した色調補正機能やパラメータ調節機能があります。今回はリソースの関係で画像編集モデルは搭載していませんが、代わりにこれまで生成した画像とそのシードやプロンプトを履歴として表示するUIを実装しました。

4. 最終評価
デザイナーからの評価
以下にデザイナーからの評価をまとめておきます。所感としては技術的なインパクトが大きく、好評価を得ることができました。一方で実際に実務活用する上での課題も見えてきたため、キャッチアップしていく必要があります。
- ポジティブな意見
- 社内のクオリティ要件が低いものに関しては修正なしで使えるレベル
- 想像していたイラストが生成されずとも構図の参考になるのでかなり有用
- 動画の絵コンテとしても使えそう
- 絵が描けなくても最初からイメージの湧きやすい下絵を渡せる
- カラーパレットに沿った調整ができて良い
- シード値をコピーできるのがありがたい
- ネガティブな意見
- プロンプトによって良いシードが出るまで10~20回生成する必要がある
- 細かい絵柄の再現ができていない(メガネの中に目を描かないなど)
- シード値を保持した状態で部分的な修正ができない
- SVGで出力されると修正しやすい
実務活用事例
実際に、プロダクトサイトに載せるイラストの制作に今回のAIツールを使っていただきました。
- 使用者:Sansanイラストが描けるデザイナー
- 通常の作業行程
- 構図案出し→ラフ→清書
- AIツールを用いた作業工程
- プロンプト作成→いい構図が出るまで生成→清書
- 結果:シンプルな構図で5~10分程度の時間削減に成功
ラフを描く工程がなくなったことで制作時間を削減できました。一方で所望の構図が出るまでランダムシードで何度も生成しなくてはいけない部分がボトルネックとなっており、大幅な削減には至っていません。
今後プロダクト側からの依頼工程で使ってもらったり、難しい構図やテーマのイラスト制作では、より多くの工数削減が見込まれます。

5. 最後に
今回のインターンでは「Sansanイラスト制作をAIツールからスタートさせる」を目標に次の手順でAIイラスト制作ツールを開発しました。
- 目標設定フェーズ
- 課題と要望のヒアリングや要件定義
- モデル開発フェーズ
- FLUX.1-devをベースとしたLoRA学習、プロンプトに関する調査や軽量化モデルなどの比較
- API実装&アップデートフェーズ
- APIの実装、ヒアリングによる追加機能の提案、色調補正の実装&画像編集モデルの検証
- レビューフェーズ
- APIの公開とユーザーからのヒアリング、実務活用の依頼
結果、イラスト制作の工数削減を実現し、従来のクリエイティブフローが抱える問題を解消する糸口となりました。今後の目標としてプロンプトによる生成精度のばらつきや、モデルサイズ問題などの解消が必要です。
インターンを通しての感想
今回のインターンでの取り組みの中で、AIとデザイナーの関わり方について考えさせられることが多くありました。
「人間的な良さがなくなってしまうのではないか?」
「つくることの楽しさとAI活用をどう両立していくのか?」
Sansanだけでなく、どの企業でも向き合わなくてはいけない問題だと思います。自分自身も過去にデザイナーを志望していた身としてジレンマを抱えていましたが、デザイナーの方が、
「時間がかかっていた作業を自動化できて、他の制作に集中できる」
「クリエイティブに長年蓄積された課題を解決する糸口になった」
など、喜んでいる姿を見て何か霧が晴れたような気持ちになりました。改めて、部署を飛び越えての貴重な体験をさせてくださったSansan及び、協力してくださったデザイナーやメンターの方に心から感謝を申し上げます。これからも、人のアイデアを最大化するAI研究ができれば良いなと思っています!
*1: SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis
*2: LoRA: Low-Rank Adaptation of Large Language Models
*3: Learning Transferable Visual Models From Natural Language Supervision
*4: FLUX