> For the complete documentation index, see [llms.txt](https://wiki.aig123.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.aig123.com/midjourney-tutorial/ji-qiao-pian/ji-qiao-shi-kong-zhi-bian-liang-fa-jian-jin-you-hua.md).

# 技巧十：控制变量法渐进优化

很多人把 AI 生成图片比喻为炼丹，我觉得非常贴切，很多时候，也不知道为啥，在 prompt 里加一点神秘配方，图片就会很不一样。

不过我觉得虽然过程很像炼丹，但并不代表我们需要像古人那样，用撞大运的方式炼制丹药。我认为目前使用 Midjourney 最好的方法是：控制变量渐进优化法。

拿上面那个装备集的图片为例，我希望它生成的是装备，并且是一件件地排布，而且光剑的效果也很奇怪，首先我们来逐条排查 prompt：

|         | **Prompt**                  | **检查**                                                                        |
| ------- | --------------------------- | ----------------------------------------------------------------------------- |
| 类型是什么？  | blender 3d, game sheet      | 这个好像有点问题，我希望的炉石传说的风格，好像不是这种精致的 3D 效果，生成的风格更像是星际争霸的，而炉石传说是那种黏土风格（clay render）。 |
| 主体是什么？  | lightsabers, paladin armor, | 这里可能也有问题，会不会是没有写 different types of lightsabers 导致只生成一种光剑。                    |
| 背景是什么？  | null                        | 这个应该没啥问题                                                                      |
| 构图是怎样的？ | null                        | 这个应该没啥问题                                                                      |
| 用什么镜头？  | null                        | 这个应该没啥问题                                                                      |
| 是什么风格？  | style of Hearthstone        | 感觉生成的图没有那种中世纪盔甲的油腻感，但如果前面改了黏土风格，会不会好一些？这里可能也需要优化下。                            |
| 参数      | null                        | 这个应该没啥问题                                                                      |

从这个表里可以看到，我们发现了三个问题，其中第一个黏土风格问题，跟最后一个问题有关，此时我的建议是：

1. 每次仅修改一个，其余变量不变。
2. 修改完一条，效果符合预期后，再修改下一个。
3. 我的经验优先修改主体内容，因为主体有的时候会影响其余的变量。
4. 如果想确定这个修改是否具有一致性，或者说是否符合要求，而不是恰巧符合，可以用相同的 prompt 再生成一次。不过因为没生成一次都要花钱，所以这个是可选项。

OK，按照以上原则，我们修改一下我们的 prompt，看看生成了什么，的确加了 different types of 后，光剑就多了，问题解决了：

![MJ051.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/D9C6275A-84EE-42EC-9509-F43E60C9B66F_2/pGbPtLPgN7zTTZlDFgNVexGZ4BxTGtiE3vy0jdlY5CIz/MJ051.png)

然后我们修改下 blender 3d，将其改为 clay render （黏土渲染），我改完之后发现生成的结果（左边四张），好像质感还是差了一点，于是我又试了下保留 3d blender 加 oily 的效果（中间四张），以及 clay render 加 oily 两个一起用（右边四张）。

![MJ052.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/ADB20BDA-306A-43F7-90E0-DEBC3DA471CE_2/xGfjCTVHUxQI4j1CVceShaJEMymax4oa3NxxPccCI1wz/MJ052.png)

我个人觉得好像两个都改了效果是最好的（右边四张）。

对比一下最开始的 prompt 生成的图片，是不是最终的图片效果更好？所以这个技巧主要想告诉大家，写 prompt 没有必要照抄答案，你也有能力自己写好 prompt。
