Skip to main content

An ensemble of Neural Nets for Nudity Detection and Censoring

Project description

NudeNet: An ensemble of Neural Nets for Nudity Detection and Censoring


Demo of the classifier available at

Code used to create the demo available at

Uncensored version of the following image can be found at (NSFW)

Classification scores on the data available at

Classification Classes

nude -> image contains nudity

safe -> image doesn't contain nudity

Detection Classes

BELLY -> exposed belly (both male and female)

BUTTOCKS -> exposed buttocks (both male and female)

F_BREAST -> exposed female breast

F_GENITALIA -> exposed female genitalia

M_GENITALIA -> exposed male genitalia

M_BREAST -> exposed male breast


pip install nudenet
# or
pip install git+

Classifier Usage

from nudenet import NudeClassifier
classifier = NudeClassifier()
# {'path_to_nude_image': {'safe': 5.8822202e-08, 'unsafe': 1.0}}

Classifier now available with tfserving docker image

# Get the docker image
docker pull bedapudi6788/nudeclassifier:v1
docker run -d -p 8500:8500 bedapudi6788/nudeclassifier:v1

# Installing python client
pip install nudeclient
import nudeclient
# Single image prediction
{'path_to_nude_image': {'safe': 5.8822202e-08, 'unsafe': 1.0}}

# Batch predictions
nudeclient.predict(['path_to_image_1', 'path_to_image2])
{'path_to_image_1': {'safe': 5.8822202e-08, 'unsafe': 1.0}, 'path_to_image_2': {'safe': 5.8822202e-08, 'unsafe': 1.0}}

Detector Usage

from nudenet import NudeDetector
detector = NudeDetector()

# Performing detection
# [{'box': [352, 688, 550, 858], 'score': 0.9603578, 'label': 'BELLY'}, {'box': [507, 896, 586, 1055], 'score': 0.94103414, 'label': 'F_GENITALIA'}, {'box': [221, 467, 552, 650], 'score': 0.8011624, 'label': 'F_BREAST'}, {'box': [359, 464, 543, 626], 'score': 0.6324697, 'label': 'F_BREAST'}]

# Censoring an image
detector.censor('path_to_nude_image', out_path='censored_image_path', visualize=False)

Classifier data available at

To Do:

  1. Improve Documentation for the functions. (Right now user has to see the function definition to understand all the params)
  2. Convert these models into tflite, tfjs and create another repo that used tfjs to perform in browser detection and censor.

Note: Entire credit for collecting the object recognition dataset goes to (NSFW). The link for their api and the discord are as follows API here: Discord:


Although nudenet is licensed under GPL, if you want to use it commercially without open sourcing your code please email me or raise an issue in this repo so that I can provide you explicit written permission to use as you wish. The only reason for doing this is, it would be nice to know if some company is using my work.

Project details

Download files

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

Files for NudeNet, version 1.1.0
Filename, size File type Python version Upload date Hashes
Filename, size NudeNet-1.1.0-py2.py3-none-any.whl (18.0 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size NudeNet-1.1.0.tar.gz (6.3 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page