查看: 952|回复: 0

从DFL文件内用文本打开发现的一些参数解释

[复制链接]

725

积分

26

帖子

132

符石

元婴丹师

Rank: 4Rank: 4Rank: 4Rank: 4

积分
725
发表于 2024-9-11 20:47:23 | 显示全部楼层 |阅读模式
    self.options['ae_dims'] = np.clip ( io.input_int("自动编码器维度", default_ae_dims, add_info="32-1024", help_message="所有面部信息都将打包到 AE dims 中. 如果 AE dims 的数量不够, 则会出现例如无法识别闭眼的情况. AE dims 越多越好, 但需要更多的显存. 你可以微调模型大小以适合你的 GPU." ), 32, 1024 )

            e_dims = np.clip ( io.input_int("编码器维度", default_e_dims, add_info="16-256", help_message="更多的 dims 有助于识别更多的面部特征并获得更清晰的结果, 但需要更多的 显存. 你可以微调模型大小以适合你的 GPU." ), 16, 256 )
            self.options['e_dims'] = e_dims + e_dims % 2

            d_dims = np.clip ( io.input_int("解码器维度", default_d_dims, add_info="16-256", help_message="更多的 dims 有助于识别更多的面部特征并获得更清晰的结果, 但需要更多的 显存. 你可以微调模型大小以适合你的 GPU." ), 16, 256 )
            self.options['d_dims'] = d_dims + d_dims % 2

            d_mask_dims = np.clip ( io.input_int("遮罩解码器维度", default_d_mask_dims, add_info="16-256", help_message="建议的遮罩解码器维度 = 解码器维度 / 3. 如果你从 dst 遮罩中手动切出障碍物, 你可以增加此参数以获得更好的质量." ), 16, 256 )
            self.options['d_mask_dims'] = d_mask_dims + d_mask_dims % 2

        if self.is_first_run() or ask_override:
            if self.options['face_type'] == 'wf' or self.options['face_type'] == 'head':
                self.options['masked_training']  = io.input_bool ("遮罩训练", default_masked_training, help_message="此选项仅适用于“wf”或“head”类型. 遮罩训练将训练区域裁剪为全脸遮罩或 xseg 遮罩, 从而网络将正确地训练面部.")

            self.options['eyes_mouth_prio'] = io.input_bool ("眼嘴优先", default_eyes_mouth_prio, help_message='有助于解决训练期间的眼睛问题, 例如“异眼”和错误的眼睛方向. 也使牙齿的细节质量更高.')
            self.options['uniform_yaw'] = io.input_bool ("侧脸优化", default_uniform_yaw, help_message='有助于修复因面部数据集中侧脸数量较少而出现的模糊侧脸.')
            self.options['blur_out_mask'] = io.input_bool ("遮罩外围模糊", default_blur_out_mask, help_message='模糊应用于训练样本的遮罩外围区域. 结果是面部附近的背景变得平滑并且在交换的面部上不太明显. 要求 src 和 dst 面部数据集中有精确的 Xseg 遮罩.')

        default_gan_power          = self.options['gan_power']          = self.load_or_def_option('gan_power', 0.0)
        default_gan_patch_size     = self.options['gan_patch_size']     = self.load_or_def_option('gan_patch_size', self.options['resolution'] // 8)
        default_gan_dims           = self.options['gan_dims']           = self.load_or_def_option('gan_dims', 16)

        if self.is_first_run() or ask_override:
            self.options['models_opt_on_gpu'] = io.input_bool ("模型和优化器运行在GPU上", default_models_opt_on_gpu, help_message="当你在一个 GPU 上训练时, 默认情况下模型和优化器权重被放置在 GPU 上以加速该过程. 你可以将它们放在 CPU 上以释放额外的 显存, 从而设置更大的维度.")

            self.options['adabelief'] = io.input_bool ("启用 AdaBelief 优化器?", default_adabelief, help_message="启用 AdaBelief 优化器. 它需要更多的 显存, 但模型的准确性和泛化性更高.")

            self.options['lr_dropout']  = io.input_str (f"启用学习率下降", default_lr_dropout, ['n','y','cpu'], help_message="当面部训练充分时, 你可以启用此选项以获得额外的清晰度并减少亚像素抖动以减少迭代次数. 在“禁用随机扭曲”和 GAN 之前, 你可以启用它.\nn - 禁用.\ny - 启用.\ncpu - 在 CPU 上启用. 这可以不占用额外的 VRAM, 但同时会牺牲 20% 的迭代时间.")

            self.options['random_warp'] = io.input_bool ("启用样本随机扭曲", default_random_warp, help_message="随机扭曲用来概括两张脸的面部表情. 当面部训练充分时, 你可以禁用它以获得额外的清晰度并减少亚像素抖动以减少迭代次数.")

            self.options['random_hsv_power'] = np.clip ( io.input_number ("随机色调/饱和度/光照强度", default_random_hsv_power, add_info="0.0 .. 0.3", help_message="随机色调/饱和度/光照强度仅在神经网络的输入端应用于 src 数据集. 在面部交换期间稳定颜色扰动. 通过选择 src 数据集中颜色最相近的一张来降低颜色转移的质量. 因此 src 数据集必须足够多样化. 建议值是 0.05"), 0.0, 0.3 )

            self.options['gan_power'] = np.clip ( io.input_number ("GAN 强度", default_gan_power, add_info="0.0 .. 5.0", help_message="强制神经网络学习面部的小细节. 仅当使用随机扭曲(关)时, 对面部进行了充分的训练时才启用它, 并且不要禁用. 数值越高, 出现伪影的机会就越大. 建议值为 0.1"), 0.0, 5.0 )

            if self.options['gan_power'] != 0.0:
                gan_patch_size = np.clip ( io.input_int("GAN 补丁大小", default_gan_patch_size, add_info="3-640", help_message="补丁大小越大, 质量越高, 需要的 VRAM 也越多. 即使在最低设置下, 也可以获得更清晰的边缘. 建议值是分辨率 / 8." ), 3, 640 )
                self.options['gan_patch_size'] = gan_patch_size

                gan_dims = np.clip ( io.input_int("GAN 维度", default_gan_dims, add_info="4-512", help_message="GAN 网络的维度. 维度越高, 需要的 显存 就越多. 即使在最低设置下, 也可以获得更清晰的边缘. 建议值为 16." ), 4, 512 )
                self.options['gan_dims'] = gan_dims

            if 'df' in self.options['archi']:
                self.options['true_face_power'] = np.clip ( io.input_number ("真脸强度", default_true_face_power, add_info="0.0000 .. 1.0", help_message="实验选项. 鉴别结果面部更像 src 面部. 数值越高鉴别器越强. 建议值为 0.01"), 0.0, 1.0 )
            else:
                self.options['true_face_power'] = 0.0

            self.options['face_style_power'] = np.clip ( io.input_number("面部风格强度", default_face_style_power, add_info="0.0..100.0", help_message="学习预测面部的颜色与遮罩内的 dst 相同. 如果你想将此选项与“wf”一起使用, 你必须使用 XSeg 训练过的遮罩. 警告:仅在1万迭代后, 且当预测的面部足够清晰以开始学习风格时启用此选项. 数值从 0.001 开始并检查历史记录的变化. 启用此选项会增加模型崩溃的机会."), 0.0, 100.0 )
            self.options['bg_style_power'] = np.clip ( io.input_number("背景风格强度", default_bg_style_power, add_info="0.0..100.0", help_message="学习预测面部的遮罩外区域与 dst 相同. 如果你想将此选项与“wf”一起使用, 你必须使用 XSeg 训练过的遮罩. 对于wf,你必须使用 XSeg 训练的遮罩. 这可以使面部更像 dst. 启用此选项会增加模型崩溃的机会. 建议值为 2.0"), 0.0, 100.0 )

            self.options['ct_mode'] = io.input_str (f"SRC 色彩转换模式", default_ct_mode, ['none','rct','lct','mkl','idt','sot'], help_message="更改 src 样本的颜色分布以接近 dst 样本. 尝试所有模式以找到最佳模式.")
            self.options['clipgrad'] = io.input_bool ("启用梯度剪裁", default_clipgrad, help_message="梯度裁剪减少了模型崩溃的机会,但同时牺牲了训练速度.")

            self.options['pretrain'] = io.input_bool ("启用预训练", default_pretrain, help_message="用大量的各种面部预训练模型. 之后, 模型可以用于更快地训练假脸. 强制随机扭曲=N, 随机翻转=Y, GAN 强度=0.0, 学习率下降=N, 风格参数=0.0, 侧脸优化=Y")

如果不懂每一条训练参数的具体用途可以参考下后面的中文解释  我觉得还是蛮详细的了

评分

参与人数 2金钱 +6 贡献 +4 符石 +20 收起 理由
奸商 + 5 + 4 + 20 感谢分享!
ntremok + 1 有用

查看全部评分

Zhatv换脸论坛免责声明
全站默认解压密码:zhatv.cn
【Zhatv】论坛里的文章仅代表作者本人的观点,与本网站立场无关。
所有文章、内容、信息、资料,都不保证其准确性、完整性、有效性、时效性,请依据情况自身做出判断。
因阅读本站内容而被误导等其他因素所造成的损失责任自负,【Zhatv】不承担任何责任。

小黑屋|ZhaTV ( 滇ICP备15003127号-4 ) |网站地图

GMT+8, 2024-11-21 18:27

Powered by Zhatv.cn

© 2022-2023

快速回复 返回顶部 返回列表