deepfacelab中文网

 找回密码
 立即注册(仅限QQ邮箱)
查看: 55|回复: 0

融合合成的时候遮罩模式的full

[复制链接]

32

主题

207

帖子

1597

积分

初级丹圣

Rank: 8Rank: 8

积分
1597
 楼主| 发表于 11 小时前 | 显示全部楼层 |阅读模式
星级打分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN  参与人数:0  我的评分:未评
在最后合成的时候,假如用遮罩模式的full,会导致人脸周围有矩形框及光圈,而实际上full参数大多数下是最贴合换脸后的真实脸的

QQ浏览器截图20260713103545.png    

这个光圈可以通过调高羽化值去减少,但是就算把值调高到最大,也必然会有一侧的光圈遮罩,所以是无法彻底消除这个光圈的。
这个光圈的存在的逻辑是:
在 mask_mode == 0(full)时:
wrk_face_mask_a_0 = np.ones_like(...) — 全 1,整个正方形都是 Mask
prd_face_bgr 是模型输出的正方形图像,人脸周围自带光圈色差
第 239 行 out_img = img_bgr*(1-mask) + out_img*mask — 整个正方形直接替换,光圈像素原样贴上去
光圈是模型输出像素自带的,不是 Mask 的问题。 其他模式之所以没有光圈,是因为 learned mask/XSeg mask 恰好把光圈区域遮掉了(Mask 值为 0 或过渡区)。


解决思路
在 full 模式下,利用模型自己预测的 prd_face_dst_mask_a_0(learned-dst mask)做边界色彩过渡——在光圈区域把 prd_face_bgr 向 dst_face_bgr 渐变混合,而不是直接用全 1 Mask:

逻辑说明:

prd_face_dst_mask_a_0 — 模型预测的 dst mask,标记了人脸区域(值≈1)和背景区域(值≈0)
halo_zone = 1.0 - blur(mask) — 取 Mask 边界过渡带,这就是光圈所在的位置
prd_face_bgr = prd * (1-halo_zone) + dst * halo_zone — 在光圈区域,把生成脸的颜色向原始图渐变混合
这样 full 模式下:

人脸内部(mask≈1):完全使用生成脸,不受影响
光圈区域(mask 边界):颜色向 dst 渐变过渡,消除色差
背景区域(mask≈0):完全使用 dst 原图

修改代码:
  1.     if cfg.mask_mode == 0: #full
  2.         wrk_face_mask_a_0 = np.ones_like(dst_face_mask_a_0)
  3.     elif cfg.mask_mode == 1: #dst
复制代码



把这个按照逻辑修改:
  1.     if cfg.mask_mode == 0: #full
  2.         wrk_face_mask_a_0 = np.ones_like(dst_face_mask_a_0)
  3.         halo_fix_mask = cv2.GaussianBlur(prd_face_dst_mask_a_0, (0,0), max(1, output_size//32))
  4.         halo_fix_mask = np.clip(halo_fix_mask, 0, 1)
  5.         halo_zone = 1.0 - halo_fix_mask
  6.         halo_zone[halo_zone < 1.0/255.0] = 0.0
  7.         halo_zone = halo_zone[...,None]
  8.         if halo_zone.max() > 0:
  9.             prd_face_bgr = prd_face_bgr * (1.0 - halo_zone) + dst_face_bgr * halo_zone
  10.     elif cfg.mask_mode == 1: #dst
复制代码


这样以后合成的时候用full模式就会消除这些光圈,至于这个黑色正方形线框是人脸替换的边界,我特意保存了,只是为了让人观察替换的包含部分,像去掉的话,只要羽化值随便调高几个值就消失了,
QQ浏览器截图20260713103304.png


QQ浏览器截图20260713103633.png
回复

使用道具 举报

QQ|Archiver|手机版|deepfacelab中文网 |网站地图

GMT+8, 2026-7-13 22:30 , Processed in 0.092160 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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