【笔记】Facefusion3.3.2 之 NSFW 检测屏蔽测试
记录于2025年08月21日
声明:
仅用于记录测试之用。
以下从修改意图和具体实现两方面,记录我们对 FaceFusion 中 NSFW 检测功能的定制化改动,清晰梳理代码调整逻辑:
一、核心目标
通过修改代码,保留模型下载流程(仍会获取 NSFW 检测模型文件,因为没有改动模型触发下载及模型下载后的哈希hash校验部分,只做最少改动),但强制关闭实际检测逻辑,让 NSFW 检测功能失效,视频 / 图像处理时不再执行内容安全校验。
二、关键文件与修改点
1. content_analyser.py
(NSFW 检测核心模块)
-
pre_check
函数:
原逻辑:检查模型依赖、触发下载 / 加载。
修改后:直接return False
,跳过模型加载校验流程(但不影响模型下载,仅阻止运行时加载)。def pre_check() -> bool: return False # 强制返回 False,阻止模型加载
-
detect_nsfw
函数:
原逻辑:调用nsfw_1
/nsfw_2
/nsfw_3
模型,综合判断内容是否违规。
修改后:直接return False
,无论输入如何,都判定为 “内容安全”,完全禁用检测逻辑。def detect_nsfw(vision_frame: VisionFrame) -> bool: return False # 强制返回 False,禁用 NSFW 检测
2. core.py
(模块初始化与预检查)
common_pre_check
函数:
原逻辑:遍历content_analyser
等模块,执行pre_check
校验,确保功能可用。
修改后:直接return True
,跳过所有模块的预检查流程(包括content_analyser
的校验),让程序绕过 NSFW 模块的合法性验证。def common_pre_check() -> bool: return True # 强制返回 True,跳过模块预检查
三、修改后效果总结
-
模型下载:
代码中未完全阻断模型下载触发逻辑(如collect_model_downloads
仍可能被调用),因此 NSFW 模型仍会被下载,但下载后不会实际加载、使用。 -
检测功能:
detect_nsfw
直接返回False
,且原检测逻辑被注释,NSFW 检测完全失效,任何内容都会被判定为 “安全”。 -
模块校验:
common_pre_check
跳过校验并返回True
,程序不会因 NSFW 模块 “未正确加载” 报错,流程可正常执行(即使检测功能关闭)。
四、潜在影响与补充建议
-
潜在问题:
- 若后续代码依赖 “NSFW 检测结果”(如内容过滤、安全提示),可能因始终返回
False
出现逻辑异常; - 模型下载会占用网络、存储资源,若需彻底禁用下载,需额外修改
collect_model_downloads
等触发下载的代码。
- 若后续代码依赖 “NSFW 检测结果”(如内容过滤、安全提示),可能因始终返回
-
补充建议:
若想彻底阻止模型下载,可进一步注释 / 删除collect_model_downloads
中触发下载的逻辑(如create_static_model_set
、conditional_download_hashes
等调用);
若需 “保留检测能力但调整阈值”,可恢复原检测逻辑,修改返回条件(如调整rate > 10.0
的判断)。
简言之,我们的修改通过 “注释关键逻辑 + 强制返回固定值”,实现了 “保留模型下载、完全关闭 NSFW 检测、绕过模块校验” 的效果,让 NSFW 功能在流程中 “仅保留资源下载,实际检测被剥离” 。
若后续有版本更新,原作者团队可能继续升级 NSFW 检测功能及在流程中改变检测逻辑,从而导致这种方式屏蔽失效,请知悉!
怎么使用嵌套虚拟环境实现项目部署之virtualenv嵌套conda绕开安装环境检测实现.venv部署facefusion_python虚拟环境嵌套-CSDN博客