Fork版本 较原版
- 新增auth认证请求头
- 使用环境变量配置(移除config配置文件)
- 新增docker-compose.yml部署
- 修复dockerfile过期依赖
这是一个 NSFW 内容检测器,现已升级为更强的本地模型用于鉴黄与标签分类。
默认鉴黄模型为 Freepik/nsfw_image_detector,默认标签分类模型为 SmilingWolf/wd-vit-tagger-v3,标签分类使用 WD 系列专用多标签模型而不是 zero-shot CLIP。
现在同时支持图片、视频自动标签分类接口,/tag 会基于模型识别结果输出最多 3 个中文高层标签,例如动漫、少女、萝莉、动物、风景,适合精准归类与素材整理。
相比其它常见的 NSFW 检测器,这个检测器的优势在于:
- 基于 AI ,准确度更好。
- 支持纯 CPU 推理,可以运行在大部分服务器上。
- 自动调度多个 CPU 加速推理。
- 对外接口仍保持
nsfw和normal两个结果字段,内部会自动兼容更强鉴黄模型输出。 - 以 API 的方式提供服务,更方便集成到其它应用中。
- 基于 Docker 部署,便于分布式部署。
- 纯本地,保护您的数据安全。
运行这个模型最多需要 2GB 的内存。不需要显卡的支持。 在同时处理大量请求时,可能需要更多的内存。
这个检测器支持检查的文件类型:
- ✅ 图片(已支持)
- ✅ PDF 文件(已支持)
- ✅ 视频(已支持)
- ✅ 压缩包中的文件(已支持)
- ✅ Doc,Docx(已支持)
# 1. 创建nsfw_detector目录
mkdir -p /opt/nsfw_detector && cd /opt/nsfw_detector
# 2. 下载docker-compose.yml文件
wget https://raw.githubusercontent.com/ilolioo/nsfw_detector/refs/heads/main/docker-compose.yml
# 3. 启动服务【注意docker-compose.yml文件中支持的环境变量】
docker compose up -ddocker run -d -p 3333:3333 --name nsfw-detector ilolioo/nsfw_detector:latest支持的系统架构:x86_64、ARM64(此版本未构建)
| Option | Default | Description |
|---|---|---|
NSFW_THRESHOLD |
0.8 |
检测阈值 (0-1) |
NSFW_MODEL_RESET_THRESHOLD |
10000 |
鉴黄模型重置阈值 |
TAG_MODEL_RESET_THRESHOLD |
5000 |
标签模型重置阈值 |
WD_GENERAL_THRESHOLD |
0.32 |
WD 通用标签阈值 |
WD_CHARACTER_THRESHOLD |
0.80 |
WD 角色标签阈值 |
FFMPEG_MAX_FRAMES |
20 |
FFmpeg处理最大帧数 |
FFMPEG_MAX_TIMEOUT |
1800 |
FFmpeg处理超时时间 |
AUTH_TOKEN |
None |
API 认证 token (optional) |
HF_ENDPOINT |
None |
大陆机器需配置镜像下载抱脸托管模型,推荐https://hf-mirror.com (optional) |
API 文档页面:http://localhost:3333/api-docs
首页已内置 API 文档入口,可直接跳转查看 /check 与 /tag 的请求参数、鉴权说明和响应示例。
如已配置 auth_token,请求时请在 Header 中携带:Authorization: Bearer <token>
# 检测
curl -X POST -F "file=@/path/to/image.jpg" http://localhost:3333/check
# 检查本地的文件
curl -X POST -F "path=/path/to/image.jpg" http://localhost:3333/check/tag 会将模型识别结果聚合为中文高层标签,最多返回 3 个结果,不输出 long hair 这类细碎属性标签。
# 上传图片或视频进行标签分类
curl -X POST -F "file=@/path/to/image.jpg" http://localhost:3333/tag
# 检查服务器本地文件
curl -X POST -F "path=/path/to/video.mp4" http://localhost:3333/tag返回示例:
{
"status": "success",
"filename": "sample.jpg",
"result": {
"type": "image",
"tags": [
{"key": "动漫", "label": "动漫", "score": 0.9984},
{"key": "少女", "label": "少女", "score": 0.9961},
{"key": "萝莉", "label": "萝莉", "score": 0.9418}
]
}
}视频返回会额外包含 frames_analyzed 字段,表示参与聚合分类的视频帧数量。
| Option | Default | Description |
|---|---|---|
TAG_MODEL_RESET_THRESHOLD |
5000 |
标签模型重置阈值 |
WD_GENERAL_THRESHOLD |
0.32 |
WD 通用标签阈值 |
WD_CHARACTER_THRESHOLD |
0.80 |
WD 角色标签阈值 |
TAG_TOP_K |
3 |
自动标签接口最多返回多少个标签 |
TAG_MIN_SCORE |
0.15 |
自动标签接口最小分数阈值 |
本项目基于 Apache 2.0 许可证开源。