赞
踩
英文原文:https://stable-diffusion-art.com/controlnet/
ControlNet 是一种神经网络,通过添加额外条件来控制Stable Diffusion中的图像生成。详细信息请参阅 Lvmin Zhang 及其同事撰写的文章“向文本到图像扩散模型添加条件控制”。
它改变了游戏规则。您可以使用 ControlNet 进行以下操作:
在这篇文章中,您将了解有关 ControlNet 所需的一切。
ControlNet 是一种用于控制Stable Diffusion模型的神经网络模型。您可以将 ControlNet 与任何稳定扩散模型一起使用。
使用Stable Diffusion模型的最基本形式是文本到图像。它使用文本提示作为指导图像生成的条件,以便您生成与文本提示匹配的图像。
除了文本提示之外,ControlNet 还添加了一项条件。 ControlNet 中的额外调节可以采取多种形式。
让我向您展示 ControlNet 功能的两个示例:通过 (1) 边缘检测和 (2) 人体姿势检测控制图像生成。
如下图所示,ControlNet 获取额外的输入图像并使用 Canny 边缘检测器检测其轮廓。然后将包含检测到的边缘的图像保存为控制图。它被输入 ControlNet 模型作为文本提示的额外条件。
从输入图像中提取特定信息(在本例中为边缘)的过程称为 annotation(在研究文章中)或预处理(在 ControlNet 扩展中)。
边缘检测并不是图像预处理的唯一方法。 Openpose 是一种快速人体关键点检测模型,可以提取人体姿势,例如手、腿和头部的位置。请参阅下面的示例。
使用 Openpose 通过人体姿势检测注释的输入图像。
以下是使用 OpenPose 的 ControlNet 工作流程。使用 OpenPose 从输入图像中提取关键点,并将其保存为包含关键点位置的控制图。然后将其与文本提示一起作为额外条件输入到Stable Diffusion。图像是根据这两个条件生成的。
使用 Canny 边缘检测和 Openpose 有什么区别? Canny 边缘检测器可提取拍摄对象和背景的边缘。它往往会更忠实地翻译场景。你可以看到跳舞的男人变成了女人,但轮廓和发型都保留了。
OpenPose仅检测人体关键点,如头部、手臂等位置。图像生成更加自由,但遵循原始姿势。
上面的例子生成了一个左脚指向侧面的女人跳起来,与原始图像和 Canny Edge 例子中的图像不同。原因是OpenPose的关键点检测没有指定脚的方向。
让我们逐步了解如何在 AUTOMATIC1111 中安装 ControlNet,这是一种流行且功能齐全(并且免费!)的Stable Diffusion GUI。我们将使用这个扩展,它是使用 ControlNet 的事实上的标准。
如果您已经安装了 ControlNet,则可以跳至下一部分以了解如何使用它。
通过我们的快速入门指南中的一键Stable Diffusion Colab 笔记本,可以轻松使用 ControlNet。
在 Colab 笔记本的扩展部分中,选中 ControlNet。
按 Play 按钮启动 AUTOMATIC1111。就是这样!
您可以在 Windows PC 或 Mac 上将 ControlNet 与 AUTOMATIC1111 结合使用。如果您尚未安装 AUTOMATIC1111,请按照这些文章中的说明进行操作。
如果您已经安装了 AUTOMATIC1111,请确保您的副本是最新的。
https://github.com/Mikubill/sd-webui-controlnet
stable-diffusion-webui\extensions\sd-webui-controlnet\models
重新启动 AUTOMATIC1111 webui。
如果扩展安装成功,您将在 txt2img 选项卡中看到一个名为 ControlNet 的新可折叠部分。它应该位于脚本下拉菜单的正上方。
这表明扩展安装成功。
T2I adaptiers是神经网络模型,用于为Stable Diffusion的图像生成提供额外的控制。它们在概念上与 ControlNet 类似,但设计不同。
A1111 ControlNet 扩展可以使用 T2I adapters。您需要在此处下载模型。获取文件名类似于 t2iadapter_XXXXX.pth 的文件
许多 T2I adapters的功能与 ControlNet 模型重叠。我只会介绍以下两个。
将它们放入 ControlNet 的模型文件夹中。
stable-diffusion-webui\extensions\sd-webui-controlnet\models
ControlNet 是一个经过快速发展的扩展。发现您的 ControlNet 副本已过时的情况并不罕见。
仅当您在 Windows 或 Mac 上本地运行 AUTOMATIC1111 时才需要更新。该站点的 Colab 笔记本始终运行最新的 ControlNet 扩展。
要确定您的 ControlNet 版本是否是最新的,请将 txt2img 页面上 ControlNet 部分中的版本号与最新版本号进行比较。
更新 ControlNet 扩展的最简单方法是使用 AUTOMATIC1111 GUI。
如果您熟悉命令行,则可以使用此选项来更新 ControlNet,这样您就可以放心,Web-UI 不会执行其他操作。
步骤 1:打开终端应用程序 (Mac) 或 PowerShell 应用程序 (Windows)。
步骤 2:导航到 ControlNet 扩展的文件夹。 (如果您安装在其他地方,请相应调整)
cd stable-diffusion-webui/extensions/sd-webui-controlnet
步骤 3:通过运行以下命令更新扩展。
git pull
现在您已经安装了 ControlNet,让我们来看一个简单的使用示例!稍后您将看到每个设置的详细说明。
按右侧的插入符号以展开 ControlNet 面板。它显示了控制旋钮的完整部分和图像上传画布。
我将通过下图向您展示如何使用ControlNet。您可以使用下面的图像以按照教程进行操作。
ControlNet 需要与Stable Diffusion模型一起使用。在稳定扩散检查点下拉菜单中,选择要与 ControlNet 一起使用的模型。选择 v1-5-pruned-emaonly.ckpt 以使用 v1.5 基础模型。
在 txt2image 选项卡中,编写一个提示,并可选地编写一个供 ControlNet 使用的否定提示。我将使用下面的提示。
提示词:
full-body, a young female, highlights in hair, dancing outside a restaurant, brown eyes, wearing jeans
反向提示词:
disfigured, ugly, bad, immature
为生成图像设置图像大小。我的演示图像将使用宽 512、高 776 的尺寸。请注意,图像大小是在 txt2img 部分设置的,而不是在 ControlNet 部分。
GUI 应该如下所示。
现在让我们转到 ControlNet 面板。
首先,将图像上传到图像画布。
选中启用复选框。
您需要选择**preprocessor(预处理器)**和模型。预处理器只是前面提到的注释器的不同名称,例如 OpenPose 关键点检测器。让我们选择 openpose 作为预处理器。
所选的 ControlNet 模型必须与预处理器一致。对于 OpenPose,您应该选择 control_openpose-fp16 作为模型。
ControlNet 面板应如下所示。
就这样。现在按“Generate”开始使用 ControlNet 生成图像。
您应该看到生成的图像遵循输入图像的姿势。最后一张图像直接来自预处理步骤。在本例中,它是检测到的关键点。
完成后,取消选中 Enable 复选框以禁用 ControlNet 扩展。
这是使用 ControlNet 的基础知识!
剩下的就是理解
使用 ControlNet 的第一步是选择预处理器。打开预览很有帮助,这样您就可以了解预处理器正在做什么。预处理完成后,原始图像将被丢弃,仅预处理后的图像将用于 ControlNet。
要打开预览:
选择预处理器后,您必须选择正确的模型。
很容易辨别 v1.1 中使用的正确模型。您所需要做的就是选择与预处理器具有相同起始关键字的模型。
例如:
Preprocessor | 模型 |
---|---|
depth_xxxx | control_xxxx_depth |
lineart_xxxx | control_xxxx_lineart |
openpose_xxxx | control_xxxx_openpose |
有多个 OpenPose 预处理器。
OpenPose 可检测人体关键点,例如头、肩膀、手的位置等。它对于复制人体姿势非常有用,而无需复制服装、发型和背景等其他细节。
所有 openpose 预处理器都需要与 ControlNet 模型下拉菜单中的 openpose 模型一起使用。
OpenPose 预处理器是:
OpenPose 是基本的 OpenPose 预处理器,可检测眼睛、鼻子、眼睛、颈部、肩膀、肘部、手腕、膝盖和脚踝的位置。
OpenPose_face 执行 OpenPose 处理器执行的所有操作,但会检测其他面部细节。
它对于复制面部表情很有用。
例子:
OpenPose面部仅检测面部而不检测其他关键点。这对于仅复制面部而不是其他关键点很有用。
请参阅下面从文本到图像的示例。身体不受约束。
OpenPose_hand 将关键点检测为 OpenPose 以及手和手指。
示例图像:
OpenPose 全面检测 openPose 面部和 openPose 手所做的一切。
示例图像:
DWPose 是一种新的姿势检测算法,基于研究文章《Effective Whole-body Pose Estimation with Two-stage Distillation》。它完成与 OpenPose Full 相同的任务,但做得更好。您应该使用 dw_openpose_full 而不是 openpose_full。
如果您在预处理器菜单中没有看到 dw_openpose_full,请更新 ControlNet。
OpenPose 和 DW OpenPose 的参考图像。
DW OpenPose 在检测手和手指方面做得更好。
平铺重采样模型用于向图像添加细节。它通常与放大器一起使用,同时放大图像。
请参阅 ControlNet Tile Upscaling 方法。
参考是一组预处理器,可让您生成与参考图像类似的图像。稳定扩散模型和提示仍然会影响图像。
参考预处理器不使用控制模型。您只需要选择预处理器,而不需要选择模型。 (事实上,选择参考预处理器后,模型下拉菜单将被隐藏。)
有 3 个参考预处理器。
选择要使用的这些预处理器之一。
下面是一个例子。
参考图像(输入)。
使用 CLIP 询问器猜测提示。
a woman with pink hair and a robot suit on, with a sci – fi, Artgerm, cyberpunk style, cyberpunk art, retrofuturism
disfigured, ugly, bad, immature
模型:Protogen v2.2
如果你拧我的胳膊,我会说仅供参考的效果最好。
以上图片均来自平衡模式。我认为改变风格保真度没有太大区别。
图像提示适配器(IP-adapter)是一种 ControlNet 模型,允许您使用图像作为提示。阅读 He Ye 和同事撰写的文章 IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models,并访问他们的 Github 页面了解实现细节。
在 ControlNet 中使用 IP 适配器之前,请下载 v1.5 型号的 IP-adapter 模型。
将它们放入 ControlNet 的模型文件夹中。
stable-diffusion-webui > extensions > sd-webui-controlnet > models
IP-adapter 允许您使用图像作为提示,因此您需要提供参考图像。让我们使用下面的图像。
图像提示的参考图像。
在 ControlNet 部分中,将图像上传到图像画布。
以下是使用 IP-adapter 的 ControlNet 设置的其余部分
下面是带有和不带有 IP-adapter 的图像。
查看参考图像的特征,例如转移到生成图像的花朵和深色!
SD 1.5 Plus IP-Adapter 型号具有类似的功能,但效果更强。
SD1.5 Plus 模型非常强大。它几乎会复制参考图像。您可以减少控制权重来调低它。
Canny 边缘检测器是一种通用的老式边缘检测器。它提取图像的轮廓。它对于保留原始图像的构图很有用。
在预处理器和模型下拉菜单中选择要使用的canny。
生成的图像将遵循轮廓。
深度预处理器从参考图像中猜测深度信息。
参考图片:
深度图:
提示词和反向提示词:
a woman retrofuturism
disfigured, ugly, bad, immature
您可以看到生成的图像遵循深度图 (Zoe)。
与更详细的Leres++比较:
线条艺术呈现图像的轮廓。它试图将其转换为简单的绘图。
这里有一些线条艺术预处理器。
与线稿控制模型一起使用。
下面的图像是在“控制权重”设置为 0.7 的情况下生成的。
M-LSD(Mobile Line Segment Detection 移动线段检测)是一种直线检测器。它对于提取具有直边的轮廓非常有用,例如室内设计、建筑物、街景、相框和纸张边缘。
曲线将被忽略。
法线贴图指定表面的方向。对于 ControlNet,它是一个图像,指定每个像素所在表面的方向。图像像素代表表面面向的方向,而不是颜色值。
法线贴图的用法与深度贴图类似。它们用于传输参考图像的 3D 合成。
法线贴图预处理器:
与 Midas 深度图一样,Midas 法线贴图非常适合将主体与背景隔离。
Bae 法线贴图倾向于在背景和前景中渲染细节。
涂鸦预处理器将图片变成涂鸦,就像手绘的一样。
所有这些预处理器都应与scribble控制模型一起使用。
HED 产生粗糙的涂鸦线。
Pidit 往往会产生粗线条,细节很少。它非常适合复制没有细节的电路板轮廓。
通过调整 XDoG 阈值可以控制细节水平,使 xDoG 成为用于创建涂鸦的多功能预处理器。
分割预处理器标记参考图像中的对象类型。
下面是一个正在运行的分割处理器。
建筑物、天空、树木、人和人行道都标有不同的预定义颜色。
您可以在此处的颜色图中找到 ufade20k 和 ofade20k 的对象类别和颜色。
有几个分段选项
请注意,ADE20k 和 COCO 分割的颜色图是不同的。
您可以使用分段预处理器来传输对象的位置和形状。
下面使用具有相同提示和种子的这些预处理器。
Futuristic city, tree, buildings, cyberpunk
Uniformer 在此示例中准确地标记了所有内容。
在这种情况下,OneFormer 的噪点较多,但不会影响最终图像。
OneFormer COCO 的表现类似,但有一些标签错误。
细分是一项强大的技术。您可以进一步操作分割图以将对象放置在精确的位置。使用 ADE20k 的颜色图。
随机预处理器搅动输入图像。让我们看看随机播放的效果。
与Shuffle控制模型一起,Shuffle预处理器可用于传输参考图像的配色方案。
输入图像:
Shuffle预处理器:
与其他预处理器不同,Shuffle 预处理器是随机的。它将受到您的种子值的影响。
将 Shuffle 预处理器与 Shuffle 控制模型结合使用。 Shuffle 控制模型可以与或不与 Shuffle 预处理器一起使用。
下图是 ControlNet Shuffle 预处理器和 Shuffle 模型(与上一节相同的提示)。配色方案大致遵循参考图像。
下图仅适用于 ControlNet Shuffle 模型(预处理器:无)。图像构图更接近原图。配色方案与随机排列类似。
供您参考,下图是在没有 ControlNet 的情况下具有相同提示的图像。配色方案截然不同。
彩色网格 T2i 适配器预处理器将参考图像缩小 64 倍,然后将其扩展回原始大小。最终效果是局部平均颜色的网格状斑块。
原始参考图:
使用 t2ia_color_grid 进行预处理:
然后,预处理后的图像可以与 T2I 颜色适配器 (t2iadapter_color) 控制模型一起使用。
图像生成将在空间上松散地遵循配色方案。
A modern living room
增加 ControlNet 权重以使其更紧密地跟随。
您还可以为此 T2I 颜色模型使用预处理器 None。
在我看来,它与 image-to-image 非常相似。
t2ia_style_clipvision 将参考图像转换为 CLIP 视觉嵌入。这种嵌入包含有关图像内容和风格的丰富信息。
您将需要使用控制模型 t2iadapter_style_XXXX。
看看这个惊人的风格转移的实际效果:
参考图片:
T2I adapter – CLIP vision:
sci-fi girl
以下是关闭 ControlNet 时会生成的提示信息。
该功能与 Reference ControlNet 非常相似,但我对 T2IA CLIP 视觉的评价更高。
ControlNet 修复可让您在修复中使用高降噪强度来生成较大的变化,而不会牺牲整个图片的一致性。
例如,我使用了针对现实人物的提示。
photo of young woman, highlight hair, sitting outside restaurant, wearing dress, rim lighting, studio lighting, looking at the camera, dslr, ultra quality, sharp focus, tack sharp, dof, film grain, Fujifilm XT3, crystal clear, 8K UHD, highly detailed glossy eyes, high detailed skin, skin pores
负面提示词:
disfigured, ugly, bad, immature, cartoon, anime, 3d, painting, b&w
我有这张图像,想通过修复来重新生成脸部。
如果我用较高的去噪强度(> 0.4)对人脸进行内绘,结果很可能是全局不一致的。以下是去噪强度为 1 的未绘制图像。
ControlNet Inpainting 是您的解决方案。
要使用 ControlNet 修复:
6. 按“Generate”开始修复。
现在,即使在最大去噪强度 (1) 下,我也能得到与全局图像一致的新面孔!
目前,有 3 个修复预处理器
您可以使用特殊的 IP-adapter face 模型在多个图像中生成一致的面部。
要使用 IP-adapter face 模型复制面部,请转至 ControlNet 部分并上传头像图像。
重要的 ControlNet 设置:
控制权重应约为 1。您可以使用多个 IP-adapter face ControlNet。确保相应地调整控制权重,使其总和为 1。
提示词:
A woman sitting outside of a restaurant in casual dress
负面提示词:
ugly, deformed, nsfw, disfigured
你得到:
与多个 IP-adapter face ControlNet 保持一致。
您会在 ControlNet 扩展中看到很多设置!当您第一次使用它时,可能会有点害怕,但让我们逐一介绍一下。
这将是一次深入的探索。如果需要的话,休息一下并去洗手间……
Image Canvas(图像画布):您可以将输入图像拖放到此处。您还可以单击画布并使用文件浏览器选择文件。输入图像将由“预处理器”下拉菜单中选定的预处理器进行处理。将创建控制图。
Write icon(写入图标):使用白色图像创建新画布,而不是上传参考图像。它用于直接创建涂鸦。
Camera icon(相机图标):使用设备的相机拍摄照片并将其用作输入图像。您需要授予浏览器访问相机的权限。
Enable(启用):是否启用 ControlNet。
Allow Preview(允许预览):选中此项可启用参考图像旁边的预览窗口。我建议您选择此选项。使用“预处理器”下拉菜单旁边的爆炸图标可以预览预处理器的效果。
Preprocessor(预处理器):预处理器(在研究文章中称为注释器),用于对输入图像进行预处理,例如检测边缘、深度和法线贴图。 None 使用输入图像作为控制图。
Model:要使用的 ControlNet 模型。如果您选择了预处理器,通常会选择相应的模型。 ControlNet 模型与在 AUTOMATIC1111 GUI 顶部选择的稳定扩散模型一起使用。
在预处理器和模型下拉菜单下方,您将看到三个滑动条,可让您调节控制效果:控制权重、开始和结束控制步骤。
我将用下图来说明控制权重的效果。这是一个女孩坐着的图像。
但在提示词中,我会要求生成一个站着的女人。
full body, a young female, highlights in hair, standing outside restaurant, blue eyes, wearing a dress, side light
Weight(权重):控制图相对于提示的重视程度。它类似于提示中的关键字权重,但适用于控制图。
以下图像是使用 ControlNet OpenPose 预处理器和 OpenPose 模型生成的。
正如您所看到的,Controlnet 权重控制控制图相对于提示的遵循程度。权重越低,ControlNet 对图像遵循控制图的要求就越少。
Start ControlNet 步骤:首先应用 ControlNet 步骤。 0 表示第一步。
End ControlNet 步骤: ControlNet 步骤结束。 1表示最后一步。
让我们将起始步骤固定为 0,并更改 ControlNet 结束步骤,看看会发生什么。
由于初始步骤设置了全局构成(采样器在每个步骤中消除了最大量的噪声,并且从潜在空间中的随机张量开始),因此即使您仅将 ControlNet 应用到少至 20% 的位置,也会设置姿势第一个采样步骤。
相反,更改 ending ControlNet step 的影响较小,因为全局构成是在开始步骤中设置的。
Balanced(平衡):ControlNet 适用于采样步骤中的调节和非调节。这是标准操作模式。
My prompt is more important(我的提示更重要):ControlNet 的效果在 U-Net 注入的实例中逐渐减小(一个采样步骤中有 13 个实例)。最终效果是您的提示词比 ControlNet 具有更大的影响力。
ControlNet is more important(ControlNet 更重要):在无调节时关闭 ControlNet。实际上,CFG Scale 还充当 ControlNet 效果的乘数。
如果您不完全理解它们的实际工作原理,请不要担心。选项标签准确地说明了效果。
调整大小模式控制当输入图像或控制图的大小与要生成的图像的大小不同时要执行的操作。如果这些选项具有相同的宽高比,则无需担心它们。
我将通过设置文本到图像来生成横向图像来演示调整大小模式的效果,而输入图像/控制图是纵向图像。
Just Resize(仅调整大小):独立缩放控制图的宽度和高度以适合图像画布。这将改变控制图的纵横比。
只需调整大小即可缩放控制图以适合图像画布。
Crop and Resize(裁剪和调整大小):使图像画布适合控制图。裁剪控制图,使其与画布大小相同。
因为控制图在顶部和底部被裁剪,所以我们的女孩也是如此。
裁剪和调整大小使图像画布适合并裁剪控制图。
Resize and fill(调整大小和填充):使整个控制图适合图像画布。使用空值扩展控制图,使其与图像画布的大小相同。
与原始输入图像相比,侧面有更多的空格。
调整大小和填充使整个控制图适合图像画布并扩展控制图。
好的,现在(希望)您知道所有设置。让我们探讨一些使用 ControlNet 的想法。
您可以多次使用 ControlNet 来生成图像。让我们来看一个例子。
模型:Protogen v2.2
提示词:
An astronaut sitting, alien planet
负面提示词:
disfigured, deformed, ugly
该提示生成具有多种构图的图像。
假设我想独立控制宇航员和背景的构图。为此,我们可以使用多个(在本例中为 2 个)ControlNet。
我将使用此参考图像来固定宇航员的姿势。
ControlNet 0 的设置:
深度模型非常适合此目的。您将想要使用哪个深度模型和设置来提供您想要的深度图。
ControlNet 1 的设置:
现在我可以独立控制主体和背景的构图:
小窍门:
也许 ControlNet 最常见的应用是复制人体姿势。这是因为通常很难控制姿势……直到现在!输入图像可以是稳定扩散生成的图像,也可以是从真实相机拍摄的图像。
要使用 ControlNet 传输人体姿势,请按照说明在 AUTOMATIC1111 中启用 ControlNet。使用以下设置。
这里有一些例子。
作为一个基础示例,让我们复制以下图像中一位女士欣赏树叶的姿势。
使用各种模型和提示,您可以显着改变内容但保持姿势不变。
你可以将《低俗小说》中标志性的舞蹈场景改造成公园里的一些瑜伽练习。
这使用 ControlNet 和 DreamShaper 模型。
提示词:妇女在公园外做瑜伽的照片。负面提示词:毁容、丑陋、不好、不成熟
这是具有相同的提示,但使用 Inkpunk Diffusion 模型。 (您需要在提示中添加激活关键字nvinkpunk)
以下是v1.5模型,但有不同的提示来实现不同的风格。使用具有各种预处理的 ControlNet。最好进行试验,看看哪一种效果最好。
使用提示中的关键字通过 ControlNet 对图像进行风格化。
您还可以使用模型来风格化图像。下面是使用 Anythingv3、DreamShaper 和 OpenJourney 模型使用提示“贝多芬的绘画”生成的。
有时您可能无法找到具有您想要的确切姿势的图像。您可以使用 Magic Poser(来源)等软件工具创建自定义姿势。
第1步:访问Magic Poser网站。
步骤2:移动模型的关键点来定制姿势。
步骤 3:按预览。截取模型的屏幕截图。您应该得到如下图所示的图像。
步骤 4:使用 OpenPose ControlNet 模型。选择您选择的模型和提示来生成图像。
下面是使用 1.5 模型和 DreamShaper 模型生成的一些图像。在所有情况下,姿势都被很好地复制了。
您可以使用稳定扩散 ControlNet 的直线检测器 MLSD 模型来生成室内设计创意。以下是 ControlNet 设置。
从任何室内设计照片开始。我们以下面这个为例。
提示词:
award winning living room
以下是一些产生的设计想法。
或者,您可以使用深度模型。它将强调保留深度信息,而不是直线。
生成的图像:
Stability AI 是 Stable Diffusion 的创建者,发布了depth-to-image。它与 ControlNet 有很多相似之处,但也有重要的区别。
我们先来说说相似之处。
差异是:
如果不解释 ControlNet 的底层工作原理,本教程就不完整。
ControlNet 的工作原理是将可训练的网络模块附加到稳定扩散模型的 U-Net(噪声预测器)的各个部分。稳定扩散模型的权重被锁定,以便它们在训练过程中保持不变。训练期间仅修改附加模块。
研究论文中的模型图很好地总结了这一点。最初,附加网络模块的权重均为零,使得新模型能够利用经过训练和锁定的模型。
在训练期间,每个训练图像都会提供两个条件。 (1) 文本提示,以及 (2) 控制图,例如 OpenPose 关键点或 Canny 边缘。 ControlNet 模型学习根据这两个输入生成图像。
每种控制方法都是独立训练的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。