当前位置: 首页 > news >正文

【笔记】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,跳过模块预检查  
    

三、修改后效果总结

  1. 模型下载
    代码中未完全阻断模型下载触发逻辑(如 collect_model_downloads 仍可能被调用),因此 NSFW 模型仍会被下载,但下载后不会实际加载、使用。

  2. 检测功能
    detect_nsfw 直接返回 False,且原检测逻辑被注释,NSFW 检测完全失效,任何内容都会被判定为 “安全”。

  3. 模块校验
    common_pre_check 跳过校验并返回 True程序不会因 NSFW 模块 “未正确加载” 报错,流程可正常执行(即使检测功能关闭)。

四、潜在影响与补充建议

  • 潜在问题

    • 若后续代码依赖 “NSFW 检测结果”(如内容过滤、安全提示),可能因始终返回 False 出现逻辑异常;
    • 模型下载会占用网络、存储资源,若需彻底禁用下载,需额外修改 collect_model_downloads 等触发下载的代码。
  • 补充建议
    若想彻底阻止模型下载,可进一步注释 / 删除 collect_model_downloads 中触发下载的逻辑(如 create_static_model_setconditional_download_hashes 等调用);
    若需 “保留检测能力但调整阈值”,可恢复原检测逻辑,修改返回条件(如调整 rate > 10.0 的判断)。

简言之,我们的修改通过 “注释关键逻辑 + 强制返回固定值”,实现了 “保留模型下载、完全关闭 NSFW 检测、绕过模块校验” 的效果,让 NSFW 功能在流程中 “仅保留资源下载,实际检测被剥离” 。

若后续有版本更新,原作者团队可能继续升级 NSFW 检测功能及在流程中改变检测逻辑,从而导致这种方式屏蔽失效,请知悉!

怎么使用嵌套虚拟环境实现项目部署之virtualenv嵌套conda绕开安装环境检测实现.venv部署facefusion_python虚拟环境嵌套-CSDN博客

http://www.xdnf.cn/news/1339219.html

相关文章:

  • Windows 系统中,添加打印机主要有以下几种方式
  • macos使用FFmpeg与SDL解码并播放H.265视频
  • Git常用操作大全(附git操作命令)
  • 【LeetCode】18. 四数之和
  • 微服务的编程测评系统13-我的竞赛列表-elasticSearch
  • javaweb开发笔记—— 前端工程化
  • Spring Boot 集成 Redis 发布订阅实现消息通信
  • 计算机网络技术学习-day6《三层交换机配置》
  • 01 网络信息内容安全--绪论
  • 2025.7.19卡码刷题-回溯算法-组合
  • Web 安全之 HTTP 响应截断攻击详解
  • 数据结构初阶:排序算法(三)归并排序、计数排序
  • 【数据结构】深入解析选择排序与堆排序:从基础到高效实现的完全指南
  • 深度卷积神经网络AlexNet
  • openEuler系统中r如何将docker安装在指定目录
  • 神经网络中 标量求导和向量求导
  • 如何通过传感器选型优化,为设备寿命 “续航”?
  • 机器学习6
  • RootDB:一款开源免费的Web报表工具
  • 0821 sqlite3_get_table函数(数据库函数的补充)
  • Vue.js 中使用 Highcharts 构建响应式图表 - 综合指南
  • 遥感机器学习入门实战教程|Sklearn案例⑤:集成学习方法全览
  • Python学习-- 数据库和MySQL入门
  • CentOS 7常用国内源配置:阿里云、腾讯云、华为云、清华源
  • pycharm编译器如何快速掌握一个新模块的使用方法
  • JeeSite 快速开发平台:全能企业级快速开发解决方案
  • 【图像算法 - 20】慧眼识病:基于深度学习与OpenCV的植物叶子疾病智能识别系统
  • Python-Pandas GroupBy 进阶与透视表学习
  • 中国之路 向善而行 第三届全国自驾露营旅游发展大会在阿拉善启幕
  • Android14内核调试 - boot vendor_boot