V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xiaoz
V2EX  ›  分享创造

开源一个色情图像(NSFW)识别方案,支持私有部署和 HTTP 调用

  •  
  •   xiaoz ·
    helloxz · 23 小时 34 分钟前 · 1714 次点击

    起因:之前 ImgURL 一直使用雅虎的 Open NSFW 识别方案,但是 Open NSFW 这个项目 2019 年就归档且不再更新了。最近正在重构 ImgURL ,顺便准备寻找新的色情图像识别方案,结果找了一圈,没发现满足自己需求的,于是就手搓了一个,希望对开发者有帮助。

    Github 开源:https://github.com/helloxz/nsfw

    测试 API:https://nsfw.demo.mba/check?url=https://www.imgurl.org/static/images/logo.png

    只需要把 URL 参数值替换为任意可访问的图片地址即可识别,个人感觉识别率比 Open NSFW 更强一些,而且速度也不错。(识别速度非 http 下载和请求速度)

    介绍

    基于 AdamCodd/vit-base-nsfw-detector/ 实现,并封装为 HTTP API 调用,可用于识别网络色情图像( nsfw 识别),适合纯 CPU 机器推理,轻量级实现方案。

    特点

    • 纯 CPU 推理,适合大多数云服务器或 VPS
    • 支持的图片类型:jpg/png/bmp/webp
    • 支持 HTTP API 调用
    • 支持鉴权访问
    • 轻量级实现,资源占用较低
    • 识别速度较快
    • 支持 Docker 私有部署

    Docker 部署

    docker run -d \
      --name nsfw \
      -p 6086:6086 \
      --restart always \
      helloz/nsfw
    

    完整的说明可以访问 Github 查看: https://github.com/helloxz/nsfw

    第 1 条附言  ·  2 小时 45 分钟前

    新增了WEBUI,部署的时候可通过环境变量选择是否启用。WEBUI测试地址:https://nsfw.demo.mba/

    23 条回复    2025-12-06 13:40:10 +08:00
    MIUIOS
        1
    MIUIOS  
       23 小时 25 分钟前   ❤️ 1
    可以看下数据集吗,我需要人工详细标注一下
    xiaoz
        2
    xiaoz  
    OP
       23 小时 16 分钟前
    @MIUIOS #1,模型用的是 https://huggingface.co/AdamCodd/vit-base-nsfw-detector/ 开源的,我本身并没有进行模型训练。

    所以我这里没有数据集,哈哈。
    Pantheonn
        3
    Pantheonn  
       22 小时 32 分钟前   ❤️ 1
    用射了,确实不错,可以加一个识别本地图片吗
    hccsoul326
        4
    hccsoul326  
       22 小时 29 分钟前   ❤️ 4
    可以反着用不,去捞一堆图片,部署上去反向过滤一下,只留下色图
    xiaoz
        5
    xiaoz  
    OP
       21 小时 55 分钟前
    @Pantheonn #3 ,就是本地 POST 图片上去识别是吧?如果我理解得没错的话,准备近期添加。
    xiaoz
        6
    xiaoz  
    OP
       21 小时 53 分钟前
    @hccsoul326 #4 ,你需要部署一个图床服务就可以实现了。比如我开头所说,哈哈哈。
    nicoljiang
        7
    nicoljiang  
    PRO
       21 小时 45 分钟前   ❤️ 1
    这个对涉政、涉暴力 等方面没用吧?
    xiaoz
        8
    xiaoz  
    OP
       21 小时 20 分钟前
    @nicoljiang #7 ,没用哈,底层模型只针对色情图像进行了训练,如果要更多类型的识别,需要自己训练模型。
    abel533
        9
    abel533  
       20 小时 46 分钟前   ❤️ 1
    能不能识别色情、暴力、血腥等分类?
    xiaoz
        10
    xiaoz  
    OP
       20 小时 27 分钟前
    @abel533 #9 ,不支持哦,如 8 楼所述。
    Maboroshii
        11
    Maboroshii  
       20 小时 19 分钟前
    整蜜罐是吧
    nananqujava
        12
    nananqujava  
       20 小时 17 分钟前   ❤️ 1
    我需要反向过滤
    Pantheonn
        13
    Pantheonn  
       20 小时 12 分钟前   ❤️ 1
    @xiaoz #5 是的,GitHub 主页已 star ,期待更新
    xiaoz
        14
    xiaoz  
    OP
       20 小时 11 分钟前
    @Maboroshii #11 ,没有啊,源码都在 Github 开源了,图片压根就没有保存。
    xiaoz
        15
    xiaoz  
    OP
       20 小时 10 分钟前
    @Pantheonn #13 ,正在写代码,晚上应该就支持了。
    xiaoz
        16
    xiaoz  
    OP
       18 小时 18 分钟前   ❤️ 1
    @Pantheonn #3 ,最新版已经支持 POST 上传文件识别,docker pull 更新下即可。
    slert
        17
    slert  
       16 小时 38 分钟前   ❤️ 1
    和 nsfwjs 相比识别质量如何
    xiaoz
        18
    xiaoz  
    OP
       16 小时 26 分钟前
    @slert #17 ,没有详细对比测试过,你可以试试看。
    xclrr
        19
    xclrr  
       6 小时 4 分钟前   ❤️ 1
    yahoo 的模型只有 22MB ,这个 300 多 MB 不够轻量啊
    xiaoz
        20
    xiaoz  
    OP
       5 小时 1 分钟前 via Android
    @xclrr #19 ,你拿容器镜像大小和模型大小去对比???
    1. 这个项目的模型大小大概 50MB 左右,看这里:https://github.com/helloxz/nsfw/tree/main/app/onnx ,单从模型的大小来说,雅虎模型只有 20M 左右确实更小,但是个人测试了下雅虎的效果相对更差一些。
    2. 容器包括 Python 运行环境和相关依赖,自然更大一些。
    3. 如果单纯的去对比体积,是不是镜像对比镜像更合理一些?这是第三方基于 open nsfw 的镜像:https://hub.docker.com/r/eugencepoi/nsfw_api 体积是 600M
    4. 轻量指的是相对市面上的方案实现和运行时资源占用,而不是单纯看体积。就算对比容器体积,我的镜像也是相对偏小,你可以自行去 docker 搜索 nsfw 对比。

    请辩证的看待问题,谢谢。
    gargar
        21
    gargar  
       4 小时 32 分钟前 via iPhone
    感谢分享。有没有性能测试数据?
    gargar
        22
    gargar  
       1 小时 5 分钟前   ❤️ 1
    简单测了一下,苹果 M 芯片 0.5-0.8 秒,云主机比较弱要 3-4 秒。
    xiaoz
        23
    xiaoz  
    OP
       35 分钟前
    @gargar #22 ,感谢反馈,代码里面强制了 CPU 运行,不同的 CPU 以及核心数有差距,M 芯片算是比较强的了。如果是 GPU 运行的话效率会更高。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2710 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:15 · PVG 14:15 · LAX 22:15 · JFK 01:15
    ♥ Do have faith in what you're doing.