首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI 绘画 MJ + SD 从专业角度:双引擎协作的生产级工作流

AI 绘画 MJ + SD 从专业角度:双引擎协作的生产级工作流

原创
作者头像
用户12339161
发布于 2026-09-29 10:25:19
发布于 2026-09-29 10:25:19
210
举报

Midjourney 和 Stable Diffusion 常被放在一起比较,但专业团队从不二选一。MJ 强在审美先验、构图直觉和出图速度;SD 强在可控性、局部编辑和批量自动化。真正的生产力,是把两者放进同一条管线:MJ 做创意探索与氛围定调,SD 做精修、一致性与规模化输出。

一、双引擎分工逻辑

环节

推荐工具

原因

概念探索

Midjourney

风格多样、构图大胆、迭代快

角色/风格锁定

SD + LoRA

可训练、可复现、一致性强

构图控制

SD + ControlNet

姿态、线稿、深度精确控制

局部修改

SD Inpainting

蒙版级重绘,不破坏整体

批量放大

SD + ESRGAN

本地免费、可脚本化

核心原则:MJ 产出参考图,SD 产出可交付资产。

二、代码示例 1:调用 MJ 做概念探索

Midjourney 官方无公开 API,专业团队通常通过 Discord 机器人或第三方网关调用。以下用 Discord Webhook 思路演示参数拼装与任务记录。

代码语言:javascript
复制
import requests, json, time, os

WEBHOOK = os.getenv("DISCORD_WEBHOOK")

def build_prompt(subject, style, aspect="16:9", version="6.1"):
    return (
        f"{subject}, {style}, cinematic lighting, highly detailed "
        f"--ar {aspect} --v {version} --style raw --q 2"
    )

def send_imagine(prompt):
    payload = {
        "content": f"/imagine prompt: {prompt}",
        "username": "MJ-Bot"
    }
    r = requests.post(WEBHOOK, json=payload, timeout=15)
    r.raise_for_status()
    record = {"prompt": prompt, "ts": time.time()}
    with open("mj_log.jsonl", "a", encoding="utf-8") as f:
        f.write(json.dumps(record, ensure_ascii=False) + "\n")

send_imagine(build_prompt(
    "a lone astronaut standing on a neon-lit rooftop",
    "cyberpunk, volumetric fog, blade runner mood"
))

关键点:每次生成必须记录 prompt、版本、宽高比、seed(MJ 可通过 --seed 固定),否则无法复现。

三、代码示例 2:SD 文生图 + LoRA 风格锁定

确定方向后,用 SD 锁定风格。以下调用本地 AUTOMATIC1111 WebUI API。

代码语言:javascript
复制
import requests, base64, os

API = "http://127.0.0.1:7860"

def txt2img(prompt, negative, lora, seed=42, steps=30):
    payload = {
        "prompt": f"{prompt}, <lora:{lora}:0.8>",
        "negative_prompt": negative,
        "seed": seed,
        "steps": steps,
        "width": 1024,
        "height": 576,
        "cfg_scale": 6.5,
        "sampler_name": "DPM++ 2M Karras"
    }
    r = requests.post(f"{API}/sdapi/v1/txt2img", json=payload, timeout=300)
    r.raise_for_status()
    img = r.json()["images"][0]
    with open("sd_output.png", "wb") as f:
        f.write(base64.b64decode(img.split(",", 1)[-1]))

txt2img(
    "astronaut on rooftop, neon city, cyberpunk",
    "low quality, watermark, extra limbs, blurry",
    lora="cyberpunk_style_v3"
)

LoRA 的价值在于:同一个触发词,跨批次产出高度一致的视觉语言,这是 MJ 难以稳定做到的。

四、代码示例 3:ControlNet 精确控制构图

当客户要求“人物必须站在画面左侧,姿势参考这张图”,就用 ControlNet。

代码语言:javascript
复制
import requests, base64

API = "http://127.0.0.1:7860"

def with_controlnet(prompt, ref_image_b64, seed=123):
    payload = {
        "prompt": prompt,
        "negative_prompt": "low quality, deformed",
        "seed": seed,
        "steps": 28,
        "width": 1024,
        "height": 1024,
        "cfg_scale": 7,
        "sampler_name": "DPM++ 2M Karras",
        "alwayson_scripts": {
            "ControlNet": {
                "args": [{
                    "input_image": ref_image_b64,
                    "module": "openpose",
                    "model": "control_v11p_sd15_openpose",
                    "weight": 0.9,
                    "resize_mode": "Crop and Resize"
                }]
            }
        }
    }
    r = requests.post(f"{API}/sdapi/v1/txt2img", json=payload, timeout=300)
    r.raise_for_status()
    return r.json()["images"][0]

with open("pose_ref.png", "rb") as f:
    ref = base64.b64encode(f.read()).decode()

result = with_controlnet(
    "female warrior, silver armor, cinematic, full body",
    ref
)

ControlNet 是 SD 相对 MJ 最大的工程优势:把不可控的“生成”变成可控的“合成”。

五、专业工作流建议

  1. MJ 出 20 张概念图,筛选 2-3 个方向;
  2. 训练或选用 LoRA,锁定风格与角色;
  3. 用 ControlNet 复现客户指定构图;
  4. Inpainting 局部精修,替换手部、道具、背景;
  5. ESRGAN 放大至印刷级分辨率;
  6. 统一色彩管理,输出 sRGB 或 Adobe RGB 并嵌入 ICC。

六、合规与版权红线

  • 确认模型许可证与训练数据来源,商用前核查;
  • 不得直接模仿受保护 IP、真人肖像;
  • AI 生成内容按平台要求标注;
  • 客户素材需获得授权,禁止未授权图生图。

七、总结

MJ 与 SD 不是竞争关系,而是探索与交付的分工。MJ 负责“想到”,SD 负责“做到”。把 prompt、seed、LoRA、ControlNet 全部纳入版本管理,AI 绘画才能从灵感游戏变成可复现的生产力。先从一条 MJ→SD 的小管线跑通,再逐步扩展成团队级工作流。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、双引擎分工逻辑
  • 二、代码示例 1:调用 MJ 做概念探索
  • 三、代码示例 2:SD 文生图 + LoRA 风格锁定
  • 四、代码示例 3:ControlNet 精确控制构图
  • 五、专业工作流建议
  • 六、合规与版权红线
  • 七、总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档