/ Модель

Характеристики

Лицензия
AGPL 3.0
Библиотека
ultralytics
Опубликована
20 сен 2026

yolo26-nsfw-labels

Поиск объектовИзображение → bounding_boxes3 профессии

YOLO26s NSFW V2 обнаруживает и локализует 19 категорий лица и анатомических областей на изображениях для разметки данных и инструментов фильтрации приватного контента.

773скачиваний за 30 дней0лайковвеса обновлены2 окт 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

YOLO26s NSFW V2 — модель компьютерного зрения для обнаружения объектов, разработанная автором репозитория на архитектуре Ultralytics YOLO26s и дообученная на проверенных человеком изображениях. Она локализует 19 категорий лица, нейтральных частей тела и чувствительных анатомических областей, включая закрытые и открытые области. Для каждого объекта модель выдаёт метку класса, координаты ограничивающей рамки и оценку уверенности.

Модель принимает изображения и предназначена для предварительной разметки наборов данных, локального обнаружения анатомических областей и создания пользовательских инструментов фильтрации приватных изображений. Это детектор отдельных объектов: он не присваивает изображению общую оценку безопасности и сам не применяет правила модерации. Вес файла ONNX — 19,4 МБ; заявленное входное разрешение — 640×640 с возможностью использовать более высокое разрешение. В README отмечено снижение качества для классов MALE_BREAST_EXPOSED и MALE_GENITALIA_EXPOSED относительно предыдущей версии. Модель предназначена только для совершеннолетних пользователей; применение к материалам с несовершеннолетними и несанкционированным интимным изображениям запрещено автором. Лицензия — AGPL-3.0.

Сценарии применения

  • предварительная разметка анатомических объектов в наборах изображений
  • локализация чувствительных областей для пользовательского фильтра приватных фотографий
  • поиск лиц и частей тела на изображениях
  • подготовка рамок объектов для CVAT или X-AnyLabeling
  • получение локальных детекций для последующей обработки в системах модерации

Ограничения

Модель не оценивает безопасность изображения целиком и не принимает решения о модерации. В README отмечено ухудшение результатов для классов MALE_BREAST_EXPOSED и MALE_GENITALIA_EXPOSED; применение к изображениям несовершеннолетних и несанкционированным интимным изображениям запрещено.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

YOLO26s NSFW & Human Anatomy Object Detection Model V2 (19 Classes)

[!CAUTION]

⚠️ Sensitive Content Warning - 18+ Only

This repository contains a model taxonomy for detecting sensitive human anatomy for research, dataset annotation, and safety-tooling purposes only. Access is restricted to users 18 years and older. This model is intended to build privacy filters and annotation tools, not to create or distribute explicit content.

YOLO26s NSFW V2 (yolo26s-nsfw_v2.pt / yolo26s-nsfw_v2.onnx) is an open-weights, high-throughput Object Detection and Spatial Feature Localization Model built upon the modern Ultralytics YOLO26s architecture.

The model is designed to detect, localize, and classify 19 distinct human anatomical categories covering facial identity, neutral body parts, and sensitive regions (covered/exposed), providing three core output primitives for every detection:

  1. Category Label & Class ID (0 to 18)
  2. Bounding Box Coordinates ([x1, y1, x2, y2] or normalized [cx, cy, w, h])
  3. Detection Confidence Score (0.00 to 1.00)

[!NOTE]

📌 Model Scope & Intended Role

This model is strictly a per-box object detector, NOT an automated censorship engine or a safety-rating judge.

  • It does NOT compute an overall binary "Safe / Not Safe" decision for an image.
  • It does NOT decide platform policy or enforce automatic censorship rules on its own.
  • Instead, it provides fine-grained localized spatial detections that developers and researchers can use to inspect images, automate dataset pre-labeling (e.g., in X-AnyLabeling or CVAT), or build custom downstream privacy/moderation pipelines.

📋 Model Details

  • Model Type: Object Detection (Ultralytics YOLO26s)
  • Task: detect
  • Input Resolution: 640x640 (supports 768/960 for higher accuracy on small regions)
  • Number of Classes: 19 Classes (IDs 0 through 18)
  • Weights File: yolo26s-nsfw_v2.pt (9.47M params, 20.8 GFLOPs, 120 fused layers, 19.4 MB) | ONNX: yolo26s-nsfw_v2.onnx
  • Training Epochs: 30 epochs (Stage 2 fine-tune). Base checkpoint (dump) was pretrained for 48 epochs on Stage 1.
  • Training Hardware: NVIDIA GeForce RTX 4060 (8GB VRAM) with AMP FP16
  • Dataset Pipeline:
    • Stage 1 (pretrain → dump): 84k auto-labeled images (noisy pseudo-labels), monitored with 3.3k human-verified clean split — 48 epochs
    • Stage 2 (fine-tune → this v2): initialized from Stage 1, fine-tuned on 3.3k human-verified clean images, validated on 370-image clean split — 30 epochs
    • Final test set: 411 images unseen by all versions (2,579 instances, incl. 50 background/negative) — used for comparison below

🏷️ Class Definitions (19 Categories)

The model localizes facial identity, neutral body parts, and sensitive regions.

Class IDClass NameCategory GroupDescription
0FEMALE_GENITALIA_COVEREDCovered SensitiveCovered intimate area - female, lower torso
1FACE_FEMALEFacial IdentityFemale face
2BUTTOCKS_EXPOSEDExposed SensitiveExposed gluteal region
3FEMALE_BREAST_EXPOSEDExposed SensitiveExposed chest area - female
4FEMALE_GENITALIA_EXPOSEDExposed SensitiveExposed intimate area - female
5MALE_BREAST_EXPOSEDExposed SensitiveExposed chest area - male
6ANUS_EXPOSEDExposed SensitiveExposed intimate area - anal
7FEET_EXPOSEDNeutral Body PartBare feet
8BELLY_COVEREDNeutral Body PartCovered midsection / abdomen
9FEET_COVEREDNeutral Body PartFeet covered by footwear
10ARMPITS_COVEREDNeutral Body PartCovered underarm area
11ARMPITS_EXPOSEDNeutral Body PartExposed underarm area
12FACE_MALEFacial IdentityMale face
13BELLY_EXPOSEDNeutral Body PartExposed midsection / abdomen
14MALE_GENITALIA_EXPOSEDExposed SensitiveExposed intimate area - male
15ANUS_COVEREDCovered SensitiveCovered intimate area - anal
16FEMALE_BREAST_COVEREDCovered SensitiveCovered chest area - female
17BUTTOCKS_COVEREDCovered SensitiveCovered gluteal region
18HANDNeutral Body PartHuman hand / fingers

📊 Evaluation & Benchmark Performance

Benchmark generated 2026-09-29 on held-out validation split (data_ft.yaml, imgsz=640, batch=16, device=0).

1. Overall Performance — V2 vs Earlier Internal Iterations

ModelParams (M)Size (MB)mAP@50mAP@50-95PrecisionRecallF1-ScoreLatency (ms)FPS
yolo26s-nsfw_v1.39.47M57.5 MB0.74810.62510.78540.75510.77005.2193.7
yolo26s-nsfw_dump9.47M57.5 MB0.83420.59700.84510.75820.79934.4229.3
yolo26s-nsfw_v2 (this model)9.47M19.4 MB0.89880.75220.89540.84840.87134.2235.3

V2 improves over v1.3 by +15.1 points mAP@50 and +12.7 points mAP@50-95, while also being ~3× smaller and faster.

ℹ️ Note on comparison validity: the three checkpoints are not a strict controlled ablation — each used a different upstream pretrain and amount of fine-tuning data. Gains come from both more pretrain data (46k → 84k) and more fine-tune data (500 → 3,300 images). All three were evaluated on the same untouched 411-image test set.

2. Per-Class AP@50 Breakdown

Class Namev1.3dumpv2 (this model)
ANUS_COVERED0.10210.59420.7345
ANUS_EXPOSED0.85920.88820.9503
ARMPITS_COVERED0.01790.92850.9690
ARMPITS_EXPOSED0.24890.87330.9529
BELLY_COVERED0.53050.54880.7502
BELLY_EXPOSED0.95730.94430.9913
BUTTOCKS_COVERED0.73990.80850.8866
BUTTOCKS_EXPOSED0.85160.87360.9070
FACE_FEMALE0.98480.97150.9760
FACE_MALE0.78790.69710.8120
FEET_COVERED0.96480.97710.9908
FEET_EXPOSED0.92350.94210.9658
FEMALE_BREAST_COVERED0.91130.91620.9739
FEMALE_BREAST_EXPOSED0.96880.95960.9748
FEMALE_GENITALIA_COVERED0.72830.76940.9115
FEMALE_GENITALIA_EXPOSED0.98610.98200.9887
HAND0.94690.96390.9754
MALE_BREAST_EXPOSED0.89350.50580.5844
MALE_GENITALIA_EXPOSED0.81080.70600.7815

⚠️ Known limitation: MALE_BREAST_EXPOSED and MALE_GENITALIA_EXPOSED regress in v2 vs v1.3, likely due to class imbalance in clean set. Consider this for male-inclusive use cases.

3. Latency Decomposition

ModelPre-process (ms)Inference (ms)Post-process (ms)Total Latency (ms)FPS
yolo26s-nsfw_v1.30.723.810.635.16193.7
yolo26s-nsfw_dump0.713.040.614.36229.3
yolo26s-nsfw_v20.762.870.634.25235.3

💻 Quick Start & Python Usage

Installation

pip install ultralytics torch opencv-python

1. Extracting Detections (Label, BBox, Confidence)

from ultralytics import YOLO

model = YOLO("yolo26s-nsfw_v2.pt")

results = model.predict(
    source="path/to/image.jpg",
    conf=0.30,
    iou=0.45,
    device=0,
    imgsz=640
)

for res in results:
    for box in res.boxes:
        cls_id = int(box.cls[0].item())
        cls_name = res.names[cls_id]
        conf_score = float(box.conf[0].item())
        x1, y1, x2, y2 = map(int, box.xyxy[0].tolist())
        print(f"Class: {cls_name:<25} | ID: {cls_id:>2} | Score: {conf_score:.1%} | BBox: [{x1}, {y1}, {x2}, {y2}]")
    res.save("annotated_output.jpg")

2. Example: Export to YOLO TXT Format

for res in results:
    for box in res.boxes:
        cls_id = int(box.cls[0].item())
        cx, cy, bw, bh = box.xywhn[0].tolist()
        print(f"YOLO annotation: {cls_id} {cx:.6f} {cy:.6f} {bw:.6f} {bh:.6f}")

3. Example: User-Defined Selective Redaction

import cv2

img = cv2.imread("input.jpg")
results = model.predict(img, conf=0.30)

# User-defined policy: select which class IDs to redact
# Example uses IDs 2,3,4,6,14 - see class table above for mapping
REDACT_IDS = {2, 3, 4, 6, 14}

for box in results[0].boxes:
    cls_id = int(box.cls[0].item())
    if cls_id in REDACT_IDS:
        x1, y1, x2, y2 = map(int, box.xyxy[0].tolist())
        roi = img[y1:y2, x1:x2]
        if roi.size > 0:
            img[y1:y2, x1:x2] = cv2.GaussianBlur(roi, (51, 51), 30)

cv2.imwrite("redacted_output.jpg", img)

⚖️ Ethical Use, Legal Compliance & Safety Policy

[!CAUTION]

Strict Prohibition: Zero-Tolerance Policy on CSAM / CSAC

This model MUST NOT be used for creating, processing, indexing, or distributing Child Sexual Abuse Material (CSAM) or any content depicting underage individuals. Any such usage is strictly prohibited, illegal, and will be reported to appropriate authorities (e.g., NCMEC, Interpol).

  1. Intended Use Cases:
    • Academic research in computer vision and spatial feature localization
    • Assisting annotators with automated pre-labeling (Auto-Labeling)
    • Building opt-in client-side privacy filters and personal photo organization tools (e.g., Immich, Nextcloud)
  2. Non-Consensual Imagery (NCII):
    • Strictly prohibited from use in creation of non-consensual deepfakes or harassment material.
  3. Data Protection & Legal Compliance:
    • Users bear sole responsibility for compliance with regional privacy regulations (PDPA, GDPR, CCPA).

👥 Credits & Acknowledgments

  • Model Training & Maintenance: Pakaho-q1
  • Base Architecture: Ultralytics YOLO
  • Class Scheme Reference: NudeNet by notAI-tech (taxonomy reference only)
  • Media Ingestion Tools: Immich
  • Acceleration Stack: NVIDIA TensorRT & ONNX Runtime

📄 License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), consistent with the Ultralytics licensing framework.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · ultralytics

Нельзя запустить

Модели Ultralytics YOLO требуют отдельного рантайма.

Ревизия весов
b17c947

0 моделей