ストーリー
田
田中VPoE
画像認識の次は画像生成だ。テキストから画像を生成する技術は、マーケティングや商品開発で大きなインパクトがある
あなた
DALL-EやStable Diffusionですよね。広告バナーとか商品イメージの生成に使えそうです
あ
田
田中VPoE
その通り。ただし業務利用には「品質の安定性」「ブランドガイドライン準拠」「著作権リスク」など、個人利用とは違う考慮点がある
あなた
プロンプトの書き方次第で品質が大きく変わりそうですね
あ
田
田中VPoE
まさにそこが鍵だ。業務で使える画像を安定的に生成するためのプロンプト設計とワークフローを学ぼう
画像生成モデルの概要
主要モデルの比較
| モデル | 提供元 | 特徴 | 推奨用途 |
|---|
| DALL-E 3 | OpenAI | 指示理解力が高い、テキスト描画可能 | 概念図、説明用画像 |
| Stable Diffusion XL | Stability AI | オープンソース、カスタマイズ可能 | ブランド特化画像 |
| Midjourney | Midjourney | 芸術性が高い | クリエイティブ素材 |
| Imagen 3 | Google | 高品質、安全フィルタ | ビジネス素材 |
| Flux | Black Forest Labs | 高速、高品質 | 大量生成 |
生成の仕組み(Diffusionモデル)
テキストプロンプト
│
▼
[テキストエンコーダ(CLIP等)]
│
▼
ノイズ画像 → [デノイジング(ノイズ除去)を繰り返す] → 生成画像
↑ テキスト条件で誘導
DALL-E APIの使い方
基本的な画像生成
from openai import OpenAI
client = OpenAI()
def generate_image(prompt: str, size: str = "1024x1024") -> str:
"""DALL-E 3で画像を生成"""
response = client.images.generate(
model="dall-e-3",
prompt=prompt,
size=size, # 1024x1024, 1024x1792, 1792x1024
quality="hd", # standard or hd
style="natural", # natural or vivid
n=1
)
return response.data[0].url
業務用プロンプトテンプレート
# 商品画像の背景生成
PRODUCT_BG_TEMPLATE = """
Product photography of {product_name}.
Clean white background, professional studio lighting.
Shot from {angle} angle.
High resolution, sharp focus on the product.
Minimalist style, e-commerce ready.
No text or watermarks.
"""
# マーケティングバナー
BANNER_TEMPLATE = """
Marketing banner for {campaign_name}.
Style: {brand_style} (modern, clean, professional).
Color palette: {primary_color} and {secondary_color}.
Layout: {layout_type} (horizontal/vertical/square).
Mood: {mood} (energetic/calm/trustworthy).
No text overlay needed (text will be added separately).
"""
# SNS投稿用画像
SNS_TEMPLATE = """
Social media post image for {platform} (Instagram/Twitter).
Theme: {theme}.
Style: {style} (flat illustration/photo-realistic/abstract).
Aspect ratio: {ratio} (1:1 for Instagram, 16:9 for Twitter).
Bright, eye-catching, scroll-stopping visual.
"""
プロンプト設計のテクニック
構造化プロンプト
効果的な画像生成プロンプトは以下の要素を含みます。
[主題] + [スタイル] + [構図] + [照明] + [色調] + [品質指定] + [除外条件]
| 要素 | 説明 | 例 |
|---|
| 主題 | 何を描くか | ”a modern office workspace” |
| スタイル | どんな雰囲気か | ”minimalist, Scandinavian design” |
| 構図 | カメラアングル | ”bird’s eye view, centered” |
| 照明 | 光の加減 | ”soft natural lighting from left” |
| 色調 | カラーパレット | ”warm tones, pastel colors” |
| 品質指定 | 解像度等 | ”high resolution, sharp focus” |
| 除外条件 | 含めないもの | ”no people, no text” |
ネガティブプロンプト(Stable Diffusion)
# Stable Diffusion WebUI API経由
import requests
def generate_with_sd(
prompt: str,
negative_prompt: str = "",
steps: int = 30,
cfg_scale: float = 7.0
) -> bytes:
"""Stable Diffusionで画像を生成"""
payload = {
"prompt": prompt,
"negative_prompt": negative_prompt or (
"low quality, blurry, distorted, watermark, "
"text, logo, deformed, ugly, duplicate"
),
"steps": steps,
"cfg_scale": cfg_scale,
"width": 1024,
"height": 1024,
"sampler_name": "DPM++ 2M Karras"
}
response = requests.post(
"http://localhost:7860/sdapi/v1/txt2img",
json=payload
)
return response.json()["images"][0] # Base64
ControlNetによる制御
ControlNetとは
生成画像の構図やポーズを制御する技術です。
入力画像(エッジ/深度/ポーズ)
│
▼
[ControlNet] → Diffusionプロセスを制御 → 構図を維持した生成画像
主なControlNetモード
| モード | 入力 | 用途 |
|---|
| Canny Edge | エッジ画像 | 輪郭を維持した画像生成 |
| Depth | 深度マップ | 立体構造を維持 |
| OpenPose | 骨格検出結果 | ポーズを維持 |
| Scribble | ラフスケッチ | スケッチからの画像生成 |
| Reference | 参照画像 | スタイルの維持 |
業務での活用例
【商品画像のバリエーション生成】
元の商品写真 → [Canny Edge抽出] → エッジ画像
│
プロンプト: "同じ商品、異なる背景" ─────┤
▼
[ControlNet + SD]
│
▼
背景違いの商品画像 × N枚
業務利用の注意点
著作権とライセンス
| モデル | 生成画像の権利 | 商用利用 | 注意点 |
|---|
| DALL-E 3 | 利用者に帰属 | 可 | OpenAI利用規約に準拠 |
| Stable Diffusion | モデルライセンスに依存 | モデルによる | 学習データの権利問題 |
| Midjourney | プランによる | 有料プランで可 | 無料プランは制限あり |
品質管理のワークフロー
生成 → 自動品質チェック → 人間レビュー → 承認 → 利用
│
├── ブランドガイドライン準拠チェック
├── 不適切コンテンツフィルタ
└── 解像度・アスペクト比の確認
ブランド一貫性の維持
# ブランドガイドラインに基づくプロンプト管理
BRAND_GUIDELINES = {
"color_primary": "#2563EB",
"color_secondary": "#F59E0B",
"style": "modern, clean, professional",
"forbidden_elements": ["cartoon style", "dark themes", "violent imagery"],
"required_elements": ["clean background", "professional lighting"]
}
def build_brand_compliant_prompt(base_prompt: str) -> str:
"""ブランドガイドラインに準拠したプロンプトを生成"""
guidelines = BRAND_GUIDELINES
enhanced = f"{base_prompt}. Style: {guidelines['style']}. "
enhanced += f"Color scheme: {guidelines['color_primary']} and {guidelines['color_secondary']}. "
enhanced += ". ".join(guidelines["required_elements"]) + ". "
enhanced += "Avoid: " + ", ".join(guidelines["forbidden_elements"])
return enhanced
まとめ
| 項目 | 内容 |
|---|
| 主要モデル | DALL-E 3(指示理解力)、SD XL(カスタマイズ)、Midjourney(芸術性) |
| プロンプト設計 | 主題 + スタイル + 構図 + 照明 + 色調 + 品質 + 除外条件 |
| ControlNet | 構図やポーズを制御して一貫した画像生成 |
| 業務利用 | 著作権、ブランドガイドライン、品質管理ワークフローが重要 |
チェックリスト
推定所要時間: 30分