【AI绘画】一文讲清楚Midjourney人物形象保持一致性方法cref,和其它一致性保持命令到底有什么区别

本教程没有难懂的理论,全是实操的截图,非常通俗易懂。

能够帮你在最短的时间里,掌握Midjourney的4个保持一致性指令的核心操作方法。真正有效地提高工作的效率。

1 –cref命令

即角色参照(Character Reference )指令。

实操演示 ‍‍‍‍‍‍‍
img

img

img

img

img

–cref命令的书写格式

提示词 + 空格 + --cref(角色参照指令) + 空格 +url(url表示参考图的链接)

如:1girl,formal_dress,crazy_smile,highres,in spring,castle,bust --cref https://s.mj.run/05R6ZpuIOO8 --cw 100 --v 6.1 --s 50

生成的效果展示

img

–cref可以与–cw参数搭配使用,用来调节参数强度。

–cw数值范围为0-100。默认强度为 100。

即“–cw100”,生成的图像会参考人物的脸部、发型和着装。

设置强度为0时,即“–cw 0”,则只会专注于参照脸部,也就是适合给特定角色换装、换发型。

–cref命令只对Midjourney自己创作图像作为参考图像,用真人照片作为参考图像可能会产生扭曲。

–cref命令的复制精确度有限,不能复制酒窝、纹身、耳环、雀斑等内容,对于除了人以外的动物,—cref命令也没能精确复制。

兼容性

只能用于V6 和 NIJI 6模型(不能用在V5等)。效果方面,官方公告中也提示了,新功能更适合用。

–cref命令的特点

保持人物脸部特征不变,可以更换场景、人物发型、服装和风格。

2 –sref命令

也就是Style Reference(样式一致性),专注于保持图像的整体风格一致性,比如色彩、构图、技法、呈现介质等等。

如果你想克隆参考图的整体风格,那你就可以使用这个–sref命令。

*实操演示*

img

img

img

img

img

–sref命令的书写格式

提示词 + 空格 + --sref(风格复刻指令) + 空格 +urlA + 空格 + urlB + 空格 + urlC(url表示参考图的链接)。

如:1girl,formal_dress,crazy_smile,highres,in spring,castle,bust --sref https://s.mj.run/-3cXCHcZato --sw 100 --v 6.1 --s 50

生成的效果展示

img

–sref可以与–sw参数搭配使用,用来调节参数强度。

–sw数值范围为0-100。默认强度为 0。

即“–sw 100”,生成的图像会和参考的风格保持一致。

设置强度为0时,即“–sw 0”,生成的图像会和参考的风格不一致。

进阶权重控制法

1 设置单张参考图权重
前面内容正常输入+urlA+空格+::数字+urlB+空格+::数字+urlC+空格+::数字
如:urlA ::2 urlB ::3 urlC ::5

2 设置整体参考图总权重
前面内容正常输入+urlA+空格+urlB+空格+urlC+空格±-sw 参数
如:urlA urlB urlC --sw 100

-sw的默认参数为100表示正常强度,设置为0表示关闭风格参考,最高设置为1000,注意⚠️–sw和参数之间有一个空格。

–sref命令的特点

保持风格不变,更换画面内容。

*–cref命令和*–sref命令混合的用法

–cref命令和–sref命令也可以同时使用的。

–cref和–sref命令混合用法的书写格式

提示词 + 空格 + --cref(角色参照指令) + 空格 +url1 + --sref(风格复刻指令) + 空格 +url2(url表示参考图的链接)。

如:1girl,formal_dress,crazy_smile,highres,in spring,castle,bust --cref https://s.mj.run/05R6ZpuIOO8 --cw 100 --sref https://s.mj.run/-3cXCHcZato --sw 100 --v 6.1 --s 50

生成的效果展示

img

–seed命令的特点

保持画面风格,可以根据需求生成不同的画面内容。

适合的场景是用于寻找灵感。

4 垫图 + IW权重命令

垫图是运用参考图片链接和IW控制权重,允许用户指定一个或多个参考图像,并通过调整IW的值来控制这些参考图像对最终生成结果的影响响度。

可以是角色,场景,风格的一致性。也可以将多个看似不相关的图像元素混在一张图里。

实操演示

img

img

img

img

img

垫图 + IW命令的书写格式

参考链接 + 空格 + 提示词 + 空格 + --iw值。

如:https://s.mj.run/05R6ZpuIOO8 1girl,formal_dress,crazy_smile,highres,in spring,castle,bust --iw 2 --v 6.1 --s 50

生成的效****果展示

img

这个命令的精髓在于调整IW值,以确保生成的图像,既符合创意要求,又保持一定的原创性和创新性。

垫图 + IW命令的特点

参考整张图的内容,包括人物特征、风格等。

总结

4个命令功能的特点

–cref命令:

保持人物脸部特征不变,可以更换场景、人物发型、服装和风格。

–sref命令:

保持风格不变,更换画面内容。

–seed种子命令:

保持画面风格,可以根据需求生成不同的画面内容。

垫图 + IW命令:

参考整张图的内容,包括人物特征、风格等。‍‍‍‍

以上4个功能看似简单,但又存在着功能的交叉,它们都提供了不同维度上的控制,和创作上的连贯性。

而它们的区别,则在于每个命令解决的问题和角度,需要非常多的实践,才能内化成一种技术美学的感知。

👉12000+AI关键词大合集👈

在这里插入图片描述

这份完整版的AI绘画全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

<think>嗯,用户想了解C++中的左值引用右值引用的区别以及它们的目的。首先,我得回顾一下自己对这些概念的理解,确保准确无误。 左值引用,用&符号声明,主要用于给左值起别名。左值通常是有名字的变量,可以取地址,比如int x=10;然后int& ref = x;这样ref就是x的别名,修改ref会影响x的值。不过左值引用不能直接绑定到右值,比如临时对象或字面量,除非用const修饰,比如const int& ref = 10;这样可以延长右值的生命周期。 然后是右值引用,C++11引入的,用&&符号。主要目的是处理右值,比如临时对象,移动语义完美转发。右值引用可以绑定到右值,比如int&& rref = 10;这样就能直接操作这些临时对象,避免不必要的拷贝,提升性能。移动构造函数移动赋值运算符就用到了右值引用,通过转移资源而不是复制,提高效率。 用户可能想知道两者的区别,比如语法上的&&&,以及它们能绑定的值类型不同。左值引用只能绑定左值,右值引用只能绑定右值,但需要注意,使用std::move可以将左值转换为右值,从而让右值引用绑定到左值,但这之后原左值可能处于有效但未定义的状态,需要谨慎使用。 另外,目的方面,左值引用主要用于函数参数传递返回,避免拷贝,也用于实现拷贝构造函数等。右值引用则是为了支持移动语义,允许资源转移,减少深拷贝的开销,特别是在处理大型数据结构时,比如vector或string的临时对象,移动而非拷贝可以显著提升性能。 可能用户还关心应用场景,比如移动构造函数移动赋值运算符的实现,或者完美转发中如何保持参数的左右值属性。需要举例说明,比如std::move的使用,或者模板中的T&&万能引用,结合引用折叠规则实现完美转发。 需要检查引用资料中的内容,确保回答准确。例如,引用3中提到右值引用用于移动语义完美转发,引用4提到左值引用是否可以绑定右值的情况,可能需要说明const左值引用可以绑定右值,而普通左值引用不行。 还要注意用户可能存在的误区,比如认为右值引用只能绑定到右值,但实际上通过std::move可以将左值转为右值引用,这时候原左值的状态可能会被移动,所以使用后需要谨慎。 总结起来,回答的结构应该先定义左值右值,再分别解释左值引用右值引用,比较它们的区别,然后说明各自的目的应用场景,最后可能给出示例代码帮助理解。</think>### C++左值引用与右值引用的区别及目的 #### 一、基本概念 1. **左值(Lvalue)** 左值是可以取地址、有名字的非临时对象。例如变量、函数返回的引用、`const`对象等。 $$x = 10 \quad (\text{x是左值})$$ [^2] 2. **右值(Rvalue)** 右值是不能取地址、没有名字的临时对象。例如字面量、函数返回的非引用值等。 $$10 \quad (\text{10是右值})$$ [^2] --- #### 二、左值引用与右值引用的定义 1. **左值引用(Lvalue Reference)** - 语法:`T&` - 用途:绑定左值,用于避免拷贝操作或修改原对象。 - 限制:不能直接绑定右值(除非使用`const`修饰)。 ```cpp int x = 10; int& lref = x; // 正确:绑定左值 // int& error = 10; // 错误:不能绑定右值 const int& cref = 10; // 正确:const左值引用可绑定右值[^4] ``` 2. **右值引用(Rvalue Reference)** - 语法:`T&&` - 用途:绑定右值,实现移动语义(资源转移)完美转发。 - 限制:不能直接绑定左值(除非使用`std::move`)。 ```cpp int&& rref = 10; // 正确:绑定右值 int x = 10; int&& rref2 = std::move(x); // 正确:将左值转为右值[^3] ``` --- #### 三、核心区别 | **特性** | **左值引用** | **右值引用** | |------------------|--------------------|--------------------| | 语法 | `T&` | `T&&` | | 绑定对象 | 左值 | 右值 | | 生命周期管理 | 不改变原对象生命周期 | 可延长临时对象生命周期 | | 典型应用 | 避免拷贝、函数参数 | 移动语义、完美转发 | --- #### 四、设计目的 1. **左值引用的目的** - 避免拷贝大对象(如函数参数传递)。 - 实现拷贝构造函数、运算符重载等。 - 允许函数返回引用以支持链式调用(如`operator<<`)[^5]。 2. **右值引用的目的** - **移动语义**:通过`std::move`将资源从临时对象转移到新对象,减少深拷贝开销。 ```cpp std::vector<int> v1 = {1, 2, 3}; std::vector<int> v2 = std::move(v1); // v1的资源被转移到v2 ``` - **完美转发**:在模板中保留参数的左右值属性,例如`std::forward`实现泛型编程。 --- #### 五、示例代码 ```cpp // 移动构造函数示例 class MyString { public: MyString(MyString&& other) { // 右值引用参数 data_ = other.data_; other.data_ = nullptr; // 转移资源 } private: char* data_; }; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值