NSFWPY 🔥 (nsfwpy-onnx)
High-performance, CPU-optimized Python 3.14 port of NSFWJS using ONNX Runtime.
Classify images into 5 canonical NSFW categories (Drawing, Hentai, Neutral, Porn, Sexy) with fast CPU inference, zero GPU requirement, HuggingFace auto-downloading, and a clean Python API + CLI.
🌟 Key Features
- 🐍 Python 3.14 Native: Fully compatible with Python 3.10+ and Python 3.14.
- ⚡ CPU Optimized: Powered by
onnxruntimetuned for multi-threaded CPU execution with graph optimization. - 📦 HuggingFace Auto-Download: Automatically downloads missing ONNX models from Hugging Face (
expertskb/nsfwpy). - 🪶 Ultra Lightweight: Minimal dependencies (
numpy,pillow,onnxruntime,click). No heavy web servers required. - 🛠️ CLI Tool Included: Classify images directly from your terminal.
📥 Installation
Install directly from PyPI:
pip install nsfwpy-onnx
Or install from GitHub:
git clone https://github.com/expertskb/nsfwpy-onnx.git
cd nsfwpy-onnx
python3.14 -m venv .venv
source .venv/bin/activate
pip install -e .
🚀 Quick Usage
1. Python Library Usage
import nsfwpy
# Load model (auto-downloads from HuggingFace if missing)
model = nsfwpy.load_model("mobilenet_v2")
# Classify single image (File path, URL, bytes, or PIL Image)
results = model.classify("path/to/image.jpg", top_k=5)
print(results)
# Output:
# [
# {'className': 'Neutral', 'probability': 0.85231},
# {'className': 'Drawing', 'probability': 0.08412},
# {'className': 'Sexy', 'probability': 0.04123},
# {'className': 'Porn', 'probability': 0.01211},
# {'className': 'Hentai', 'probability': 0.01023}
# ]
# Batch image classification
batch_results = model.classify_batch(["img1.jpg", "img2.png"])
2. Command Line Interface (CLI)
# Classify a local image file or URL
nsfwpy classify path/to/image.jpg
# Output formatted JSON
nsfwpy classify https://example.com/sample.jpg --json-out
# Choose a specific model architecture
nsfwpy classify sample.jpg --model inception_v3
🧠 Supported Models
| Model Name | Backbone | Accuracy | Size | Auto-Download Link |
|---|---|---|---|---|
mobilenet_v2 (Default) |
MobileNet V2 | Fast | ~14 MB | HF Download |
mobilenet_v3 |
MobileNet V3 | Balanced | ~22 MB | HF Download |
inception_v3 |
Inception V3 | High Precision | ~95 MB | HF Download |
📂 Example Scripts Index
Professional production-ready scripts are included under examples/:
examples/01_basic_classification.py: Local image classification.examples/02_url_classification.py: Remote image URL classification.examples/03_batch_classification.py: High-throughput batch benchmarking.examples/04_pil_and_bytes_classification.py: In-memory PIL and bytes buffer processing.examples/05_custom_model_and_threading.py: Model backbones & ONNX CPU thread tuning.
Run any example using:
python examples/01_basic_classification.py
📜 License
MIT License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nsfwpy_onnx-1.0.2.tar.gz.
File metadata
- Download URL: nsfwpy_onnx-1.0.2.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
330c95c410a7f94622f883c1d8c4cef1aac45f3df9acb5b3947994bccf80fd7c
|
|
| MD5 |
1da7ed40c75d93e9eff3a21f81f7e9de
|
|
| BLAKE2b-256 |
c45fdd68a61f7d99469f816d628a04f444c12b93b902408cbb56d0dbaccdbc12
|
File details
Details for the file nsfwpy_onnx-1.0.2-py3-none-any.whl.
File metadata
- Download URL: nsfwpy_onnx-1.0.2-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d8ad02a4b31f60a43e71c06e561f9216a6dc004b2f98c19beae7e53d6fada18
|
|
| MD5 |
1d87a2317ec19c485114b65246d203f9
|
|
| BLAKE2b-256 |
ee1438cad905cb6290f2e1105a38b7467281313265031597261e0c3d8553bdb5
|