Stable Diffusionで表情だけ変える方法
Stable Diffusionで表情だけ変える方法を探しているあなたは、キャラクターの顔や髪型は維持したまま、笑顔、泣き顔、怒り顔、口を開けた表情などの表情差分だけを作りたいと感じているのではないでしょうか。ここ、かなり気になりますよね。せっかく良い画像ができても、通常のプロンプト変更だけでは構図や服装まで変わってしまうことがあり、「表情だけ変えたいのに、なぜか別人になる」という壁にぶつかりやすいです。
この記事では、ADetailer、Inpaint、Seed値、プロンプト、ネガティブプロンプト、face_yolov8n、mediapipe_face_full、Denoising strength、ControlNet、Reference Only、Dynamic Promptsなど、Stable Diffusionで表情だけ変えるときに関係する要素を整理しながら、初心者でも迷いにくい手順で解説します。
読み終えるころには、どの方法を使えば表情差分を作りやすいのか、どの設定を固定すればキャラクターが変わりにくいのか、表情が崩れたときにどこを調整すればよいのかが判断しやすくなります。あなたが作りたい表情差分に合わせて、ADetailerとInpaintをどう使い分けるべきかも自然に見えてくるはずです。
- Stable Diffusionで表情だけ変える基本手順
- ADetailerとInpaintの使い分け
- Seed値やプロンプトで同じ顔を保つコツ
- 表情差分を自然に仕上げる調整方法
Stable Diffusionで表情だけ変える方法

まずは、Stable Diffusionで表情だけを変える代表的な方法を整理します。結論から言うと、顔周辺を狙って再生成するならADetailer、自分で塗った範囲だけを細かく直すならInpaintが使いやすいです。
どちらの方法でも、キャラクターを完全に固定したまま表情だけを機械的に差し替えるわけではありません。実際には、顔周辺を再生成して表情を近づける作業です。そのため、Seed値、モデル、プロンプト、ネガティブプロンプト、Denoising strengthなどをそろえることが大切になります。
特に初心者のうちは、「表情を変える=プロンプトにsmileを足すだけ」と考えがちですが、それだけでは全体の印象まで変わってしまうことがあります。安定した差分を作るには、元画像をできるだけ再現できる状態を作り、そのうえで顔周辺だけに変化を集中させるのがポイントです。
ADetailerで表情差分を作る
ADetailerは、Stable Diffusion Web UIで顔や手などを自動検出し、検出した範囲に対してInpaint処理を行う拡張機能です。顔を自動で見つけてくれるため、表情だけ変えたいときにはかなり扱いやすい方法になります。公式リポジトリでも、ADetailerはStable Diffusion Web UI向けに自動マスキングとInpaintingを行う拡張機能として説明されています。つまり、ざっくり言えば「顔などの対象を見つける」「その範囲にマスクを作る」「マスク部分を再生成する」という流れです。導入前には、最新の対応状況をADetailer公式GitHubで確認しておくと安心ですよ。
表情だけを変えたい場合、ADetailerはかなり相性が良いです。なぜなら、顔の位置を自動で検出してくれるため、Inpaintのように毎回ブラシで顔を塗る必要が少なくなるからです。特に、同じキャラクターで笑顔、悲しみ、怒り、不安、驚きなどの表情差分を複数作りたいときに便利です。立ち絵、SNSアイコン、動画素材、ゲーム用キャラ素材のように、同じ人物の表情パターンをそろえたい場面では、作業時間をかなり短縮できます。
ADetailerの基本的な考え方
ADetailerを使うときに大切なのは、通常の画像生成とは別に、顔周辺をもう一度描き直しているという意識です。元画像を生成したあと、ADetailerが顔を検出し、その部分だけに対して追加のプロンプトを反映します。そのため、通常のプロンプト全体を書き換えるよりも、キャラクターの服装や背景を大きく変えずに表情へ変化を寄せやすくなります。
ただし、完全に表情だけが差し替わるわけではありません。顔の輪郭、前髪、頬の塗り、目元の形、肌の質感なども多少変わる可能性があります。ここは誤解しやすいポイントです。Stable Diffusionは画像を部品単位で差し替えているのではなく、指定範囲を再生成しているため、変化の幅をどこまで許容するかを見ながら調整する必要があります。
- キャラクターの顔だけを自然に補正したい
- 同じSeed値で複数の表情差分を作りたい
- 顔を塗る作業をできるだけ省きたい
- アニメ系と実写系の両方で顔補正を試したい
- 大量の差分を効率よく作りたい
- 小さく写った顔の崩れも同時に整えたい
基本的な流れは、まず元画像を生成し、気に入った画像のSeed値を固定します。そのうえでADetailerを有効化し、顔検出モデルを選び、ADetailer promptにsad、smile、angry、surprised、cryingなどの表情プロンプトを入れて再生成します。このとき、元画像のプロンプト、ネガティブプロンプト、モデル、画像サイズ、サンプラーなどは可能な限り同じにしておくのがおすすめです。
ここで重要なのは、通常のプロンプト欄ではなく、ADetailer prompt側に変えたい表情を入れることです。通常のプロンプト全体を大きく変えてしまうと、服装、構図、背景、髪型まで変化しやすくなります。顔周辺だけに変化を寄せるためには、ADetailerの対象範囲に表情指示を集めるのが扱いやすいです。
| 作りたい表情 | ADetailer prompt例 | 調整のポイント |
|---|---|---|
| 自然な笑顔 | gentle smile, closed mouth | 口を大きく開けすぎず、柔らかい印象を狙う |
| 明るい笑顔 | smile, open mouth, cheerful | 歯や口元が崩れやすいので生成結果を確認する |
| 悲しい表情 | sad, teary eyes | 泣き顔にしたい場合はtearsを追加する |
| 怒った表情 | angry, frown, sharp eyes | 眉や目元の指定を追加すると伝わりやすい |
| 驚いた表情 | surprised, wide eyes, open mouth | 口と目の変化が大きくなるため崩れに注意する |
ADetailerで失敗しやすいのは、表情プロンプトを強くしすぎるケースです。smileだけでは変化が弱いからといって、強調を重ねすぎると、顔の印象が変わったり、口が不自然になったりします。まずは控えめな表情語で試し、必要に応じて目・眉・口の要素を足すと安定しやすいです。たとえば、単にangryとするより、angry, frown, sharp eyesのように分解すると、狙いが伝わりやすくなります。
また、ADetailerは便利ですが、処理が一段追加される分、通常生成より時間がかかることがあります。生成時間はGPU、画像サイズ、ステップ数、検出モデル、同時に使う拡張機能によって変わるため、「必ず何倍」とは言えません。大量に差分を作る場合は、まず低めの解像度や少ない枚数で設定を詰めてから、本番生成に進むと無駄が少ないですよ。
Inpaintで表情差分を作る

Inpaintは、画像の一部をマスクで指定し、その範囲だけを再生成する機能です。Stable Diffusionで表情だけ変える場合は、顔全体、または目・眉・口の周辺を塗ってから、表情プロンプトを追加して再生成します。ここ、ADetailerとの違いが気になりますよね。ADetailerは顔を自動検出してくれるのに対し、Inpaintはあなた自身が「ここを直してほしい」と範囲を指定する方法です。
ADetailerが自動で顔を検出するのに対して、Inpaintは自分で修正範囲を指定します。そのため、手間は増えますが、どこを変えるかを細かく制御しやすいのが強みです。たとえば、口だけを開けたい場合は口周辺だけを塗り、目元は変えたくない場合は目を塗らないようにできます。反対に、目と眉も含めて感情を出したいなら、顔の中心部を少し広めに塗ると表情としてまとまりやすくなります。
Inpaintの基本手順
手順としては、まず元画像の生成情報をPNG Infoなどで確認し、img2imgまたはInpaintへ送ります。モデル、Seed値、プロンプト、ネガティブプロンプト、画像サイズなどを可能な限り元画像とそろえたうえで、顔周辺をマスクします。そこにsmile、open mouth、closed mouth、sad、tearsなどの表情指示を加えて生成します。
PNG Infoから送れる場合は、元画像のプロンプトやSeed値を取り込みやすいので便利です。ただし、画像をJPEGに変換したり、別ソフトで加工したり、SNSにアップロードしたものを再保存したりすると、生成情報が消える場合があります。大事な画像は、生成直後のPNGと設定メモをセットで保存しておくと後から作業しやすいです。
Inpaintで注意したい点
顔全体を大きく塗りすぎると、表情だけでなく顔立ちや髪の一部まで変わることがあります。一方で、口だけなど狭く塗りすぎると、表情全体としての変化が弱くなる場合があります。最初は顔の中心部を少し広めに塗り、結果を見ながら範囲を調整するのがおすすめです。
Inpaintで表情差分を作るときは、マスク範囲がかなり重要です。口パク素材を作るなら口周辺だけ、笑顔や怒り顔など顔全体の印象を変えたいなら眉・目・口を含む範囲、涙を追加したいなら目元と頬の一部まで含める、というように目的に合わせて塗る場所を変えます。塗り方が雑でも生成はできますが、不要な髪や服まで塗ってしまうと、そこも変化する可能性があるので注意が必要です。
| 目的 | 塗る範囲 | おすすめの考え方 |
|---|---|---|
| 口パク用 | 口周辺のみ | open mouthとclosed mouthを作る |
| 笑顔差分 | 口、頬、目元 | 口角と目元を一緒に変えると自然 |
| 泣き顔差分 | 目元、頬、口 | tearsやsadを入れて頬まで調整する |
| 怒り顔差分 | 眉、目、口 | 眉と目元の変化を重視する |
| 驚き顔差分 | 目、口、眉 | wide eyesとopen mouthを組み合わせる |
Inpaintは、元画像の雰囲気を残しながら部分修正したいときに頼りになります。特に、ADetailerで意図しない顔になった場合や、口パク用にopen mouthとclosed mouthの差分を作りたい場合は、Inpaintのほうが狙いやすいことがあります。ADetailerで全体を整え、最後にInpaintで口元だけ直すという使い方もかなり実用的です。
うまくいかない場合は、いきなりプロンプトを変えるより、まずマスク範囲とDenoising strengthを見直してください。表情が変わらないなら範囲を少し広げる、別人になるなら範囲を狭める、またはDenoising strengthを下げる、という流れです。Inpaintは細かく調整できる分、設定の影響も大きいので、1回で決めようとせず小さく試すのがコツですよ。
Seed値でキャラを固定する
Stable Diffusionで表情だけ変えるときに、最初に意識したいのがSeed値です。Seed値は、画像生成のランダム性を決める重要な要素で、同じ設定を再現するための土台になります。あなたも「同じSeedにしたのに違う画像になった」という経験があるかもしれません。ここはかなりつまずきやすい部分です。
ただし、Seed値だけを同じにすれば完全に同じキャラクターになるわけではありません。モデル、VAE、サンプラー、ステップ数、CFG Scale、画像サイズ、Hires.fix、拡張機能、プロンプト、ネガティブプロンプトなどが変わると、同じSeed値でも別の画像に近づくことがあります。Seed値は再現性の中心ではありますが、あくまで複数条件のひとつです。
Seed値は固定の土台
表情差分を作るときは、まず元画像を「再現できる状態」にしておくことが大切です。元画像が再現できないまま表情だけ変えようとしても、何が原因で変わったのか分かりにくくなります。Seed値を固定し、モデルやサイズもそろえた状態で、表情に関係する部分だけを変更する。この順番が安定への近道です。
たとえば、元画像が512×768で作られているのに、差分作成時だけ768×1024に変えると、構図や顔の大きさが変わりやすくなります。サンプラーを変えたり、ステップ数を大きく変えたりしても、画像の印象は変化します。表情だけを比較したいなら、表情以外の設定はできるだけ動かさないのが基本です。
| 固定したい項目 | 理由 | 変えると起きやすいこと |
|---|---|---|
| Seed値 | 元画像のランダム性を再現しやすくするため | 構図や顔立ちが大きく変わる |
| モデル | 顔立ちや画風の変化を抑えるため | 別の絵柄、別の人物に見えやすい |
| プロンプト | 服装や背景の変化を防ぎやすくするため | 衣装、髪型、背景まで変わる |
| ネガティブプロンプト | 顔崩れや品質低下を抑えるため | 品質や表情の出方が変わる |
| 画像サイズ | 構図や人物の大きさを保つため | 人物の位置や顔の大きさが変わる |
| サンプラー | 描画の傾向をそろえるため | 質感や細部の出方が変わる |
| CFG Scale | プロンプトへの寄り方をそろえるため | 表情の強さや絵柄が変わる |
私が表情差分を作るときは、まず元画像の設定を保存し、表情に関係するプロンプトだけを変えるようにしています。特にADetailerを使う場合は、通常のプロンプトはなるべくそのままにして、ADetailer promptだけを変えるほうが安定しやすいです。Inpaintの場合も同じで、通常のプロンプトを大きく変えるより、マスクした範囲に必要な表情語だけを足すほうが狙いやすいです。
また、Seed値を固定しても、生成環境が変わると結果が微妙に変わる場合があります。Web UIのバージョン、拡張機能、使用しているGPUや設定、xformersなどの影響で、完全一致しないこともあります。ここは厳密な再現を求めすぎると疲れてしまうので、「同じ印象に寄せるための基準」として考えると扱いやすいかと思います。
- 元画像のPNGファイル
- Seed値
- 使用モデルとVAE
- プロンプトとネガティブプロンプト
- 画像サイズ
- サンプラーとステップ数
- ADetailerやControlNetの設定
同じキャラクターを維持するための考え方は、複数キャラクターの描き分けにも通じます。人物ごとの特徴を安定させたい場合は、Stable Diffusionで複数キャラを描き分ける方法も参考になります。表情差分もキャラ固定も、基本は「変えたい部分だけ変えて、それ以外は固定する」という発想が大切です。
プロンプトで笑顔を指定する

表情を変える基本は、プロンプトで感情や顔の状態を指定することです。たとえば、笑顔にしたい場合はsmile、口を開けた笑顔にしたい場合はopen mouthやlaughing、口を閉じた自然な笑顔にしたい場合はclosed mouth smileのように指定します。とはいえ、ただsmileと入れれば毎回理想の笑顔になるわけではありません。ここ、思ったより奥が深いですよ。
表情プロンプトは、モデルやLoRA、元画像の顔向き、口の大きさ、画風によって効き方が変わります。最初はシンプルな表情語から試し、必要に応じて少しずつ補足するのが安全です。いきなり強いプロンプトを入れると、表情は変わっても顔の印象まで変わることがあります。
笑顔は口だけでなく目元も大切
笑顔を自然に見せるには、口元だけでなく目元や頬の表現も大切です。open mouthだけを入れると、口は開いているのに目が無表情で、少し違和感が出ることがあります。逆に、gentle smile、relaxed eyes、soft expressionのように、全体の雰囲気を補足すると自然な笑顔に近づきやすいです。
アニメ系の場合は、smileやhappyだけでも分かりやすく反映されることがあります。一方で実写系の場合は、歯、唇、頬、目尻などの細部が目立つため、big smileやlaughingを強く入れすぎると不自然になりやすいです。実写ではnatural smile、slight smile、gentle smileのような控えめな指定から試すのがおすすめです。
- smile
- gentle smile
- natural smile
- slight smile
- open mouth
- closed mouth
- sad
- angry
- surprised
- crying, tears
- worried
表情を強く出したい場合は、プロンプトの重みを調整する方法もあります。たとえば、smileを少し強調したいときに、使用しているWeb UIの記法に合わせて重みを上げる方法です。ただし、強調しすぎると顔のバランスが崩れたり、口元だけが不自然に大きくなったりすることがあります。特にopen mouthやteethを強くしすぎると、歯の本数や口の形が破綻しやすくなるので注意です。
自然に見せたいなら、表情語を強くしすぎるより、目・眉・口の状態を分けて指定するほうが安定することがあります。たとえば、gentle smile, relaxed eyes, closed mouthのように、表情を構成する要素を分解して伝えるイメージです。怒り顔ならangryだけでなく、frown、sharp eyes、furrowed browを足す。泣き顔ならcryingだけでなく、teary eyes、sad expression、downturned mouthを組み合わせる、といった形です。
| 表情 | 単語だけの指定 | 自然に寄せる指定例 |
|---|---|---|
| 笑顔 | smile | gentle smile, relaxed eyes, closed mouth |
| 大笑い | laughing | laughing, open mouth, cheerful eyes |
| 悲しみ | sad | sad expression, teary eyes, downturned mouth |
| 怒り | angry | angry, frown, sharp eyes, furrowed brow |
| 驚き | surprised | surprised, wide eyes, slightly open mouth |
もうひとつ大事なのは、表情プロンプトをどこに入れるかです。ADetailerを使うなら、通常プロンプトではなくADetailer promptに入れるほうが、顔周辺に変化を集中させやすいです。Inpaintの場合は、マスク範囲と一緒に表情語を調整します。通常のtxt2imgだけで表情を変えようとすると、顔以外も大きく変わる可能性があるので、差分制作ではADetailerやInpaintと組み合わせるのが現実的です。
ネガティブプロンプトで崩れ防止
表情だけを変えたいのに顔が崩れる場合は、ネガティブプロンプトの見直しが有効です。Stable Diffusionでは、欲しい要素をプロンプトに入れるだけでなく、避けたい要素をネガティブプロンプトで指定することで、失敗を減らしやすくなります。表情差分では、口、歯、目、眉、輪郭の崩れが特に目立ちやすいです。ここ、気になりますよね。
顔周辺の崩れ対策では、bad face、deformed face、bad eyes、cross-eyed、bad mouth、extra teeth、missing teeth、distorted mouthなどが使われることがあります。ただし、どの単語が効くかはモデルによって変わるため、万能の固定セットとして考えるより、結果を見ながら調整するのが現実的です。
ネガティブプロンプトは矛盾に注意
ネガティブプロンプトでよくある失敗は、出したい表情と消したい要素が矛盾してしまうことです。たとえば、open mouthで口を開けたいのに、bad mouthやteeth関連のネガティブを強く入れすぎると、口が開きにくくなったり、不自然に閉じたりする場合があります。泣き顔を作りたいのにtearsを避けるような指定が入っていると、涙が出にくくなることもあります。
そのため、ネガティブプロンプトは「とりあえず大量に入れる」のではなく、今起きている失敗に合わせて足すのがおすすめです。目が崩れるならbad eyesやcross-eyed、口が崩れるならbad mouthやdistorted mouth、歯が増えるならextra teeth、顔全体が歪むならdeformed faceというように、原因に合わせて選びます。
ネガティブプロンプトの入れすぎに注意
ネガティブプロンプトを増やしすぎると、表情の変化まで弱くなる場合があります。特に口や歯に関する単語を多く入れると、open mouthやlaughingを指定しても口が開きにくくなることがあります。崩れを防ぎたい要素と、表情として出したい要素が矛盾していないか確認してください。
| よくある崩れ | 見直したい要素 | 対応の考え方 |
|---|---|---|
| 目が左右でズレる | bad eyes, cross-eyed | 目元の崩れを抑えつつ表情語を弱める |
| 口が歪む | bad mouth, distorted mouth | 口の指定を少し控えめにする |
| 歯が増える | extra teeth, bad teeth | open mouthを弱めるかclosed mouthを試す |
| 顔全体が別人になる | deformed face | Denoising strengthやマスク範囲も見直す |
| 表情が出ない | ネガティブの入れすぎ | 口や目に関するネガティブを減らす |
表情差分では、ネガティブプロンプトだけで問題を解決しようとしないことも大切です。顔が崩れる原因は、プロンプトの矛盾、Denoising strengthの高さ、マスク範囲の広さ、顔検出のズレ、モデルとの相性など複数あります。ネガティブプロンプトを増やしても改善しない場合は、設定全体を見直すほうが早いです。
顔崩れや奇形の防止を全体的に整理したい場合は、Stable Diffusionの奇形防止で手足崩れを直す方法も役立ちます。表情差分では顔に注目しがちですが、首、肩、手、髪の崩れも同時にチェックすると完成度が上がります。
最終的には、ネガティブプロンプトは「保険」として使うのがちょうどいいです。表情プロンプトで狙いを伝え、ADetailerやInpaintで範囲を絞り、Denoising strengthで変化量を調整し、最後にネガティブプロンプトで崩れを抑える。この順番で考えると、かなり安定しやすくなります。
face_yolov8nで顔を検出する

ADetailerで表情差分を作るときによく使われるモデルが、face_yolov8n.ptです。これは顔を検出するためのモデルで、アニメ系でも実写系でもまず試しやすい選択肢です。ADetailerを使い始めたばかりなら、最初はこのモデルから試すのが分かりやすいかと思います。
face_yolov8n.ptを使うと、画像内の顔を検出し、その範囲をマスクとして扱いやすくなります。つまり、顔全体を対象にして表情を再生成する流れを作れます。表情だけを変えたいときは、まずこのモデルから試すと判断しやすいです。特にアニメ系キャラクターの顔補正や表情差分では、顔の位置を自動で拾ってくれるだけでもかなり作業が楽になります。
顔検出が安定しないと表情も変わりにくい
ADetailerで表情がうまく変わらないとき、プロンプトばかり見直してしまいがちです。でも実は、そもそも顔が正しく検出されていないケースもあります。顔が小さすぎる、横顔すぎる、髪や手で顔が隠れている、複数人が写っている、顔の一部がフレーム外に出ている、といった画像では検出が安定しないことがあります。
顔検出がズレていると、ADetailer promptにどれだけsmileやsadを入れても、狙った場所に反映されません。場合によっては、顔ではなく髪や背景の一部が変わってしまうこともあります。表情が変わらない、顔が崩れる、意図しない部分が変わると感じたら、まず検出範囲を確認するのがおすすめです。
- 一人のキャラクターの顔を補正したい
- アニメ系イラストの表情差分を作りたい
- まず標準的な顔検出モデルで試したい
- 生成速度と検出精度のバランスを取りたい
- 顔が小さめの画像でディテールを整えたい
ただし、顔が小さすぎる画像、横顔、髪で顔が隠れている画像、複数人が写っている画像では、検出が安定しないことがあります。その場合は、画像サイズを見直す、顔が見えやすい構図にする、別の検出モデルを試すなどの調整が必要です。複数人がいる画像では、すべての顔に表情変更が入ってしまう場合もあるため、必要に応じてマスク制御やInpaintへの切り替えを検討してください。
| 状況 | 起きやすい問題 | 対処の方向性 |
|---|---|---|
| 顔が小さい | 検出できない、補正が弱い | 画像サイズや顔の大きさを見直す |
| 横顔 | 顔として認識されにくい | 別モデルやInpaintを試す |
| 前髪で目が隠れる | 目元が崩れやすい | マスク範囲やプロンプトを調整する |
| 複数人 | 全員の顔が変わる可能性 | Inpaintで対象を絞る |
| 顔が画面端 | 検出範囲が欠ける | 構図を調整して再生成する |
顔検出がうまくいかないと、表情プロンプトが正しく反映されません。ADetailerを使っているのに表情が変わらない場合は、プロンプトだけでなく、そもそも顔が検出されているかを確認することが大切です。また、face_yolov8nでうまくいかなければface_yolov8sやmediapipe系モデルを試すのも選択肢です。
私の感覚では、アニメ系の通常の正面顔ならface_yolov8nはかなり扱いやすいです。一方で、実写寄り、横顔、複雑な構図、顔の一部が隠れた画像では、Inpaintで自分で塗ったほうが早いこともあります。ADetailerにこだわりすぎず、画像に合わせて手段を変えるのが結果的に時短になりますよ。
Stable Diffusionで表情だけ変えるコツ

ここからは、表情差分をより自然に仕上げるための実践的な調整方法を解説します。ADetailerやInpaintを使えば表情は変えられますが、自然さを出すには細かな設定が重要です。
特に、実写系ではmediapipe系モデル、変化量の調整ではDenoising strength、元画像の雰囲気維持ではControlNetやReference Only、量産ではDynamic Promptsが役立ちます。目的に合わせて組み合わせることで、失敗を減らしやすくなります。
表情差分は、単に「笑顔にする」「泣き顔にする」だけではありません。同じ顔に見えるか、元画像の雰囲気が残っているか、口や目が崩れていないか、用途に合った差分になっているかまで確認して、ようやく使いやすい素材になります。
mediapipe_face_fullで実写対応
実写系の画像で表情だけを変えたい場合は、ADetailerのモデルとしてmediapipe_face_fullを試す価値があります。face_yolov8n.ptでも実写に使えることはありますが、実写の顔検出ではmediapipe系が合う場合もあります。アニメ系と実写系では、顔の見え方も崩れ方もかなり違うので、同じ設定で押し切ろうとしないほうがいいです。
実写系は、アニメ系よりも少しのズレが不自然に見えやすいです。口角、歯、目元、肌の質感、左右の表情差などが目立ちやすいため、表情プロンプトだけでなく、Denoising strengthやマスク範囲も慎重に調整する必要があります。特に笑顔は難しく、口が開くと歯の形や唇の輪郭が崩れやすくなります。
実写系は控えめな変化から始める
たとえば、joyfulやsmileを強く指定しすぎると、歯の形が不自然になったり、顔全体が別人に近づいたりすることがあります。実写では、big smileのような強い指示より、slight smile、natural smile、gentle smileのような控えめな指定から始めると安定しやすいです。怒り顔や泣き顔も同じで、最初から強烈な表情を狙うより、少しずつ感情を強めるほうが自然に見えます。
また、実写系で注意したいのは「本人らしさ」です。AI生成画像であっても、特定の実在人物に似せる場合や、第三者の肖像に近い画像を扱う場合は、利用規約、肖像権、公開範囲に注意が必要です。商用利用や広告素材として使う場合は、最終的な判断を専門家に相談してください。安全面や権利面は、画像の出来以上に大切です。
実写系で意識したいこと
実写系の表情変更では、変化を大きく出すよりも、元の顔を保ちながら少しずつ調整するほうが自然です。最初から派手な笑顔や強い怒り顔を狙うより、軽い表情変化を作ってから段階的に強める方法がおすすめです。
| 実写系の失敗 | 原因になりやすい設定 | 対処例 |
|---|---|---|
| 歯が不自然 | open mouthやlaughingが強い | natural smileやclosed mouthを試す |
| 別人に見える | Denoising strengthが高い | 値を下げて変化量を抑える |
| 肌の質感が変わる | マスク範囲が広すぎる | 顔中心部に範囲を絞る |
| 目元が怖くなる | 表情語が強すぎる | soft eyesやrelaxed eyesを試す |
mediapipe_face_fullでうまくいかない場合は、face_yolov8nに戻す、Inpaintで範囲を手動指定する、表情プロンプトを弱める、Denoising strengthを下げるなど、複数の方向から調整しましょう。実写系は一発で決めようとすると崩れやすいので、軽い表情差分を何枚か作り、その中から自然なものを選ぶのが現実的です。
アニメ系なら多少デフォルメが入っても表情として成立しやすいですが、実写系は微妙な違和感が目立ちます。だからこそ、控えめな表情、低めの変化量、狭めのマスク範囲を基本にして、必要な分だけ強めるのがおすすめです。
Denoising strengthを調整する

Denoising strengthは、Inpaintやimg2imgで元画像をどれくらい変化させるかに関わる重要な設定です。Stable Diffusionで表情だけ変える場合、この値が低すぎると表情がほとんど変わらず、高すぎると顔立ちや髪型まで変わりやすくなります。ここを理解すると、表情差分の成功率がかなり上がりますよ。
一般的な目安としては、表情差分では0.3から0.5前後から試すことが多いです。ただし、これはあくまで一般的な目安です。使用モデル、画像サイズ、マスク範囲、プロンプトの強さによって適切な値は変わります。アニメ系なら少し高めでも成立することがありますが、実写系では低めから慎重に試したほうが自然に見えやすいです。
Denoising strengthは変化量のつまみ
Denoising strengthを低くすると、元画像の形を保ちやすくなります。その代わり、表情の変化は弱くなります。口角を少し上げたい、目元を少し柔らかくしたい、閉じ口と開き口を軽く作りたい、といった用途では低めが向いています。
逆にDenoising strengthを高くすると、表情は変わりやすくなりますが、顔立ちや髪、輪郭、肌の塗りまで変化しやすくなります。強い泣き顔、大きな笑顔、驚き顔などを作るときには必要になることもありますが、別人化しやすいので注意です。表情を大きく変えるほど、顔を維持する難易度は上がります。
| Denoising strength | 変化の傾向 | 向いている用途 |
|---|---|---|
| 低め | 元画像を保ちやすいが変化が弱い | 口角だけ変える、軽い笑顔にする |
| 中間 | 表情変化と維持のバランスを取りやすい | 笑顔、悲しみ、驚きの差分作成 |
| 高め | 表情は変わりやすいが別人化しやすい | 大きく表情を作り直す試作段階 |
私の場合、まず中間より少し低めの値で試し、表情が弱ければ少しずつ上げます。逆に、顔立ちが変わりすぎると感じたら値を下げます。一度に大きく変えるのではなく、少しずつ変化量を探るのが失敗を減らすコツです。たとえば、最初に0.35で試し、弱ければ0.4、さらに必要なら0.45というように段階的に見ます。
また、Denoising strengthだけで解決しようとしないことも大切です。マスク範囲、表情プロンプト、ネガティブプロンプト、ADetailerのモデル選択も一緒に見直すと、自然な表情に近づきやすくなります。表情が変わらないときは値を上げるだけでなく、マスク範囲が狭すぎないか、プロンプトが弱すぎないかも確認してください。
Denoising strengthの調整は画像ごとに変える
同じ0.4でも、モデルや画像によって結果は変わります。この記事で紹介している数値はあくまで一般的な目安です。必ずあなたの環境で小さく試しながら、自然に見える値を探してください。
表情差分を効率よく作るなら、Denoising strengthをいくつか変えて比較するのもおすすめです。たとえば、同じプロンプトで0.3、0.4、0.5を生成し、どの程度で表情と顔の維持のバランスが良いかを確認します。良い値が見つかったら、その値を基準に別の表情も作ると、差分全体の統一感が出やすくなります。
ControlNetで雰囲気を保つ
ControlNetは、元画像の構図やポーズ、輪郭などを参照しながら生成を安定させたいときに使える機能です。表情だけを変えたい場合でも、元画像の雰囲気を保ちたいときに役立ちます。特に、顔だけでなく体のポーズや背景の構図も崩したくない場合は、かなり助けになります。
たとえば、顔の向き、体のポーズ、背景の構図をなるべく維持したまま表情だけを変更したい場合、ControlNetを併用すると変化の暴れを抑えやすくなります。ただし、ControlNetの効きが強すぎると、表情の変化まで抑えられることがあります。ここが少し難しいところです。
ControlNetは固定したい要素を決めて使う
ControlNetを使うときは、表情を変える目的に対して、何を固定したいのかを明確にするのが大切です。顔の輪郭や構図を保ちたいのか、ポーズを保ちたいのか、線画の形を保ちたいのかによって使うモデルや重みが変わります。固定したい要素が曖昧なまま使うと、表情が変わりにくくなったり、逆に意図しない部分だけが残ったりします。
表情差分でよくある使い方は、元画像の構図や顔向きを保つ補助として使う方法です。ADetailerやInpaintで顔を変えつつ、ControlNetで全体のポーズや構図を支えるイメージです。主役はあくまで表情変更なので、ControlNetの重みを強くしすぎないほうが扱いやすいです。
ControlNetは強くしすぎない
表情差分では、元画像を固定したい気持ちからControlNetを強くしすぎることがあります。しかし、強すぎる制御は表情変更の自由度を下げる場合があります。表情が変わらないときは、Control Weightや終了ステップを少し緩めることも検討してください。
| 目的 | ControlNetの役割 | 注意点 |
|---|---|---|
| 顔向きを保つ | 輪郭や向きのブレを抑える | 強すぎると表情が変わりにくい |
| ポーズを保つ | 体の位置や姿勢を維持する | 顔だけの変化には直接効きにくい |
| 構図を保つ | 人物や背景の配置を支える | 背景まで固定しすぎる場合がある |
| 線画風を保つ | 元画像の輪郭を維持する | 表情の線も固定されやすい |
ControlNetは非常に便利ですが、表情だけを変える作業では補助的な役割として考えると扱いやすいです。主役はADetailerやInpaint、ControlNetは構図のブレを抑えるための支え、という位置づけです。表情が変わらない場合は、ControlNetを一度オフにして、ADetailerやInpaint単体でどれくらい変わるか確認するのもおすすめです。
また、ControlNetを使うほど設定項目が増えるため、原因の切り分けが難しくなります。最初から全部盛りにするより、まずSeed固定とADetailer、次にInpaint、必要に応じてControlNetという順番で足していくほうが、失敗したときに調整しやすいです。表情差分では、複雑な設定よりも「変えたい部分を絞る」ことのほうが大事な場面も多いですよ。
Reference Onlyで同じ顔にする

Reference Onlyは、元画像の雰囲気や見た目を参照しながら生成したいときに使われる考え方です。表情だけを変える場合、元画像の顔立ちや画風を保ちたいときに役立つことがあります。特に「この顔は気に入っているから、表情だけ別パターンが欲しい」というときに検討しやすい方法です。
ただし、Reference Onlyだけで完全に同じ顔を維持できるわけではありません。Stable Diffusionでは、参照画像を使ってもプロンプトやモデルの影響を受けます。そのため、Seed値やプロンプト固定、ADetailerやInpaintとの組み合わせが重要です。Reference Onlyは万能の顔固定機能ではなく、あくまで雰囲気を寄せる補助として考えると扱いやすいです。
同じ顔に見せるには複数の固定が必要
実践では、まず元画像の設定をそろえたうえで、Reference Onlyで雰囲気を寄せます。その後、ADetailer promptやInpaintで表情を指定します。こうすると、画像全体の印象を保ちながら、顔周辺の表情だけを動かしやすくなります。
同じ顔に見えるかどうかは、目、鼻、口、輪郭、髪型、色味、塗り、カメラアングルなど複数の要素で決まります。表情だけを変えたい場合でも、口を大きく開けると顔全体の印象が変わることがありますし、眉の角度を大きく変えると別人っぽく見えることもあります。Reference Onlyを使う場合も、表情の変化量は控えめから試すのがおすすめです。
- 元画像のSeed値と生成設定を保存する
- モデルと画像サイズを変えない
- Reference Onlyで雰囲気を参照する
- ADetailerまたはInpaintで表情を変える
- 崩れた部分をネガティブプロンプトで補正する
Reference Onlyを使っても顔が変わる場合は、まず表情プロンプトが強すぎないか確認してください。たとえば、big smile、laughing、crying hardのような強い表現は顔の形を変えやすいです。顔を維持したいなら、slight smileやgentle smileなど、表情の強度が低い単語から試すとよいです。
また、Reference OnlyとADetailerを組み合わせる場合、どちらがどの範囲に影響しているのかを把握することも大切です。うまくいかないときは、一度Reference OnlyなしでADetailerだけ、次にReference OnlyありでADetailer、というように比較すると原因が見えやすくなります。設定を一気に変えると、何が効いたのか分からなくなるので注意です。
- 通常プロンプトを大きく変えていないか
- 表情プロンプトを強調しすぎていないか
- Denoising strengthが高すぎないか
- マスク範囲が顔全体より広すぎないか
- モデルやLoRAを変更していないか
絵柄や顔立ちを安定させる考え方は、画風指定とも密接に関係します。表情差分の前に絵柄やモデル選びで迷っている場合は、Stable Diffusionの絵柄指定で理想の画風へ近づける方法も確認しておくと、表情変更の土台が整いやすくなります。
Reference Onlyは、うまく使えば同じキャラクター感を保ちやすくなります。ただし、表情差分の安定には、Seed値、モデル、プロンプト、ADetailer、Inpaint、Denoising strengthの総合調整が必要です。ひとつの機能に頼りすぎず、複数の設定で少しずつ同じ顔に寄せていく意識を持つと、かなり結果が変わってきますよ。
Dynamic Promptsで表情を増やす
Dynamic Promptsは、複数のプロンプト候補からランダムに選んで生成するために使われる機能です。表情差分をたくさん作りたい場合、smile、sad、angry、surprised、worried、cryingなどをまとめて試すことで、効率よく候補を増やせます。1枚ずつ手でプロンプトを変えるのが面倒なときには、かなり便利です。
たとえば、同じキャラクターでSNS用のアイコン差分、動画用の口パク素材、ゲーム用の立ち絵差分を作りたい場合、毎回手動で表情プロンプトを打ち替えるのは手間です。Dynamic Promptsを使えば、複数の表情パターンを一度に試しやすくなります。特に、どの表情プロンプトが自分のモデルに合うか探したい段階では、試行回数を増やせるメリットが大きいです。
量産前にルールを決めておく
ただし、量産するときほど管理が重要になります。どのSeed値で、どのプロンプトで、どの表情が出たのかを記録しておかないと、あとから再現したいときに困ります。PNG Infoに生成情報が残る場合もありますが、加工や保存形式によっては情報が失われることがあるため、重要な設定は別途メモしておくと安心です。
Dynamic Promptsは、狙った表情を完全に再現するというより、候補を一気に出して良いものを選ぶ使い方に向いています。つまり、ガチャ要素を効率化するイメージです。最初から本番素材を作るというより、プロンプト候補の相性チェック、表情の方向性確認、差分候補のラフ出しに向いています。
- 元画像のファイル名にSeed値を入れる
- 表情名ごとにフォルダを分ける
- 使用モデルとプロンプトをテキストで保存する
- 採用画像とボツ画像を分けて管理する
- ADetailerやInpaintの設定も一緒に記録する
| 用途 | 作りたい表情 | 管理のポイント |
|---|---|---|
| SNSアイコン | 笑顔、困り顔、驚き顔 | 顔の印象をそろえる |
| ゲーム立ち絵 | 通常、笑顔、怒り、悲しみ | 表情名とファイル名を統一する |
| 動画素材 | 口閉じ、口開き、笑顔 | 口元の位置をなるべくそろえる |
| 漫画風素材 | 焦り、怒り、泣き、喜び | 感情の強さを段階化する |
Dynamic Promptsは、試行回数を増やせるのが魅力です。一方で、狙った表情を確実に作るというより、複数候補から良いものを選ぶ使い方に向いています。商用利用やクライアントワークで使う場合は、利用しているモデル、LoRA、拡張機能のライセンスや規約も必ず確認してください。
また、表情差分を大量に作ると、採用画像の選定に時間がかかります。最初から100枚生成するより、まず5枚から10枚程度でプロンプトの方向性を確認し、良い結果が出る設定に絞ってから枚数を増やすほうが効率的です。表情差分は、生成枚数を増やせば必ず良くなるわけではありません。設定の精度を上げてから量産するほうが、結果的に早いですよ。
さらに、口パク素材やゲーム用差分では、表情の名前付けも大切です。smile_01、sad_01、open_mouth_01のように命名ルールを決めておくと、後から編集ソフトやゲームエンジンに入れるときに迷いません。生成AIの作業は、生成だけでなく整理まで含めて効率化するとかなり楽になります。
Stable Diffusionで表情だけ変える要点

Stable Diffusionで表情だけ変えるなら、まずはADetailerを使う方法から試すのがおすすめです。顔を自動検出して表情プロンプトを反映しやすいため、同じキャラクターの表情差分を作る作業に向いています。初心者でも導入後の操作が分かりやすく、笑顔、悲しみ、怒り、驚きなどの差分を作りやすいです。
一方で、口元だけを変えたい、目元は維持したい、特定の範囲だけを細かく直したい場合はInpaintが便利です。ADetailerで全体を整え、最後にInpaintで細部を直すという組み合わせも実践的です。どちらか一方だけを使うのではなく、目的に応じて使い分けるのが一番現実的かと思います。
表情差分は固定と変化のバランス
表情だけを変える作業の本質は、「変えたい部分」と「変えたくない部分」を分けることです。変えたいのは目、眉、口、頬などの表情要素です。一方で、変えたくないのは顔立ち、髪型、服装、背景、構図、画風です。この切り分けができていないと、プロンプトを少し変えただけで全体が大きく変わってしまいます。
そのため、元画像のSeed値やモデル、プロンプト、画像サイズを固定し、ADetailerやInpaintで顔周辺だけを再生成するのが基本になります。そこにDenoising strengthで変化量を調整し、ネガティブプロンプトで崩れを抑え、必要に応じてControlNetやReference Onlyで雰囲気を支える。この流れを覚えておくと、かなり応用が効きます。
- 表情差分はADetailerかInpaintで作りやすい
- Seed値だけでなくモデルやプロンプトも固定する
- 表情プロンプトはADetailer prompt側に入れると扱いやすい
- Denoising strengthは低めから少しずつ調整する
- ControlNetやReference Onlyは雰囲気維持の補助として使う
- 大量生成する場合はDynamic Promptsとファイル管理をセットで考える
| 悩み | おすすめの対処 |
|---|---|
| 表情がほとんど変わらない | 表情プロンプトを少し強める、マスク範囲を広げる、Denoising strengthを上げる |
| 顔が別人になる | Denoising strengthを下げる、マスク範囲を狭める、Seedやモデルを固定する |
| 口元が崩れる | open mouthを弱める、bad mouthやextra teethを調整する |
| 目元が不自然 | bad eyesを追加し、表情語を目元まで分解して指定する |
| 複数表情を作るのが面倒 | Dynamic Promptsで候補を出し、採用画像を整理する |
Stable Diffusionは環境やバージョン、使用モデルによって結果が変わります。この記事で紹介した数値や設定は、あくまで一般的な目安です。正確な情報は公式サイトをご確認ください。また、商用利用、著作権、肖像権、生成物の公開可否などに関わる最終的な判断は専門家にご相談ください。
表情だけを自然に変えるには、一度で完璧を狙うより、元画像の設定を固定し、表情プロンプト、マスク範囲、Denoising strengthを少しずつ調整することが大切です。あなたの作品に合う設定を見つけながら、使いやすい表情差分の作り方を整えていきましょう。
最後に、私が一番おすすめする進め方をまとめると、まず気に入った元画像を作り、Seed値と設定を保存し、ADetailerでざっくり表情差分を作ります。その後、気になる表情だけInpaintで細部を整えます。さらに大量に必要な場合はDynamic Promptsで候補を増やします。この流れなら、初心者でも失敗の原因を切り分けやすく、実用的な表情差分を作りやすいですよ。


