眼睛滑动-移动:经典修复填补孔洞并完成缺失虹膜

社区文章 发布于2024年11月22日

我曾想使用 Flux.1 schnell 只移动眼睛,但使用提示词效果不佳。我以为 Flux.1 schnell-inpaint 坏了,但发现通过使用甜甜圈遮罩,我可以正常改变颜色。所以,我决定为此目的创建一个引导图像。结果发现,仅凭引导图像本身就相当有用。而且,我觉得我可能可以用 Flux 1.schnell 创建翻白眼和死鱼眼,即使它们可能不受支持?(是否必要是另一个问题)。

  • (1) 使用经典修复(classic-inpaint)制作“空白眼睛”(去除虹膜)
  • (2) 使用经典修复(classic-inpaint)完成被眼睑遮挡的缺失虹膜
  • (3) 将虹膜移动到所需的(x, y)坐标
原始
眼睛上移
眼睛下移
眼睛侧移

将人脸分为外部和内部眼睛区域

Mediapipe 可以检测人脸特征点,这有助于将人脸分为外部和内部眼睛区域以便编辑

Mediapipe 检测结果
外部脸部
内部眼睛

使用经典修复(classic-inpaint)制作“空白眼睛”(去除虹膜)

虹膜位置由 Mediapipe 检测

从内部眼睛去除虹膜
修复完成
与外部人脸混合

使用经典修复(classic-inpaint)完成被眼睑遮挡的缺失虹膜

Mediapipe 检测虹膜大小和位置不够准确,可能需要调整。

从技术上讲,这种修复效果不佳,几乎与直接填充圆形相同。

内部眼睛
绘制虹膜边界圆
圆形区域内修复

将虹膜移动到所需的(x, y)坐标

为了使“空白眼睛”更清晰,我在上面粘贴了一张虹膜图片。不幸的是,这导致虹膜周围出现了明显的间隙。为了纠正这些间隙,我对合成图像进行了模糊处理,然后使用遮罩混合图层,粘贴了一张除虹膜外经过锐化处理的眼睛区域图像。

虹膜已移动
混合并模糊
内部眼睛的遮罩
使用反转遮罩粘贴锐化图像

局限性和未来工作:

当前的实现依赖于 Mediapipe,这是一个预训练且不可训练的模型,因此对于明显偏离正面视图的图像,性能不佳。为了克服这一限制,未来的工作应侧重于训练一个专门针对更广泛头部姿态的特征点检测模型。

相关空间

社区

注册登录 发表评论