An ensemble of Neural Nets for Nudity Detection and Censoring
Project description
NudeNet: Neural Nets for Nudity Classification, Detection and selective censoring
Uncensored version of the following image can be found at https://i.imgur.com/rga6845.jpg (NSFW)
Classifier classes:
| class name | Description |
|---|---|
| safe | Image/Video is not sexually explicit |
| unsafe | Image/Video is sexually explicit |
Default Detector classes:
| class name | Description |
|---|---|
| EXPOSED_ANUS | Exposed Anus; Any gender |
| EXPOSED_ARMPITS | Exposed Armpits; Any gender |
| COVERED_BELLY | Provocative, but covered Belly; Any gender |
| EXPOSED_BELLY | Exposed Belly; Any gender |
| COVERED_BUTTOCKS | Provocative, but covered Buttocks; Any gender |
| EXPOSED_BUTTOCKS | Exposed Buttocks; Any gender |
| FACE_F | Female Face |
| FACE_M | Male Face |
| COVERED_FEET | Provocative, but covered Feet; Any gender |
| EXPOSED_FEET | Exposed Feet; Any gender |
| COVERED_BREAST_F | Provocative, but covered Breast; Female |
| EXPOSED_BREAST_F | Exposed Breast; Female |
| COVERED_GENITALIA_F | Provocative, but covered Genitalia; Female |
| EXPOSED_GENITALIA_F | Exposed Genitalia; Female |
| EXPOSED_BREAST_M | Exposed Breast; Male |
| EXPOSED_GENITALIA_M | Exposed Genitalia; Male |
Base Detector classes:
| class name | Description |
|---|---|
| EXPOSED_BELLY | Exposed Belly; Any gender |
| EXPOSED_BUTTOCKS | Exposed Buttocks; Any gender |
| EXPOSED_BREAST_F | Exposed Breast; Female |
| EXPOSED_GENITALIA_F | Exposed Genitalia; Female |
| EXPOSED_GENITALIA_M | Exposed Genitalia; Male |
| EXPOSED_BREAST_M | Exposed Breast; Male |
As self-hostable API service
# Classifier
docker run -it -p8080:8080 notaitech/nudenet:classifier
# Detector
docker run -it -p8080:8080 notaitech/nudenet:detector
# See fastDeploy-file_client.py for running predictions via fastDeploy's REST endpoints
wget https://raw.githubusercontent.com/notAI-tech/fastDeploy/master/cli/fastDeploy-file_client.py
# Single input
python fastDeploy-file_client.py --file PATH_TO_YOUR_IMAGE
# Client side batching
python fastDeploy-file_client.py --dir PATH_TO_FOLDER --ext jpg
As Python module
Installation:
# Tested with tensorflow/ tensorflow-gpu == 1.14
pip install --upgrade nudenet
Classifier Usage:
# Import module
from nudenet import NudeClassifier
# initialize classifier (downloads the checkpoint file automatically the first time)
classifier = NudeClassifier()
# Classify single image
classifier.classify('path_to_image_1')
# Returns {'path_to_image_1': {'safe': PROBABILITY, 'unsafe': PROBABILITY}}
# Classify multiple images (batch prediction)
# batch_size is optional; defaults to 4
classifier.classify(['path_to_image_1', 'path_to_image_2'], batch_size=BATCH_SIZE)
# Returns {'path_to_image_1': {'safe': PROBABILITY, 'unsafe': PROBABILITY},
# 'path_to_image_2': {'safe': PROBABILITY, 'unsafe': PROBABILITY}}
# Classify video
# batch_size is optional; defaults to 4
classifier.classify_video('path_to_video', batch_size=BATCH_SIZE)
# Returns {"metadata": {"fps": FPS, "video_length": TOTAL_N_FRAMES, "video_path": 'path_to_video'},
# "preds": {frame_i: {'safe': PROBABILITY, 'unsafe': PROBABILITY}, ....}}
Detector Usage:
# Import module
from nudenet import NudeDetector
# initialize detector (downloads the checkpoint file automatically the first time)
detector = NudeDetector() # detector = NudeDetector('base') for the "base" version of detector.
# Detect single image
detector.detect('path_to_image')
# Returns [{'box': LIST_OF_COORDINATES, 'score': PROBABILITY, 'label': LABEL}, ...]
# Detect video
# batch_size is optional; defaults to 2
# show_progress is optional; defaults to True
detector.detect_video('path_to_video', batch_size=BATCH_SIZE, show_progress=BOOLEAN)
# Returns {"metadata": {"fps": FPS, "video_length": TOTAL_N_FRAMES, "video_path": 'path_to_video'},
# "preds": {frame_i: {'box': LIST_OF_COORDINATES, 'score': PROBABILITY, 'label': LABEL}, ...], ....}}
Notes:
- detect_video and classify_video first identify the "unique" frames in a video and run predictions on them for significant performance improvement.
- V1 of NudeDetector (available in master branch of this repo) was trained on 12000 images labelled by the good folks at cti-community.
- V2 (current version) of NudeDetector is trained on 160,000 entirely auto-labelled (using classification heat maps and various other hybrid techniques) images.
- The entire data for the classifier is available at https://archive.org/details/NudeNet_classifier_dataset_v1
- A part of the auto-labelled data (Images are from the classifier dataset above) used to train the base Detector is available at https://github.com/notAI-tech/NudeNet/releases/download/v0/DETECTOR_AUTO_GENERATED_DATA.zip
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
NudeNet-2.0.2.tar.gz
(10.7 kB
view details)
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 NudeNet-2.0.2.tar.gz.
File metadata
- Download URL: NudeNet-2.0.2.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0a845fff1c6f47f57d7ce47c2ea3228d4da594eb4941e0e05e85c3053574314
|
|
| MD5 |
3b6fc33f76eebdfd1737363c92a5d841
|
|
| BLAKE2b-256 |
d80d5066c6df703ac477988522290fd16805c1b1c766220cbaf0aba02bf3c0bd
|
File details
Details for the file NudeNet-2.0.2-py2.py3-none-any.whl.
File metadata
- Download URL: NudeNet-2.0.2-py2.py3-none-any.whl
- Upload date:
- Size: 21.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21eef6ebcdeaa4140089fbb0bef6395060503b55b90a65c3438b9d20bb545da7
|
|
| MD5 |
5e468160f9850c830e7395c43e0e2752
|
|
| BLAKE2b-256 |
90e6bfb3701370563bd7396f1fe6d66e14f075665e7840e1c2bf983cc64ccaaf
|