Page cover image

5.4 Video Generation Best Practices01

本小节主要介绍使用comfyui 进行视频创作,本部分介绍的内容可以更好地帮助大家理解在视频生成领域的CV 相关算法以及如何使用CV 工具进行创作。

In this ComfyUI IC-Light workflow, you can easily relight your “Human” Character Video using a Lightmap. Based on your prompts, and elements in your light maps like shapes and neon lights, the tool regenerates a new video with relighting.

01 生成内容

通过这ComfyUI 工作流的,你可以使用的 IC-Light 给一个有人物特征视频通过光照贴图(视频、照片)

进行重新打光,然后基于你的prompts 可以重新生成一个包含光照信息的视频。在这个小节之中你会用到基础模型用于生成新的人物特征,控制模型进行光照贴图的控制,打光模型,放大模型以及人物人脸的修复等相关的模型。

1.1原视频

https://pub-0133e7a2db8e452da3e631cfbae19752.r2.dev/high001.mp4

https://pub-0133e7a2db8e452da3e631cfbae19752.r2.dev/high-002.mp4

https://pub-0133e7a2db8e452da3e631cfbae19752.r2.dev/portfilio-001.mp4

https://pub-0133e7a2db8e452da3e631cfbae19752.r2.dev/portifil002.mp4

通过光照贴图打光,可以根据prompt 生成视频内容。

02 Pipline

因为本次的工作流涉及到模型比较多,使用步骤的比较多,所以这里使用多个步骤进行生成,整体生成的Pipeline如下;

这个pipeline 主要介绍了本工作流主要的几个模块,包含基础的设置的,以及对视频资源的初始化的,贴图资源的初始化,加载必要的模型文件的,在调整光照以及贴图的效果之后的,进行生成。

03 算法介绍

这一部分主要给大家介绍一些的基础的算法基础,这些算法的以及模型在工作流之中有着重要的作用,可以更好地的让大家了解的工作流的各部分的原理。

注意该模型是的基于sd 1.5 的模型,在此模型的基础上可以生成质量较好图像,面对每个模型,我们在使用每个模型的时候要知道每个模型使用的限制的条件。

If you use my models, install the ADetailer extension for your A1111.

Determine what to detect.确定要检测的内容 ADetailer 使用插件

从以上可以看到的,这个模型我们需要使用VAE 的模型的进行配合,当然我们可以使用一些Lora进行控制或者使用放大模型进行图片处理

3.2 Robust High-Resolution Video Matting with Temporal Guidance

这里Robust High-Resolution 是Comfyui 自带可以进行图片进行抠像模型,可以直接通过节点的进行调用。

https://github.com/PeterL1n/RobustVideoMatting/blob/master/README_zh_Hans.md

论文 Robust High-Resolution Video Matting with Temporal Guidance 的官方 GitHub 库。RVM 专为稳定人物视频抠像设计。不同于现有神经网络将每一帧作为单独图片处理,RVM 使用循环神经网络,在处理视频流时有时间记忆。RVM 可在任意视频上做实时高清抠像。在 Nvidia GTX 1080Ti 上实现 4K 76FPSHD 104FPS。此研究项目来自字节跳动

3.3 Depth Anything V2

这里使用了该模型进行的深度图,可以有效地生成图片的生成图。

https://blog.csdn.net/CV_Autobot/article/details/139816893

单目深度估计(MDE)正受到越来越多的关注,这得益于它在广泛的下游任务中的基础性作用。精确的深度信息不仅在经典应用中如3D重建、导航和自动驾驶中受到青睐,在现代场景中如AI生成的内容,包括图像、视频和3D场景中也备受关注。

模型原文件 coadapter-depth-sd15v1.pth,该模型可以更加的有效地处理深度图。

T2I-Adapter 14 是一种高效的即插即用模型,其能对冻结的预训练大型文生图模型提供额外引导。T2I-Adapter 将 T2I 模型中的内部知识与外部控制信号结合起来。我们可以根据不同的情况训练各种适配器,实现丰富的控制和编辑效果。

同期的 ControlNet 2 也有类似的功能且已有广泛的应用。然而,其运行所需的 计算成本比较高。这是因为其反向扩散过程的每个去噪步都需要运行 ControlNet 和 UNet。另外,对 ControlNet 而言,复制 UNet 编码器作为控制模型的一部分对效果非常重要,这也导致了控制模型参数量的进一步增大。因此,ControlNet 的模型大小成了生成速度的瓶颈 (模型越大,生成得越慢)。

在这方面,T2I-Adapters 相较 ControlNets 而言颇有优势。T2I-Adapter 的尺寸较小,而且,与 ControlNet 不同,T2I-Adapter 可以在整个去噪过程中仅运行一次。

3.5 Lighting based picture control controlnet

Lighting Based Controlnet : https://civitai.com/models/80536?modelVersionId=85428

https://civitai.com/models/80536?modelVersionId=85428

通过这个LC light 控制的模型我们可以知道,如果我们需要有好的效果,我们需要使用图片处理Mask

进行处理。

这里我们有一个概念,Light Maps (灯光贴图)主要用于对象表面照明信息的采样,并以此为基础创建一-个灯光(包括间接照明和直接照明信息)纹理贴图,然后将这个贴图赋予对象的表面,那么在渲染时就不再计算对象表面的直接照明和间接照明,而是直接从贴图上读取。

这是一个类似depth的controlnet,同时包含了从0到1阶段的光影构图可控的目的的controlnet。

当然 control net 的肯定是需要有一个的base model 的存在的,所以的这里的提示词就是跟之前的

在basemodel 里面是一样的。可以实现基础打光,这样通过basemodel 以及controlnet 的网络的设置

但是我希望女孩的光影层次更丰富,比如衣服上有反光,并想调整他的比例关系,通过ps或其他图片软件去色,高斯模糊,抠图的步骤后,你可以得到这样的图片。或者你可以继续按自己的意愿去重新绘画

就是说要想在衣服上也有光照的,需要做的事情“软件去色,高斯模糊,抠图

通过该Controlnet,可以让AI在生成的时候意识到哪里应该是阴影,哪里应该是明亮的部分。

目前还没有制作统一的预处理器—-可以相当于是一个预先处理器,是可以使用预先的处理器进行操作的。

3.6 IC-Light - ControlNet作者开源的AI图片打光工具Comfyui可用

https://blog.csdn.net/xs1997/article/details/139184912

它是艺术家和设计师手中的画笔,是科学家和工程师们智慧的结晶。通过IC-Light,我们得以一窥未来图像编辑的无限可能,体验到科技与艺术结合的真正魅力

iclight_sd15_fc.safetensors默认的重光照模型,以文本和前景为条件。你可以使用初始潜波来影响重亮。

iclight_sd15_fcon.safetensors与“iclight_sd15_fc”相同。“安全装置”,但经过了噪音补偿训练。注意,默认的“iclight_sd15_fc。在用户研究中,Safetensors的表现略优于该模型。这就是为什么默认模型是没有偏移噪声的模型。

iclight_sd15_fbc.safetensors -以文本、前景和背景为条件的重新照明模型。

IC-Light代表Impose Constant Light,是一个控制图像照明的项目。可以操控图像生成时的光照,对内容主体重新打光生成符合新背景环境光照的图片。这下商品图合成这种需要最大程度保持原有主体 ID 需求的最大的问题解决了。

目前,已经发布了两种类型的模型:

文本条件重新光照模型。从原图分离主体之后通过提示词生成符合光照要求的背景同时主体除了光照之外和原主体一致。

背景条件模型。给定背景图片和前景主体,会自动生成环境光,保证背景和前景的融合。 —-其实发现其实要处理的是两种的,一种的还是的背景图片的光照,一种是文本的提示词的光照的,这两种都是要注意实现的。

3.7 SAM(Segment Anything Model)& Anime Face Detector

SAM(Segment Anything Model)

尽管官方demo玩的很花很溜,但只有能够本地运行起来,才能够查看中间过程不是,基于这篇文章,使用官方的狗狗图像,采用sam_vit_b_01ec64.pth模型,给定point,完成狗狗的分割。

这只是我随意做的一段小脚本而已,功能是检测动漫人物的人脸,并在指定位置替换上自己预备好的贴图。

机器学习的原理我几乎一窍不通,全程只是普通地调库,没什么特别的技术含量。

代码主要借助了 python **Anime Face Detector**库(点击此处跳转)中动漫人脸识别的功能,这个库可以很方便地标记动漫人脸的特征点,之后手动将预设的贴图在指定位置贴上去就行了。

04 基础使用

4.1 使用方法:

  1. 上传源视频。

  2. 上传光照图视频或单个光照图像。

  3. 输入加载上限和其他设置,光照图视频中的设置应相同。

  4. 输入描述新光照设置的提示,例如阳光或霓虹灯。

  5. 选择您的模型。(建议使用真实模型)

  6. 如有需要,修改光照图合成和其他设置。

  7. 点击渲染。

输出将保存在 Comfyui > Outputs 中。

4.2 输入_1 - 设置

这里有 5 个设置:

  • 采样步骤:确定 ksampler 渲染图像所需的总步骤数。此值不应更改。[默认值 26]

  • 细节增强器:增加最终渲染中的微小细节。[使用值范围 0.1 到 1]

  • 种子:控制每个 ksampler 的生成种子。

  • 采样器 CFG:控制 ksampler 的 CFG 值。

  • 精炼器放大:类似于高分辨率修复值。[使用范围 1.1 – 1.6 以获得最佳效果]

提示

  • 正向提示:输入描述您图像的新光照的提示。

  • 负向提示:配置为提供最佳结果。欢迎进行编辑。

  • 文本编码节点:帮助编码文本以最大化质量。保持为“全”。

模型和 Loras

  • 检查点:选择任何现实的 SD 1.5 模型以获得准确结果。也可以选择任何 SD 1.5 模型以获得风格化结果。

  • Loras:[可选] 如果需要,可以从提供的列表中选择任何 loras。请勿全力使用它们。使用约 0.5-0.7 以获得最佳效果。

输入源视频

  • 上传源视频:在这里单击并上传您希望更改光照的人物视频。

    • 文件大小应小于 100 MB,Comfy 会无法上传较大的文件。

    • 视频长度应不超过 15-20 秒。较长的视频可能无法渲染。

    • 视频应为 720p 或更低。

    • 如果需要跳过一些开始帧,请使用跳帧节点。[光照图视频也将跳过相同数量的帧]

图像大小限制器

  • 图像大小限制器:在这里您可以限制渲染分辨率,无论是横屏还是竖屏,最大分辨率将始终小于或等于设置值。

    • 使用 800 – 1200 之间的值以获得最佳效果。[这会影响显存]

重要提示:先将帧加载上限设置为 10 进行测试

  • 如果您有 24 GB 的显存,使用约 200 - 300 帧,适合 1000 – 1200 的大小。

  • 如果想要渲染所有帧,请使用 0。[不推荐用于较长的视频]

4.3 遮罩和深度设置

  • 遮罩:使用稳健的视频抠图,默认设置很好。

  • 深度控制网:使用最新的 DepthAnything v2 模型。

    • 强度和结束百分比设置为 75%,以获得最佳效果。

    • 使用 Co Adaptor Depth()以获得最佳效果。

      链 接

光照图

  • 上传光照图:单击并上传您想要的光照图视频。

    • 它会自动缩放为源视频的尺寸。

    • 确保它的长度大于或等于源视频的尺寸,否则会报错。

  • 光照图控制网:此光照图也用作光控制网,使用此模型 -

    链 接

  • CN 强度和结束百分比:在这里使用较低的值,较高的值可能会导致过度曝光或光线过渡过于明显。

单一光照图

  • 使用单个图像作为光照图:取消静音这些节点,并将重定向节点连接到“选择一个输入”节点。

4.4 AnimateDiff

  • 加载 AnimateDiff 模型:您可以使用任何模型来获得不同效果。

  • AnimateDiff 其他节点:您需要对 AnimateDiff 有一定了解,以更改其他设置 [您可以在这里找到它们:]

    链 接

  • 设置 SMZ:此节点用于提高模型管道的质量,所有设置都预先定义以确保良好运行。

图像条件控制

  • 顶部的调整节点(灰色): 用于控制图像条件控制的效果,降低对比度并调整亮度。

4.5 背景生成

  • 生成新背景:

    • 禁用时: 使用原始图像作为输入,并根据正向提示框中的“背景提示”(如果有)尝试映射与源视频背景相似的细节。示例提示:[1girl, sunlight, sunset, white shirt, black short jeans, interior, room]

    • 启用时: 会生成一个新的背景,并考虑深度信息。示例提示:[1girl, sunlight, sunset, nature in the background, sky]

同时,深度控制网络的强度和结束百分比降低到 45%,以便在背景中留出开放区域。

光照贴图

  • 光照贴图置顶:

    • True: 光照贴图将位于源视频上方,并且更加突出。

    • False: 源视频将位于上方,并且更加明亮。

  • 主体影响区域: 两种混合模式效果最佳:

    • 正片叠底: 根据光照贴图的位置(顶部或底部)使阴影区域变暗。

    • 滤色: 根据光照贴图的位置(顶部或底部)使阴影区域变亮。

    • 混合系数: 用于控制强度。

整体调整

  • 整体调整: 用于控制最终处理后的光照贴图的亮度、对比度、伽玛值和色调。

  • 图像重映射: 使用此节点控制整个图像的整体亮度和暗度。

光照映射

  • 最小值越高,场景越亮

  • 最大值越低,场景越暗,并且可以将较亮的区域转换为变形对象,例如二维码怪兽 CN

  • 通常将最小值设置为 0.1 或 0.2 即可稍微照亮场景。

  • 最小值为 0 时,灯光贴图的黑色像素将呈现出漆黑的阴影。

4.6 KSamplers(原始和精细)

IC 原始 KSampler:

与其他采样器不同,它从步骤 8 而不是零开始,这是因为 IC 光照条件(帧从第 8 步开始去噪)。

  • 例如,结束步骤为 20

  • 开始步骤:

    • 0 将没有灯光贴图效果。

    • 5 将有 50% 的效果。

    • 10 将有 100% 的效果。

    • 因此,3-8 是一个很好的测试值范围。

当“生成新背景”为 TRUE 时,您可以使用低于 5 的值以获得更好的结果。

KSampler 精细化:

它像是在 IC 原始采样器之后进行 Img2Img 精细化。

对于结束步骤为 25 的情况:

  • 开始步骤:

    • 10 及以下将像原始采样器一样工作,并会生成变形对象。

    • 15 将像一个合适的精细化器一样工作。

    • 20 将无法正常工作。

    • 20 以上将产生混乱的结果。

    • 因此,默认值 16 是合适的。

面部修复

  • 面部修复的放大比例: 如果您对面部修复后的效果不满意,可以将其放大至 1.2 到 1.6 倍,以获得更好的面部效果。

  • 正面提示词: 您可以在此处编写面部的提示词。默认设置为“微笑”。您可以更改它。

  • 面部去噪: 使用大约 0.35 - 0.45 的值。值过高可能会导致面部渲染错误,并且可能会出现面部滑动问题。

保存

  • 视频合并: 这会将所有帧导出为视频格式。如果此节点合并失败,则表示帧数过多,并且内存不足。如果发生这种情况,请减少帧加载上限。

    • 默认情况下,它将保存到 ComfyUI > 输出。

  • 更改输出路径: 如果要将输出保存到自定义保存位置,请取消静音此节点。

4.7 安装节点

4.8 安装模型

ControlNet 模型:

  1. models/coadapter-depth-sd15v1.pth · TencentARC/T2I-Adapter at main (huggingface.co)

目标位置: Comfyui\models\controlnet

IC 模型

目标位置: Comfyui>model>unet

AnimateDiff 运动模块:

目标位置: ComfyUI\models\animatediff_models

其他模型

这些模型应该会自动下载,但以防万一,您也可以手动下载:

目标位置:

  • SAM: ComfyUI/models/sams

  • FaceDetect: ComfyUI\models\mmdets\bbox

05 工作流详解

第一部分进行基础的配置,这一部分主要是设置后续的采样器步骤以及GFG 的步骤,在进行基础模型生成过程之中使用的seed ,这里使用的是固定值,后续进行扩图的放大的倍数,这些参数一般不需要进行需求即可。

这里是提供正向以及方向的prompt ,我们知道我们需要使用的CLIP 模型对提示词进行向量化,这里我们设置两个的输出参数Set_CN_Pos_in 以及Set_CN_Neg_in 作为第一个控制条件,这里的提示词可以对IC-Light 模型产生影响,生成光照效果。

这部分的参数设置是使用基础模型,当然这里我们也可以使用Lora 进行配置,因为我们这里使用的模型需要匹配VAE 模型使用,所以我们这里加载VAE 模型,整体作为的AD 输出。

这里是输入视频源,这里使用的是加载视频文件,通过加载视频文件可以设置视频宽度,长度,帧数,FPS 以及相关的其他的设置内容。注意这里的通过设置先关的参数方便后续进行引用。

这部分主要是将上传的文件通过Robust进行处理,生成的遮罩Mask .这里使用了预览的功能。

这里使用depth_anything模型处理图片的深度图以及使用coadapter 进行的精细化的深度图的控制的。

这部分我们主要是处Lightmap 通过, 我们可以使用当个贴图照片或者使用贴图的视频的进行处理的,注意的在后续的生成的过程之中,会匹配之前原有的视频帧生成一一对应的贴图帧,然后进行渲染,这里使用模型是lightbasePicture.

这里展示的是使用一张贴图原文件,上面的例子是使用光照视频文件。

这里是使用AnimalDiff 生成视频处理设置的,这里使用了smz 节点进行参数的优化设置,当然这里可以多个选择使用的不用的模型的进行。

接下来是处理LIghtMap 以及 IC Light 打光的相关的配置,首先是的控制灯光的亮度,对比度以及 gamma值的处理。

接下来是设置光照贴图的影响的范围,光照贴图在上,或者等控制曝光等相关的参数。

接下来就是的我们在genAI 之中比较重要的一点就是的采样器的设置,这里使用了两次采样器,进行了加强。

当然对于人物的生成,我们知道的关键的“脸”是需要额外进行处理的,这里我们使用了fix 的节点对脸部的细节的进行了重新的设置。

最后我们生成预览,并生成合成的视频。

06生成长视频

因为我们在以上的例子上使用batch = 10 的操作,也就是说使用了 10 帧的照片的进行了测试的,所以的按照整成的视频的生成的一般的24 帧/s或 30 帧/s 所以要想生成更长的视频,需要把以上工作流之中生成更多渲染的图片,然后使用生成的图片进行合成。相关的工作流如下:

07应用前景

本小节主要介绍了使用各种cv 工具生成视频,包含生成视频所需要的基础的算法的,以及工作流,在整个生成的过程之中我们的发现要想要得到一个好的效果,需要综合使用好的提示词以及插件及控制条件,这里我们就可以看到的在的我们平时使用的 app 工具,包含的各种的视频的特效后端使用的算法的过程,另外的在实际的工程化的过程之中,我们需要处理的人物就更多的,需要处理用户输入内容,以及处理算力以及队列等相关的问题。

Last updated