| | --- |
| | license: cc-by-nc-4.0 |
| | language: |
| | - en |
| | base_model: |
| | - facebook/metaclip-2-worldwide-s16 |
| | pipeline_tag: image-classification |
| | library_name: transformers |
| | tags: |
| | - text-generation-inference |
| | - Content-filtering |
| | model-index: |
| | - name: Nsfw_Image_Detection_OSS |
| | results: |
| | - task: |
| | type: image-classification |
| | dataset: |
| | type: evaluation |
| | name: NSFW Image Detection Benchmark |
| | metrics: |
| | - type: accuracy |
| | value: 0.8918 |
| | name: Accuracy |
| |
|
| | - type: f1 |
| | value: 0.9071 |
| | name: F1 (NSFW) |
| |
|
| | - type: precision |
| | value: 0.9047 |
| | name: Precision (NSFW) |
| |
|
| | - type: recall |
| | value: 0.9094 |
| | name: Recall (NSFW) |
| |
|
| | - type: f1 |
| | value: 0.8705 |
| | name: F1 (SFW) |
| |
|
| | - type: precision |
| | value: 0.8736 |
| | name: Precision (SFW) |
| |
|
| | - type: recall |
| | value: 0.8673 |
| | name: Recall (SFW) |
| |
|
| | - type: f1_macro |
| | value: 0.8888 |
| | name: Macro F1 |
| |
|
| | - type: f1_weighted |
| | value: 0.8917 |
| | name: Weighted F1 |
| | --- |
| | |
| |  |
| |
|
| | # **Nsfw_Image_Detection_OSS** |
| | |
| | > **Nsfw_Image_Detection_OSS** is an image classification vision-language encoder model fine-tuned from **[facebook/metaclip-2-worldwide-s16](https://huggingface.co/facebook/metaclip-2-worldwide-s16)** for a **binary NSFW detection task**. |
| | > It is designed to classify whether an image is **Safe For Work (SFW)** or **Not Safe For Work (NSFW)** using the **MetaClip2ForImageClassification** architecture. |
| |
|
| | > [!note] |
| | > **MetaCLIP 2: A Worldwide Scaling Recipe** |
| | > [https://huggingface.co/papers/2507.22062](https://huggingface.co/papers/2507.22062) |
| |
|
| | ## Evaluation Report (Self-Reported) |
| |
|
| | ```py |
| | Classification report: |
| | |
| | precision recall f1-score support |
| | |
| | SFW 0.8736 0.8673 0.8705 11103 |
| | NSFW 0.9047 0.9094 0.9071 15380 |
| | |
| | accuracy 0.8918 26483 |
| | macro avg 0.8892 0.8884 0.8888 26483 |
| | weighted avg 0.8917 0.8918 0.8917 26483 |
| | ``` |
| |
|
| |  |
| |
|
| | # **Label Mapping** |
| |
|
| | The model categorizes images into two classes: |
| |
|
| | * **Class 0:** **SFW** |
| | * **Class 1:** **NSFW** |
| |
|
| | ```json |
| | { |
| | "id2label": { |
| | "0": "SFW", |
| | "1": "NSFW" |
| | }, |
| | "label2id": { |
| | "SFW": 0, |
| | "NSFW": 1 |
| | } |
| | } |
| | ``` |
| |
|
| | # **Run with Transformers** |
| |
|
| | ```python |
| | !pip install -q transformers torch pillow gradio |
| | ``` |
| |
|
| | ```python |
| | import gradio as gr |
| | import torch |
| | from transformers import AutoImageProcessor, AutoModelForImageClassification |
| | from PIL import Image |
| | |
| | # Model name from Hugging Face Hub |
| | model_name = "prithivMLmods/Nsfw_Image_Detection_OSS" |
| | |
| | # Load processor and model |
| | processor = AutoImageProcessor.from_pretrained(model_name) |
| | model = AutoModelForImageClassification.from_pretrained(model_name) |
| | model.eval() |
| | |
| | # Define labels |
| | LABELS = { |
| | 0: "SFW", |
| | 1: "NSFW" |
| | } |
| | |
| | def nsfw_detection(image): |
| | """Predict whether an image is SFW or NSFW.""" |
| | image = Image.fromarray(image).convert("RGB") |
| | inputs = processor(images=image, return_tensors="pt") |
| | |
| | with torch.no_grad(): |
| | outputs = model(**inputs) |
| | logits = outputs.logits |
| | probs = torch.nn.functional.softmax(logits, dim=1).squeeze().tolist() |
| | |
| | predictions = {LABELS[i]: round(probs[i], 3) for i in range(len(probs))} |
| | return predictions |
| | |
| | # Build Gradio interface |
| | iface = gr.Interface( |
| | fn=nsfw_detection, |
| | inputs=gr.Image(type="numpy", label="Upload Image"), |
| | outputs=gr.Label(label="NSFW Detection Probabilities"), |
| | title="NSFW Image Detection (MetaCLIP-2)", |
| | description="Upload an image to classify whether it is Safe For Work (SFW) or Not Safe For Work (NSFW)." |
| | ) |
| | |
| | # Launch app |
| | if __name__ == "__main__": |
| | iface.launch() |
| | ``` |
| |
|
| | # **Intended Use** |
| |
|
| | The **Nsfw_Image_Detection_OSS** model is designed to classify images into **SFW or NSFW categories**. |
| | |
| | Potential use cases include: |
| | |
| | * **Content Moderation:** Automated filtering of unsafe or adult content. |
| | * **Social Media Platforms:** Preventing the upload of explicit media. |
| | * **Enterprise Safety:** Ensuring workplace-appropriate content in shared environments. |
| | * **Dataset Filtering:** Cleaning large-scale image datasets before training. |
| | * **Parental Control Systems:** Blocking inappropriate visual material. |