Skip to main content

基于OpenNSFW的图像内容检测工具

Project description

nsfwpy

English | 简体中文

nsfwpy

一个轻量级Python库,使用深度学习模型进行图像内容分析,可以识别图像是否包含不适宜内容。

特性

  • 轻量级实现,依赖少,易于部署
  • 支持多种图像格式输入(几乎所有常见格式)
  • 提供命令行工具、Python API和HTTP API接口
  • 支持Windows和其他操作系统
  • 自动下载和缓存模型文件
  • 提供预编译版本

安装

  • 通过pip安装

    pip install nsfwpy
    
  • 从源码安装

    git clone https://github.com/HG-ha/nsfwpy.git
    cd nsfwpy
    pip install -e .
    
  • Docker(默认使用模型:model.onnx)

    • docker run -p 8000:8000 yiminger/nsfwpy
    • 使用指定模型启动
      • 默认模型
        docker run -e NSFWPY_ONNX_MODEL=/home/appuser/.cache/nsfwpy/model.onnx -p 8000:8000 nsfwpy
        
      • m2模型(NSFWJS mobilenet_v2)
        docker run -e NSFWPY_ONNX_MODEL=/home/appuser/.cache/nsfwpy/m2model.onnx -p 8000:8000 nsfwpy
        
      • i3模型(NSFWJS inception_v3),速度是其他模型的一半
        docker run -e NSFWPY_ONNX_MODEL=/home/appuser/.cache/nsfwpy/i3model.onnx -p 8000:8000 nsfwpy
        
  • 使用预编译版本(开箱即用)

    • 请前往 Release 下载对应平台的预编译版本。
    • windows:在cmd中输入 nsfwpy.exe
    • linux:chmod +x nsfwpy && ./nsfwpy
  • Termux

    pkg install python3 git python-pip python-onnxruntime rust -y
    git clone https://github.com/HG-ha/nsfwpy.git && cd nsfwpy
    pip install -e .
    nsfwpy --help
    

编译其他平台版本

  • 参考 build.bat | build.sh

使用方法

  • Python API

    from nsfwpy import NSFW
    
    # 初始化检测器(首次运行会自动下载模型)
    detector = NSFW()
    
    # 预测单个图像
    result = detector.predict_image("path/to/image.jpg")
    print(result)
    
    # 预测PIL图像
    from PIL import Image
    img = Image.open("path/to/image.jpg")
    result = detector.predict_pil_image(img)
    print(result)
    
    # 批量预测目录中的图像
    results = detector.predict_batch("path/to/image/directory")
    print(results)
    
  • 命令行工具

    # 基本用法
    nsfwpy --input path/to/image.jpg
    
    # 指定自定义模型路径
    nsfwpy --model path/to/model.onnx --input path/to/image.jpg
    
    # 指定模型需要的图像尺寸(通常用不到,因为目前模型只支持224,无需关注此参数)
    nsfwpy --dim 299 --input path/to/image.jpg
    

Web API服务(完全兼容 nsfwjs-api)

  • 启动API服务器:

    # 基本用法
    nsfwpy -w
    
    # 指定主机和端口
    nsfwpy -w --host 127.0.0.1 --port 8080
    
    # 指定自定义模型
    nsfwpy -w --model path/to/model.onnx
    
  • API端点:

    • POST /classify: 分析单张图片
    • POST /classify-many: 批量分析多张图片
  • API文档:

  • 请求:

    • /classify
      curl --location --request POST 'http://127.0.0.1:8000/classify' \
      --form 'image=@"image.jpeg"'
      
    • /classify-many
      curl --location --request POST 'http://127.0.0.1:8000/classify-many' \
      --form 'images=@"image.jpeg"' \
      --form 'images=@"image2.jpeg"'
      

预测结果格式

返回包含以下类别概率值的字典:

{
    "drawings": 0.1,    # 绘画/动画
    "hentai": 0.0,     # 动漫色情内容(変態)
    "neutral": 0.8,    # 中性/安全内容
    "porn": 0.0,       # 色情内容
    "sexy": 0.1        # 性感内容
}

致谢

本项目的模型基于 nsfw_model 以及 nsfwjs。感谢原作者的贡献。

推荐资源

  1. 天狼星框架:https://www.siriusbot.cn/
  2. 镜芯API:https://api2.wer.plus/
  3. 林枫云_站长首选云服务器:https://www.dkdun.cn/
  4. ICP备案查询:https://icp.show/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nsfwpy-0.1.4.1.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nsfwpy-0.1.4.1-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file nsfwpy-0.1.4.1.tar.gz.

File metadata

  • Download URL: nsfwpy-0.1.4.1.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.9

File hashes

Hashes for nsfwpy-0.1.4.1.tar.gz
Algorithm Hash digest
SHA256 b862222de1d623ba7872ac31a6e0a4798e70ce49d4842f532b3b4d7dabc88322
MD5 d043d9f79096936fba54f71d9e621bea
BLAKE2b-256 0cbd8b35df6b250e92a28f1404de4882a4415506a0b92593e92f8da2f009505c

See more details on using hashes here.

File details

Details for the file nsfwpy-0.1.4.1-py3-none-any.whl.

File metadata

  • Download URL: nsfwpy-0.1.4.1-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.9

File hashes

Hashes for nsfwpy-0.1.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8110b73c3866fe1492409a15d563bf1a985831a00f31015b408b21bf1f93b18b
MD5 7da7b87356d14aea5839b5824a0cea9b
BLAKE2b-256 6c361aaaa4aacefd715f4c9c088325d08da73da91a08c00ceeec63d4e29debaa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page