目次
本稿を読む前のご注意
本稿で生成する人物画像の中には、実在する人物に似た画像や、倫理的に不適切な画像、不快な印象を与える画像が含まれる場合があります。
また、身体的に似た個性や事情を持つ方々に対して差別感を与える場合があります。一例として個性的な目鼻口の形状や配置、体型、指の形状や本数、性的強調や非強調(具体的には中性的な男性)を持つ人物画像を生成するケースが存在します。差別する意図はありませんので、ご容赦ください。
人物の画像の生成例
本稿では、自動的に人物画像のプロンプトを生成するBashスクリプトを紹介します。下図は正方形の解像度440×440で生成した8人の画像です。一見すると、写真のように見えると思います。

解像度 = 440×440, Steps = 20
モデル = japaneseStyleRealistic_v20
Raspberry Pi 5 RAM 16GBモデルでの生成時間は、1枚あたり約17分、1日84枚の生成が可能です(4GBモデルは後述)。
| 測定回数 | RAM最大(平均)使用量 | 画像生成時間 |
| 1回目(初回) | 10705 MB (5796 MB) | 1135 秒 (約 19 分) |
| 2回目 | 10705 MB (6375 MB) | 1070 秒 (約 18 分) |
| 3回目 | 11956 MB (6592 MB) | 964 秒 (約 16 分) |
| 4回目 | 11956 MB (6680 MB) | 997 秒 (約 17 分) |
| 5回目 | 11956 MB (6746 MB) | 994 秒 (約 17 分) |
下図は縦長のポートレート風の解像度384×512、Step数24での結果の一例です。やや品質が劣化するようです。

解像度 = 384×512, Steps = 24
モデル = japaneseStyleRealistic_v20
生成時間は1枚あたり約22分、1日65枚の生成が可能です。
| 測定回数 | RAM最大(平均)使用量 | 画像生成時間 |
| 1回目(初回) | 9241 MB (6791 MB) | 1330 秒 (約 22 分) |
| 2回目 | 8202 MB (5253 MB) | 1327 秒 (約 22 分) |
| 3回目 | 8202 MB (5255 MB) | 1331 秒 (約 22 分) |
| 4回目 | 8202 MB (5254 MB) | 1331 秒 (約 22 分) |
| 5回目 | 8202 MB (5253 MB) | 1329 秒 (約 22 分) |
解像度を512×512に増やしつつ22分で生成できるように、Step数を20にすると、より自然な画像が得られました。

解像度 = 512×512, Steps = 20
モデル = japaneseStyleRealistic_v20
スクリプト = ex10_sd_practical.sh
Bashスクリプトでプロンプト生成
本稿では、画像生成に Stable Diffusion Web UI を用い、そのプロンプトの生成に Bashスクリプトを使用しました。

モデルまかせで人物を生成
人物の特徴を指示せずに生成すれば学習モデル任せで様々な人物を生成することが出来ます。国籍や性別を指定しない以下のプロンプトを使ってみます。
- a human, photo quality
- detailed portrait
下図は生成結果です。日本人に近い女性が生成されました。

解像度 = 512×512, Steps = 20, Seed番号 = (0 1 2 3 4 5 6 7)
モデル = japaneseStyleRealistic_v20

解像度 = 512×512, Steps = 20, Seed番号 = (0 1 2 3 4 5 6 7)
モデル = japaneseStyleRealistic_v20
性別や顔という指示がないにもかかわらず、全て女性の顔のクローズアップになることから、女性の顔を多く学習したモデルだと推測できます。また、国籍を指定していないので、日本人らしさに揺れが出ています。
単一プロンプトで日本人を生成
下図はプロンプトに「Japanese」等を、ネガティブ・プロンプトとして「low quality」等を入れて生成した例です。

解像度 = 512×512, Steps = 32, Seed番号 = (0 1 2 3 4 5 6 7)
モデル = japaneseStyleRealistic_v20
この場合も、女性ばかりが生成されました。
同一画像生成を再現するSeed番号
Seed番号は、生成時に使用する乱数の種です。同じSeed番号を使用することで、同一画像を再現することが出来ます。
下図は、それぞれ左から右にSeed番号0~7で生成した画像です(上記の3例を含む)。縦方向の人物を比較すると面影が残っていることが分かるでしょう。

同一画像を再現してみよう
ここで、下図と同じ画像を生成する方法を説明します。まず、どちらかの画像をダウンロードしてください。


次に、ダウンロードした画像を、Stable Diffusion のタブ[PNG Info]画面のSourceエリアにドラッグ&ドロップします。右側にプロンプトやSeed番号が表示されるので確認してください。

Seed番号 = 2219582464
画面中央付近の[Send to txt2img]ボタンを押すと、画像生成用txt2img用のパラメータとして流用できます。タブ[txt2img]で元の画面に切り替え、[Generate]ボタンで画像生成を開始します。下図のように、ほぼ同じ画像が生成できました。

Seed番号 = 2219582464
性別、年齢を指示する
通常、画像生成には目的があります。目的に相応しい人物を生成するには、プロンプトの調整が必要です。
下図は同一人物に見える人物に対して、プロンプトで性別や、年齢を指示した場合の一例です。背景や服装は似ていますが、左側の人物よりも右側の方が若く見えると思います。

解像度 = 440×440, Steps = 20, Seed番号 = 0
モデル = japaneseStyleRealistic_v20
前述のとおりjapaneseStyleRealistic_v20は女性の顔のクローズアップ画像を多く学習しています。このため、プロンプトによる指示に追従しやすいです。下図は4人の女性についてプロンプト「20-years-old」の有無を比較した一例です。

解像度 = 440×440, Steps = 20, Seed = (1 2 3 4)
モデル = japaneseStyleRealistic_v20
Bashスクリプトでプロンプトを組み合わせる
以上から、様々な人物を生成するBashスクリプトには、以下のような条件を付与することにしました。
- 国籍(初期値=”Japanese”)
- 性別と年齢(男/女、”20-years-old”の有無など)
- 服装(6種類からランダム)
- 背景(6種類からランダム)
- Seedはランダム(-1を指定)
- その他(約20分で生成できる範囲で高画質化)

後述のインストール方法にしたがってセットアップ後、下記を実行すれば、上記の条件で自動的に人物画像を生成します。
- ex10_sd_practical.sh(RAM 8GB/16GBモデル用)
- ex10_sd_practical_4g.sh(RAM 4GBモデル用)
本ブログ内で紹介した人物画像は、これらのBashスクリプトのプロンプトや生成条件を調整して作成しました。
Bashスクリプトの内容
上記のBashスクリプト内では変数nationalityと、配列変数humans、clothes、scenesを定義しています。下記はその一部です。
nationality="Japanese"
humans=(
"a ${nationality} masculine man with short hair, no makeup"
"a ${nationality} woman"
)
clothes=(
"buisiness suit"
"light business attire"
)
scenes=(
"in a modern apartment"
"in a office"
)
また、プロンプト生成時は、これらをランダムで組み合わせます。下記は生成用プロンプトの抜粋です。
get_prompt(){
echo -n "An upper-body portrait photograph of "
echo -n "(${humans[$(( $RANDOM % humans_num ))]}, "
echo -n "wears ${clothes[$(( $RANDOM % clothes_num ))]}), "
echo -n "${scenes[$(( $RANDOM % scenes_num ))]}, "
echo -n "professional DSLR photography. "
}
本稿で使用するRapsberry Pi

Stable Diffusion Web UI の実行にはメモリー 8GB 以上を要します。このため、RAM容量が 4GB や 8GB のモデルでは、メモリー不足対策が必要です。RAM 4GBモデルでは、仮想メモリにSSDドライブを使用します。
以上より、Raspberry Pi 4または5および、必要に応じてSSDドライブを準備してください。
- Rasberry Pi 4 RAM 4GB + SSDドライブ
- Rasberry Pi 4 RAM 8GB 単体 (または +SSDドライブ)
- Rasberry Pi 5 RAM 4GB + SSDドライブ
- Rasberry Pi 5 RAM 8GB 単体 (または +SSDドライブ)
- Rasberry Pi 5 RAM 16GB 単体
4GBモデル+SSDでの生成例
下図は、Raspberry Pi 5 RAM 4GBモデル + SSDドライブで生成した画像です。画像の解像度は320×320に下げて、RAMの節約と生成速度の向上を図りました。

モデル = japaneseStyleRealistic_v20
スクリプト = ex10_sd_practical_4g.sh
| 測定回数 | RAM最大(平均)使用量 MEM最大(平均)使用量 | RAM 4GBモデル 画像生成時間 |
| 1回目(初回) | 1316 MB (1010 MB) 8878 MB (6786 MB) | 1020 秒 (約 17 分) |
| 2回目 | 1441 MB (1060 MB) 8878 MB (6806 MB) | 1041 秒 (約 17 分) |
| 3回目 | 1441 MB (1075 MB) 8879 MB (6812 MB) | 1014 秒 (約 17 分) |
| 4回目 | 1463 MB (1100 MB) 8879 MB (6815 MB) | 1038 秒 (約 17 分) |
| 5回目 | 1463 MB (1112 MB) 8879 MB (6823 MB) | 1032 秒 (約 17 分) |
縦長のポートレート風の解像度256×344だと、下図のような画像になりました。

解像度 = 256×344, Steps = 24
モデル = japaneseStyleRealistic_v20
| 測定回数 | RAM最大(平均)使用量 MEM最大(平均)使用量 | RAM 4GBモデル 画像生成時間 |
| 1回目(初回) | 1641 MB (1115 MB) 8344 MB (6723 MB) | 1197 秒 (約 20 分) |
| 2回目 | 1651 MB (1098 MB) 8345MB (6731 MB) | 1179 秒 (約 20 分) |
| 3回目 | 1651 MB (1095 MB) 8345 MB (6733 MB) | 1165 秒 (約 19 分) |
| 4回目 | 1651 MB (1096 MB) 8345 MB (6734 MB) | 1173 秒 (約 20 分) |
| 5回目 | 1658 MB (1101 MB) 8409 MB (6743 MB) | 1176 秒 (約 20 分) |
Automatic1111 Stable Diffusion Web UI
解像度 = 256×344, Steps = 24
モデル = japaneseStyleRealistic_v20
インストール方法
当方の過去のブログを参照してください。
- RAM 16GB(or 8GB)単体
https://bokunimo.net/blog/raspberry-pi/6065 - RAM 4GB + SSDドライブ
https://bokunimo.net/blog/raspberry-pi/6228/
おまけ:Copilotとの比較
最後に、Copilotが生成した画像と比較してみます。下図の左側はStable Diffusionによる生成、右がCopilotです。

但し、比較しやすいように明るさを調整(Copilot側の明るさをアップ)
Copilotの方が解像度が高く、人物の顔の輪郭や頬の形状が自然です。背景の商品棚や小さく映った人物もリアルに生成されました。色違いのバッグのショルダーベルトも統一されています。
とはいえ、良く見ないと分からないレベルだと思います(主観)。
肖像権への配慮
本稿ではプロンプトのみで人物画像を生成していますが、実在する人物に似た画像が生成されてしまうことがあります。場合によっては、偶発的に実在の人物に酷似した画像が生成され、肖像権を侵害してしまうリスクもあります。侵害リスクへの備えとしては、以下の方法があります。
- 実在の人物に似た画像を意図的に生成しない
- 顔の特徴の指示を細かくし過ぎない
- タレント業に紐づく用語や背景、ポーズは、なるべく使用しない
- 実在の知人やタレントに似た画像が複数回、生成された場合は、プロンプトを見直す
- プロンプトや生成条件、Seed値など生成履歴を残しておく(PNGファイルのEXIF情報を消さない)
- 生成した画像から似たタレントを検索し、同一人物に見えないかどうかを確認する
- 実在の知人やタレントに酷似した画像が生成されてしまった場合は、躊躇せずに削除する
なお、実在する人物に似た画像を生成する行為は、例え悪意が無かったとしても、ディープフェイクの生成を疑われ、犯罪行為とみなされるリスクがあります。また、PC内の画像がハッキングによって流出する可能性もあり得ます。
作らない、残さないを徹底しましょう。
by bokunimo.net


