deepfacelab中文网

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

下牙src,挑选牙齿,编程高手进

[复制链接]

1

主题

13

帖子

149

积分

高级丹童

Rank: 2

积分
149
 楼主| 发表于 昨天 13:54 | 显示全部楼层 |阅读模式
星级打分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN  参与人数:0  我的评分:未评
本帖最后由 loo922ssiill 于 2025-9-16 14:17 编辑

想必各位熟手的老哥们,都知道收集下牙素材,和训练下牙缝清晰的难度。下牙基本是一个专丹收尾的部分了。

经过阅读了论坛的一些关于牙齿的精品教程贴。
总结了一些心得,希望能够尽快练出下牙,但是有些地方可能需要花费时间。希望懂编程的老哥能够指点一下。

ccc.png                    rrr.jpg

首先先说我的总结的步骤:

第一部分:SRC部分。

切好src人脸后,根据人物的嘴巴牙齿情况,大致分3种:
A 人物基本不张嘴。
B 人物张嘴,但是基本只露出上牙,下牙很少看到。
C 人物有一定数量的张嘴,露出下牙。

目前情况A基本很难处理(比如借助AI绘画张嘴)。
情况B的话,我个人是采用了ps,找一个模特的比较多角度下牙清晰的,ps里抠图,抠出该模特一些关键常见角度的下牙。这些下牙可以ps复用给其他src的。
然后再ps里面加上给src人物添加下牙,要匹配角度,可能还要调下颜色。


现在想讨论的是情况C, 就是人物的切脸图之后,有一定数量的露出下牙的图。
但是从数万张图里面,手工选出露出下牙的图比较费事。 请问能有办法通过编程的方式,来选出这些露出下牙的人脸图吗?
比如能否通过Landmarks判断人物的嘴巴,有无办法找到人物是属于张嘴的,从而选择出张嘴的图片。
有编程老哥指导一下,有没有办法实现脚本去识别人物张嘴或者牙齿情况的吗?

(张嘴不一定露出下牙,但是过滤大量图片。从张嘴的图片里面选有下牙的,减少很多工作量)。


第二部分:DST部分。

去搜集一些清晰的dst露出下牙的人脸图,尽量收集多角度一些。这些露下牙的dst图包,用于专门训练下牙用的。

    aaa.jpeg           ddd.jpg       


第3部分,src-dst匹配角度去训练。

A 方式,yangala大佬的角度分布工具,需要改动代码,把src下牙图分别自动按照角度放置到不同的角度。
dst也放置于不同的角度文件里面,写代码去匹配非空的文件夹(或者其他方式匹配)。选出src对应角度的dst牙齿图。
或者直接给图片按照角度重命名,dst也一样,比如x-30_y20_11.jpg之类,然后再去匹配。需要编程,有没有高手写一下自动匹配src角度挑选dst的代码?

B 方式,Lau9大佬之前转发的一个挑选匹配角度的工具,(没用过,不知道怎么用)
https://dfldata.cc/forum.php?mod=viewthread&tid=19683

C 方式,比较耗费时间精神,手工用刀哥工具对比,复制出来src所拥有的角度里,对应的dst下牙包的人脸图。

kkk.jpg

这样子训练的时候,就是专门的只有下牙的src图,对应角度的下牙的dst图,去训练下牙。出清晰下牙会很快。
我觉得专炼下牙图这个阶段放于最后会更好点,就是上牙缝已经清晰了,下牙还不行的阶段去专炼下牙。(或者放前面阶段更好?没对比过不知道区别)


另外,还有一个关于选src的,如何实现自动批量从不同的角度选出一部分脸图的脚本呢?
就是比如抬头5度,右转5度里面,可能有100张图,仅选出里面的20张图,然后抬头5度,左转10度也一样。避免同一角度过多图,多余训练。。
某个论坛的好像有这个工具,但是要币,也没有试过。



附:
刀哥角度工具:
https://dfldata.cc/forum.php?mod=viewthread&tid=7149

yangala的角度分布工具
https://dfldata.cc/forum.php?mod=viewthread&tid=3073






回复

使用道具 举报

13

主题

1166

帖子

1万

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
15483
发表于 昨天 15:12 | 显示全部楼层
编程当然是可以识别出来张嘴的。landmark本来就是写在切脸图里的数据,计算嘴唇两个点距离就行了。
回复 支持 反对

使用道具 举报

1

主题

13

帖子

149

积分

高级丹童

Rank: 2

积分
149
 楼主| 发表于 昨天 17:29 | 显示全部楼层
seancai110 发表于 2025-9-16 15:12
编程当然是可以识别出来张嘴的。landmark本来就是写在切脸图里的数据,计算嘴唇两个点距离就行了。 ...

老哥能再详细说下,具体如何实现吗? 比如deepfacelab里面哪个文件可能是有关于人脸的Landmarks,特别是涉及到上下唇的定位,位置相关的代码吗?     应该还是需要定位出上唇的中点和下唇的中点,才能计算距离吧?
回复 支持 反对

使用道具 举报

13

主题

1166

帖子

1万

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
15483
发表于 昨天 20:22 | 显示全部楼层
loo922ssiill 发表于 2025-9-16 17:29
老哥能再详细说下,具体如何实现吗? 比如deepfacelab里面哪个文件可能是有关于人脸的Landmarks,特别是 ...

landmark本来就有唇中点啊。脸部检测用的是开源的方案,每个点对应位置是固定的。读切脸图的函数里有读取landmark的代码。
回复 支持 反对

使用道具 举报

6

主题

73

帖子

2144

积分

初级丹圣

Rank: 8Rank: 8

积分
2144

万事如意节日勋章

发表于 昨天 21:35 | 显示全部楼层
    def is_mouth_open(self, image_path, threshold=15):
        """检测嘴部是否张开 - 优化版本"""
        try:
            image_path = Path(image_path)
            dflimg = DFLIMG.load(image_path)
            
            if dflimg is None or not dflimg.has_data():
                return None, f"{image_path.name} 不符合DFL规范"
            
            landmarks = dflimg.get_landmarks()
            if landmarks is None or len(landmarks) < 67:
                return None, f"{image_path.name} 的关键点提取失败"
            
            # 提取嘴部关键点 - 使用numpy切片优化
            mouth_points = landmarks[[62, 63, 64, 65, 66], :]
            
            # 计算嘴巴的高度差
            mouth_height_diff = mouth_points[4][1] - mouth_points[0][1]  # 66y - 62y
            
            if mouth_height_diff > threshold:
                output_dir = image_path.parent / '张嘴的'
                return output_dir, None
            else:
                return None, None  # 闭嘴的不进行处理
               
        except Exception as e:
            return None, f"处理 {image_path.name} 时出错: {str(e)}"
如果你觉得我不对,那就一定是你对
回复 支持 反对

使用道具 举报

1

主题

13

帖子

149

积分

高级丹童

Rank: 2

积分
149
 楼主| 发表于 昨天 21:58 | 显示全部楼层
本帖最后由 loo922ssiill 于 2025-9-16 22:01 编辑

lhs 发表于 2025-9-16 21:35
def is_mouth_open(self, image_path, threshold=15):
        """检测嘴部是否张开 - 优化版本"""
    ...


非常感谢老哥的指导,这就去研究测试看看。
回复 支持 反对

使用道具 举报

41

主题

561

帖子

2万

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
21194
发表于 昨天 23:29 | 显示全部楼层
谁在正式训练里面练下牙啊,想不开吗,就算你专丹成了,下一个丹怎么办
回复 支持 反对

使用道具 举报

1

主题

13

帖子

149

积分

高级丹童

Rank: 2

积分
149
 楼主| 发表于 昨天 23:59 | 显示全部楼层
dfl9999 发表于 2025-9-16 23:29
谁在正式训练里面练下牙啊,想不开吗,就算你专丹成了,下一个丹怎么办

老哥我怎么不太懂呢,专人丹不在正训里面炼下牙,那应该什么时候炼?(我所理解的正训,就是使用练好的底单,然后src专门放一个人的脸图去炼这个人的专属丹,就算开始正训了)。       这个专丹练成后,下个专丹也是这样子的方式选出新一个人物的下牙图,去匹对dst的下牙图去专门训练下牙部分啊。
回复 支持 反对

使用道具 举报

41

主题

561

帖子

2万

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
21194
发表于 3 小时前 | 显示全部楼层
loo922ssiill 发表于 2025-9-16 23:59
老哥我怎么不太懂呢,专人丹不在正训里面炼下牙,那应该什么时候炼?(我所理解的正训,就是使用练好的底 ...

费那个劲去练牙齿干啥,我练好的预训练丹8万扭曲上下牙齿就出来了,在8万离散图基础上形成的泛化,不比专门找牙齿练靠谱,正训对素材很敏感,任何对素材的污染都会被模型后期放大
回复 支持 反对

使用道具 举报

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

GMT+8, 2025-9-17 06:39 , Processed in 0.118402 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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