# NudeNet: Neural Nets for Nudity Classification, Detection and selective censoring
[](https://zenodo.org/badge/latestdoi/173154449) 
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 |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
```bash
# 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
```
**Note: golang example https://github.com/notAI-tech/NudeNet/issues/63#issuecomment-729555360**, thanks to [Preetham Kamidi](https://github.com/preetham)
# As Python module
**Installation**:
```bash
pip install --upgrade nudenet
pip install git+https://github.com/Sterrenhemel/NudeNet
```
**Classifier Usage**:
```python
# 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}, ....}}
```
Thanks to [Johnny Urosevic](https://github.com/JohnnyUrosevic), NudeClassifier is also available in tflite.
**TFLite Classifier Usage**:
```python
# Import module
from nudenet import NudeClassifierLite
# initialize classifier (downloads the checkpoint file automatically the first time)
classifier_lite = NudeClassifierLite()
# Classify single image
classifier_lite.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_lite.classify(['path_to_image_1', 'path_to_image_2'])
# Returns {'path_to_image_1': {'safe': PROBABILITY, 'unsafe': PROBABILITY},
# 'path_to_image_2': {'safe': PROBABILITY, 'unsafe': PROBABILITY}}
```
Using the tflite classifier from flutter: **https://github.com/ndaysinaiK/nude-test**
**Detector Usage**:
```python
# 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')
# fast mode is ~3x faster compared to default mode with slightly lower accuracy.
detector.detect('path_to_image', mode='fast')
# 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)
# fast mode is ~3x faster compared to default mode with slightly lower accuracy.
detector.detect_video('path_to_video', batch_size=BATCH_SIZE, show_progress=BOOLEAN, mode='fast')
# 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
Raw data
{
"_id": null,
"home_page": "https://github.com/bedapudi6788/NudeNet",
"name": "VNudeNet",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6.0",
"maintainer_email": "",
"keywords": "",
"author": "BEDAPUDI PRANEETH",
"author_email": "praneethbedapudi@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/01/f2/eda2359935c1db79b67e9d59975c09e10f69dda33be4925d9b86e6199c3e/VNudeNet-2.1.0.tar.gz",
"platform": null,
"description": "\n# NudeNet: Neural Nets for Nudity Classification, Detection and selective censoring\n\n[](https://zenodo.org/badge/latestdoi/173154449) \n\nUncensored version of the following image can be found at https://i.imgur.com/rga6845.jpg (NSFW)\n\n\n\n**Classifier classes:**\n|class name | Description |\n|--------|:--------------:\n|safe | Image/Video is not sexually explicit |\n|unsafe | Image/Video is sexually explicit|\n\n**Default Detector classes:**\n|class name | Description |\n|--------|:-------------------------------------:\n|EXPOSED_ANUS | Exposed Anus; Any gender |\n|EXPOSED_ARMPITS | Exposed Armpits; Any gender |\n|COVERED_BELLY | Provocative, but covered Belly; Any gender |\n|EXPOSED_BELLY | Exposed Belly; Any gender |\n|COVERED_BUTTOCKS | Provocative, but covered Buttocks; Any gender |\n|EXPOSED_BUTTOCKS | Exposed Buttocks; Any gender |\n|FACE_F | Female Face|\n|FACE_M | Male Face|\n|COVERED_FEET |Covered Feet; Any gender |\n|EXPOSED_FEET | Exposed Feet; Any gender|\n|COVERED_BREAST_F | Provocative, but covered Breast; Female |\n|EXPOSED_BREAST_F | Exposed Breast; Female |\n|COVERED_GENITALIA_F |Provocative, but covered Genitalia; Female|\n|EXPOSED_GENITALIA_F |Exposed Genitalia; Female |\n|EXPOSED_BREAST_M |Exposed Breast; Male |\n|EXPOSED_GENITALIA_M |Exposed Genitalia; Male |\n\n**Base Detector classes:**\n|class name | Description |\n|--------|:--------------:\n|EXPOSED_BELLY | Exposed Belly; Any gender |\n|EXPOSED_BUTTOCKS | Exposed Buttocks; Any gender |\n|EXPOSED_BREAST_F | Exposed Breast; Female |\n|EXPOSED_GENITALIA_F |Exposed Genitalia; Female |\n|EXPOSED_GENITALIA_M |Exposed Genitalia; Male |\n|EXPOSED_BREAST_M |Exposed Breast; Male |\n\n# As self-hostable API service\n```bash\n# Classifier\ndocker run -it -p8080:8080 notaitech/nudenet:classifier\n\n# Detector\ndocker run -it -p8080:8080 notaitech/nudenet:detector\n\n# See fastDeploy-file_client.py for running predictions via fastDeploy's REST endpoints \nwget https://raw.githubusercontent.com/notAI-tech/fastDeploy/master/cli/fastDeploy-file_client.py\n# Single input\npython fastDeploy-file_client.py --file PATH_TO_YOUR_IMAGE\n\n# Client side batching\npython fastDeploy-file_client.py --dir PATH_TO_FOLDER --ext jpg\n```\n\n**Note: golang example https://github.com/notAI-tech/NudeNet/issues/63#issuecomment-729555360**, thanks to [Preetham Kamidi](https://github.com/preetham)\n\n\n# As Python module\n**Installation**:\n```bash\npip install --upgrade nudenet\n\npip install git+https://github.com/Sterrenhemel/NudeNet\n\n```\n\n**Classifier Usage**:\n```python\n# Import module\nfrom nudenet import NudeClassifier\n\n# initialize classifier (downloads the checkpoint file automatically the first time)\nclassifier = NudeClassifier()\n\n# Classify single image\nclassifier.classify('path_to_image_1')\n# Returns {'path_to_image_1': {'safe': PROBABILITY, 'unsafe': PROBABILITY}}\n# Classify multiple images (batch prediction)\n# batch_size is optional; defaults to 4\nclassifier.classify(['path_to_image_1', 'path_to_image_2'], batch_size=BATCH_SIZE)\n# Returns {'path_to_image_1': {'safe': PROBABILITY, 'unsafe': PROBABILITY},\n# 'path_to_image_2': {'safe': PROBABILITY, 'unsafe': PROBABILITY}}\n\n# Classify video\n# batch_size is optional; defaults to 4\nclassifier.classify_video('path_to_video', batch_size=BATCH_SIZE)\n# Returns {\"metadata\": {\"fps\": FPS, \"video_length\": TOTAL_N_FRAMES, \"video_path\": 'path_to_video'},\n# \"preds\": {frame_i: {'safe': PROBABILITY, 'unsafe': PROBABILITY}, ....}}\n\n```\n\nThanks to [Johnny Urosevic](https://github.com/JohnnyUrosevic), NudeClassifier is also available in tflite.\n\n**TFLite Classifier Usage**:\n```python\n# Import module\nfrom nudenet import NudeClassifierLite\n\n# initialize classifier (downloads the checkpoint file automatically the first time)\nclassifier_lite = NudeClassifierLite()\n\n# Classify single image\nclassifier_lite.classify('path_to_image_1')\n# Returns {'path_to_image_1': {'safe': PROBABILITY, 'unsafe': PROBABILITY}}\n# Classify multiple images (batch prediction)\n# batch_size is optional; defaults to 4\nclassifier_lite.classify(['path_to_image_1', 'path_to_image_2'])\n# Returns {'path_to_image_1': {'safe': PROBABILITY, 'unsafe': PROBABILITY},\n# 'path_to_image_2': {'safe': PROBABILITY, 'unsafe': PROBABILITY}}\n\n```\n\nUsing the tflite classifier from flutter: **https://github.com/ndaysinaiK/nude-test** \n\n**Detector Usage**:\n```python\n# Import module\nfrom nudenet import NudeDetector\n\n# initialize detector (downloads the checkpoint file automatically the first time)\ndetector = NudeDetector() # detector = NudeDetector('base') for the \"base\" version of detector.\n\n# Detect single image\ndetector.detect('path_to_image')\n# fast mode is ~3x faster compared to default mode with slightly lower accuracy.\ndetector.detect('path_to_image', mode='fast')\n# Returns [{'box': LIST_OF_COORDINATES, 'score': PROBABILITY, 'label': LABEL}, ...]\n\n# Detect video\n# batch_size is optional; defaults to 2\n# show_progress is optional; defaults to True\ndetector.detect_video('path_to_video', batch_size=BATCH_SIZE, show_progress=BOOLEAN)\n# fast mode is ~3x faster compared to default mode with slightly lower accuracy.\ndetector.detect_video('path_to_video', batch_size=BATCH_SIZE, show_progress=BOOLEAN, mode='fast')\n# Returns {\"metadata\": {\"fps\": FPS, \"video_length\": TOTAL_N_FRAMES, \"video_path\": 'path_to_video'},\n# \"preds\": {frame_i: {'box': LIST_OF_COORDINATES, 'score': PROBABILITY, 'label': LABEL}, ...], ....}}\n\n\n\n```\n\n# Notes:\n- detect_video and classify_video first identify the \"unique\" frames in a video and run predictions on them for significant performance improvement.\n- V1 of NudeDetector (available in master branch of this repo) was trained on 12000 images labelled by the good folks at cti-community.\n- V2 (current version) of NudeDetector is trained on 160,000 entirely auto-labelled (using classification heat maps and various other hybrid techniques) images. \n- The entire data for the classifier is available at https://archive.org/details/NudeNet_classifier_dataset_v1\n- 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\n\n\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "An ensemble of Neural Nets for Nudity Detection and Censoring",
"version": "2.1.0",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "1c8ff0d5fce7a4848cda4336b577f963",
"sha256": "7aa005fa3c1dd791c1af400d0410ae0dcf522b1f534e11bca19d4ae14974d4aa"
},
"downloads": -1,
"filename": "VNudeNet-2.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1c8ff0d5fce7a4848cda4336b577f963",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6.0",
"size": 24930,
"upload_time": "2022-12-04T19:00:59",
"upload_time_iso_8601": "2022-12-04T19:00:59.681251Z",
"url": "https://files.pythonhosted.org/packages/6d/da/e106e775a8a9a2138c3b6404470a640b90859029131ed6ff35b4fc4e47ea/VNudeNet-2.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "8bdf00b886b9dc942c53239bdb2c6b8e",
"sha256": "b6cacd1bc01a5f7c9ebc9435a425413df92be8b1d8433048ad816682bc16357e"
},
"downloads": -1,
"filename": "VNudeNet-2.1.0.tar.gz",
"has_sig": false,
"md5_digest": "8bdf00b886b9dc942c53239bdb2c6b8e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6.0",
"size": 24340,
"upload_time": "2022-12-04T19:01:01",
"upload_time_iso_8601": "2022-12-04T19:01:01.184792Z",
"url": "https://files.pythonhosted.org/packages/01/f2/eda2359935c1db79b67e9d59975c09e10f69dda33be4925d9b86e6199c3e/VNudeNet-2.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-12-04 19:01:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "bedapudi6788",
"github_project": "NudeNet",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "vnudenet"
}