AI绘图之Midjourney初体验
Midjourney (MJ) 使用笔记
最近尝试了 Midjourney 绘图,简单记录下使用流程。
注册及登陆
首先是账号注册和登陆,基本上就是一路下一步,唯一需要注意的是加入MJ频道,具体流程为:
- 打开Discord,点击右上角
Login
进入登陆界面 - 点击登陆页面下方的
Register
,进入注册页面 - 输入用于注册的相关信息,点击下方continue完成注册。
- MJ会发送一份验证邮件,需要进入邮箱点击完成验证。
- 继续登陆MJ,进入MJ主界面
- 点击左侧的
探索可发现的服务器
按钮,打开服务器界面,找到下方的Midjourney
群组并点击。如果下方没有找到,也可以在搜索框搜索
- 点
Getting Started
进入到服务器,进来之后点击最上面的加入Midjourney
,加入MJ群组。如果此处一直加入不了群组,可能是代理的国家人数太多受限了。尝试切换代理的国家,再次尝试。但是如果IP换得频繁,也有可能触发风控。 - 加入群组后,点击左上角的
私信
,打开Midjourney Bot
,即可打开和MJ机器人的对话框。
- 如果需要订购会员,在对话框输入
/subscribe
命令,点击弹出的Manage Account
,进入订阅界面。此处选择月付的标准版会员,切换到Monthly Billing
,点击Standard Plan
下放到的Subscribe
进行订阅,在弹出的窗口中输入自己的支付方式,完成支付即可。
下次使用时,从 https://discord.com/channels/@me 登陆即可。
运行指令
登陆以后,点击左上角私信
,接着选中Midjourney Bot
,即可打开和MJ机器人的对话框。
在对话框中输入各种指令(按下/
即会有智能提示,可以通过Tab键进行选择),并回车执行指令。常用参数包括:
/imagine <prompt>
为生成图像的指令,其中 prompt 是用于生成图像的文本命令
/info
了解账户的订阅信息和剩余时间/relax
切换到relax模式。该模式生成图像不消耗账户的GPU时间,但是需要排队,可能生成速度较慢/fast
切换到fast模式,该模式可以在60s内生成图像,但是需要消耗账户的GPU时间。/blend
将两个图片进行融合/settings
调整MJ的设置,包括MJ的版本、风格、质量参数、风格参数和输出模式等。
/stealth
切换到隐身模式,标准版不可用/describe
图片生成文字。上传图片,MJ返回对该图片的文字描述/ask
问问题,类似ChatGPT/show
使用图片作业ID(job id可在MJ记录中查看或复制)重新生成 Discord 中的作业/help
查看帮助信息/subscribe
管理订阅/prefer option set
创建指定变量/prefer option list
列出之前设置的所有变量/prefer suffix
指定要添加每个提示末尾的后缀,用来统一调整后续绘图的参数
绘图
掌握了MJ的基本用法后,就可以开始绘图了。比如使用命令 /imagine Diagrammatic isometric the water cycle or water cycle diagram shows four seasons of watering of Earth's surface, in the style of forest vistas, whistlerian, photoillustration, left forests but right fragment trees, 2d game art, rough-edged 2d animation Three dimensional
命令生成一个四季的水文循环的图。
命令运行时,可以在右侧看到进度,等待进度到100%,即会展示绘制的图片。
绘图最关键的就是设计prompt。比如上面的绘图命令中:
- Diagrammatic isometric提示用于科研绘图展示
- four seasons 指定4个子图分别生成4季的图像
- rough-edged 2d animation Three dimensional 用于展示2d风格和三维风格
可以尝试让ChatGPT生成绘图prompt,再自己微调。
也可以考虑上传先找到一张样图,使用/describe
命令获取MJ对该图片的描述。将该描述略微修改后,作为/imagine
命令生成图像的prompt。
比如先使用 /describe
命令对下图进行描述。
描述后,生成了4个可选的图片介绍,选择第一个描述,稍作修改后作为prompt生成图像 /imageine An educational poster titled "The Water JCyle" that depicts the water cycle from its source to oceans, highlighting key elements such as clouds and raindrops in blue color on one side of the page. The other half shows an illustration showing vegetation, rivers, lakes, etc., with arrows connecting them all around. There is also text detailing each step in the process, along with notes about soil, air, atmosphere, and Earth's surface waters.
等待片刻,即可得到基于该图生成的示意图。还是有一些相似,可以在此基础上再修改。可以看到,MJ对文字的支持不好,推荐只用MJ生成图片,后期自己加文字标注。
绘图参数
绘图时,可以在绘图的prompt后面添加一些参数,用来控制绘图的一些设置,如图像比例、清晰度之类的。常用的参数有:
--aspect
或--ar
,绘图比例,比如 4:3、16:9,默认为1:1--chaos <0-100>
或者--c <0-100>
,控制图片的创意度和多样性,数字越大,创意性越强,默认为0--no
,控制图片中不要出现的元素,比如--no dogs
,会尝试从图像中移除狗--quality
或--q
,控制图片的精细质量程度,默认值是1。数值越大,越多细节,但渲染时间越长--seed <0-4294967295>
,绘图种子,用来控制图片相似性。使用相同的种子编号和提示将产生相似(也就是并不相同)的结果图像。seed值可以影响图像的细节、颜色、形状等方面,但不会改变图像的主题和内容--stop <10-100>
,控制图片渲染到哪一个进度停止,默认为100,即全部渲染完成后再停止--style <1, 2, 3, 4, 5.0, 5.1, 5.2, or 6>
,模型版本切换,从MJ V1到MJ V6有非常多个版本可以切换。默认使用最新的 V6版本--stylize <0-1000>
或者--s
,控制图片的风格化程度,数值越高图片的艺术性越强,和写的内容偏差就越大,默认是100 (style med)--iw <0–2>
设置相对于文本粗细的图像提示粗细。默认值为 1--repeat <1–40>
重复运行n次,用于多次运行选最好的。
图片调整
MJ可以在之前绘图的基础上做各种调整。比如,初次绘图后,图片的下方会出现9个图标,可以对之前生成的图像进行调整:
- U1~U4 (Upscale) 可以选择刚才的某一个子图放大,并添加更多的细节
- V1~V4 (Vary) 可以对所选图像进行进一步变化,生成图的风格和构图会与所选图像相似
- 最后一个循环箭头的图标用于重新生成图像。
选择需要的子图后,可以继续点击下方按钮对图片进行修改,主要包括 Upscale(提高分辨率)、Zoom out(向外括图)、vary(更新图像)和平移括图。
- Upscale 是提升图片的分辨率,并添加更多细节。
- Zoom out 是以当前图像为中心,根据提示词向外括图
- Vary 是对图像的原始内容进行更新。其中:
- Vary (Subtle) 和 Vary (Strong) 是对图像整体进行重绘,Strong修改程度比Subtle更大
- Vary (Region) 则是对图片的局部进行重绘。点击按钮后,在弹出的新窗口中通过方框或者套索选择要重绘的区域,然后在下方窗口中输入用于重绘的prompt。该prompt仅需要提示如何对选定区域进行重绘,不需要添加原来的prompt。
- 4个方向按钮则是在不改变原来图像的情况下,向指定方向平移括图。
更具体的解释Vary (Region):
- 为了保证整体的协调,局部修改仍然受之前全局prompt的约束,所以如果要大面积的修改图像,仍然需要调整全局的prompt,而不是选中大范围后进行局部重绘
- 局部重绘后,没有选中的地方不会变化,选择的地方重绘后可能和原来差别很大。如果想要保证和原来绘图尽量一直,可以在绘图时设置和原来相同的随机数种子(
--seed xx
),并且增大iw参数 (比如--iw 2
,iw的范围为[0,2])。其中,2就是深度参考之前的图片,基本上构图不会发生什么变化。
如果想要重绘部分也尽可能的与原来保持一致,可以尝试Stable Diffusion。SD中绘图时可以使用ControlNet,可以在该模型中使用Candy边缘检测,使生成的图像与原图轮廓比较相近,具体可参考 stable diffusion 绘图 局部重绘
保存高清大图
- 保存图片时不要直接右键保存,这样保存的是图像的缩略图。分辨率仅为798*798。应该在点击打开图像后,点击图像左下角的
在浏览器打开
按钮,打开图像的原始高分辨率图,再右键保存。 - 绘图完成后生成的是4个子图拼接,可以通过下方的U1~U4按钮展开绘制某一个图,默认情况下得到的分辨率是1024*1024。
- 选到某个子图后,可以使用Upscale提升分辨率,其中
Upscale(Subtle)
将尽量保留原来的细节,得到2048*2048分辨率。 - MJ目前最高只能做到2k分辨率,如果需要再高的分辨率,可以考虑图像超分辨率。但是尝试找了一下,目前很少有免费的大于2k的在线图像超分辨率,可能还是得本地部署超分辨率模型,比如Real-ESRGAN。
总结起来,MJ目前最高可以生成2k分辨率的图像。
以下是一些2024.05(MJ V6)时已经失效的提升分辨率的方法:
- 之前可以运行
/setting
命令,在设置中将分辨率调整为High quality(2x cost)
模式以提升分辨率。但是V6设置中已经没有分辨率的选项了 - 之前可以在绘图时添加
--hd
参数进行高清绘图,V6时已无法使用,提示--hd is not compatible with --version 6
- 绘图时可以使用
--q
参数设置绘图质量,但是该参数的可选范围是0.25~1,而默认参数已经是最高值1了,无法再调整。 - 有教程提到可以通过
--w width
的方式自定义绘图宽度,从而实现高清绘图。但是V6时测试绘图时加上--w 2048
,最终绘制出来的单子图仍然是1024*1024
的,通过upscale最后也只能达到2048*2048
分辨率,没有变化。
prompt设计的技巧
MJ的prompt包含3部分:图像prompt、文本prompt和参数。其中:
- 图像prompt以图像链接的形式给出,可以影响最终结果的样式和内容。图像prompt始终应该在prompt的最前方
- 文本prompt,最常用的prompt,给出要生成的图像的文本说明
- 参数,用来更改图像的生成方式,可以更改纵横比、型号、升频器等。位于prompt的末尾。
对于prompt的设计,官方有一些建议:
- 用词尽量具体。在许多情况下,更具体的同义词效果更好。比如对于大小,可以使用try tiny, huge, gigantic, enormous或者immense等词。
- 控制描述的长度。更少的词意味着每个词的影响力更大。单词间通过逗号、括号或者连字符来组织想法。如果描述太复杂,可能产生一些克苏鲁的东西……
- 专注于想要的,而不是不想要的。描述时不要写反向表达,就正向思维说想要XX呈现在图片中。如果想要控制这个XX不在生成的图片中,可以使用
--no
参数 - 尽可能处理好背景和细节,可以从以下几个方面来描述:
- 主题:人、动物、人物、地点、物体等 (Subject: person, animal, character, location, object, etc.)
- 媒介:照片、绘画、插图、雕塑、涂鸦、挂毯等 (Medium: photo, painting, illustration, sculpture, doodle, tapestry, etc.)
- 环境:室内、室外、月球上、纳尼亚、水下、翡翠城等 (Environment: indoors, outdoors, on the moon, in Narnia, underwater, the Emerald City, etc.)
- 照明:柔和、环境、阴天、霓虹灯、工作室灯等 (Lighting: soft, ambient, overcast, neon, studio lights, etc)
- 颜色:充满活力、柔和、明亮、单色、彩色、黑白、柔和等 (Color: vibrant, muted, bright, monochromatic, colorful, black and white, pastel, etc.)
- 情绪:稳重、平静、喧闹、精力充沛等 (Mood: Sedate, calm, raucous, energetic, etc.)
- 构图:人像、头像、特写、鸟瞰图等 (Composition: Portrait, headshot, closeup, birds-eye view, etc.)
- 如果要控制图片中某个物体的数量,尽量具体化。比如说"two dogs",或者"flock of birds"
- 不用考虑大写英文单词
个人感觉MJ对文字的支持不好,不要企图让MJ在图片中加入文字,不然可能会很怪。
关于MJ的更多使用,可以查看其官方文档。
本文参考: