facefusion 3.3.2 禁止 NSFW 检测

最近更新于 2025-08-01 08:05

2025.7.29
昨天晚上第一次尝试使用 facefusion,下载的最新版的 3.3.2。
很快我就发现它会检测画面内容,如果 NSFW 超过阈值就会设置预览画面模糊,且不会执行换脸,但这是一个开源项目,再怎么有措施,代码都是可见的,只要花时间,是能找到在哪里执行的操作,改掉就 OK 了
在 facefusion 目录下的 content_analyser.py 文件中 detect_nsfw 就是 NSFW 检测判定,里面调用了三个检测函数,三个检测函数中有两个计算分数超过阈值就会认定是 NSFW,然后执行画面模糊。理论上把 detect_nsfw 的返回值改为 False,那么就永远不会认定 NSFW 了。
file

但是我实际修改代码后,发现程序启动时就会退出,反复尝试发现不是意外,是稳定的主动退出,代码里改回去就正常保持运行。那说明有防篡改的措施,最开始我设想的是:预备了几个不同 NSFW 分数的图片,然后启动的时候使用这些图片测试,判断 NSFW 计数和预期是否一致,如果有人改为固定返回 False,得到 NSFW 计数为 0,那就执行退出。
如果按上面我猜测的逻辑,那启动就会卡一会跑测试,要是有些没有显卡加速,那卡个几分钟起步都是正常的,感觉采用这种方案的可能性小。
只是我还有个想法:会不会是比对代码文件的哈希值,我就随便加了个空行,也不会影响代码逻辑,只是文件内容发生实质修改,哈希值会变。然后发现也会退出,那么很大概率就是计算代码文件的哈希值了,必然有地方在判定。然后找到是在 facefusion 目录下的 core.py 文件中 common_pre_check 函数,把函数返回值改为 True 即可。
file

总结:

  • facefusion/core.py 文件里 common_pre_check 函数返回值改为 True,这样就检测不出代码被修改;
  • facefusion/content_analyser.py 文件里 detect_nsfw 函数返回值改为 False,这样全部认定为非 NSFW。最好把检测 NSFW 的 3 行代码注释掉,这样就省去了一部分计算,换脸的时候更快。
    file

个人注:
试过几次,感觉没啥玩的,效果一般。就只能换面部,很多时候感觉看不出多大区别,要是可选的连带发型、服装一起换的话,那就好玩多了。
我说的这些用 Stable Diffusion 是可以做到的,只是仅限于图片,而不是视频,当然也可以自己从视频提取出图片,在批量处理后重新合成视频,只是操作麻烦,也没多大精力去折腾。facefusion 换脸可以一键换视频的,这个是很方便,就是仅换面部太单一了。

facefusion 3.3.2 禁止 NSFW 检测
Scroll to top