megamen32/nsfw_models_comprasion

Этот проект — утилита для сравнительного тестирования моделей детекции NSFW-контента на изображениях. Поддерживает модели из Hugging Face, Timm и NudeNet, считает метрики (accuracy, precision, recall, f1) и замеряет скорость.

Python

0

7 commits

updated May 20, 2025

See the code

README

🔍 NSFW Model Benchmark

Этот проект позволяет:

  • 📊 сравнивать точность и скорость NSFW-моделей (из Hugging Face, Timm и NudeNet);
  • 🧪 проводить собственные тесты на своих изображениях или видео;
  • ⚙️ использовать готовую функцию analyze_file или интегрировать в Telegram-бота через check_avatar.

📊 Результаты сравнения моделей

МодельAccuracyPrecisionRecallF1Время (сек)
NUDENET0.8571.0000.8330.9090.270
ADAMCODD0.9291.0000.9170.9579.260
FALCONSAI0.5710.8750.5830.7003.990
GIACOMOARIENTI0.7141.0000.6670.8003.820
LUKEJACOB20230.8571.0000.8330.9093.680
FREEPIK0.8571.0000.8330.90912.700
MARQO0.8571.0000.8330.9091.790

📦 Поддерживаемые модели

ТипМодель IDИсточник
🤗 HFAdamCodd/vit-base-nsfw-detectortransformers
🤗 HFFalconsai/nsfw_image_detectiontransformers
🤗 HFgiacomoarienti/nsfw-classifiertransformers
🤗 HFLukeJacob2023/nsfw-image-detectortransformers
🤗 HFFreepik/nsfw_image_detectortransformers
🧠 Timmmarqo/nsfw-image-detection-384timm / hf_hub
👀 NudeNetNudeDetectorлокальный детектор (nudenet)

🚀 Быстрый старт

  1. Установи зависимости:
pip install -r requirements.txt
  1. Положи изображения в папку data/. Файлы, в названии которых есть porn, будут считаться NSFW, остальные — SFW.

  2. Запусти сравнительный тест моделей:

python main.py

🧰 Проверка изображений и видео вручную

В проекте есть модуль nsfw_checker.py, который позволяет:

  • проверять любые изображения или видео с помощью выбранной модели;
  • использовать встроенную функцию analyze_file();
  • обрабатывать .jpg, .png, .mp4, .mov и пр.;
  • получать результат: is_nsfw, уверенность, debug-информацию.

Пример использования:

from nsfw_checker import analyze_file

if __name__ == "__main__":
    path = "antiwhorebot/photo_2025-05-15_13-16-35.mp4"
    is_nsfw, score, src, debug = analyze_file(path)
    print("🔍 Проверка:", src)
    print("⚠️ NSFW:", is_nsfw)
    print("📈 Уверенность:", score)
    print("🧠 Детали:", debug)

🤖 Поддержка aiogram (Telegram-бот)

В nsfw_checker.py реализована функция check_avatar(bot, user_id), которая:

  • загружает аватарку пользователя;
  • извлекает изображение;
  • проверяет на NSFW;
  • возвращает: bool, уверенность, file_id.

Пример:

is_nsfw, score, file_id = await check_avatar(bot, user_id)

Идеально подходит для антиспам/антишлюх ботов.


📂 Структура проекта

.
├── main.py            # сравнение всех моделей
├── nsfw_checker.py    # API для проверки отдельных файлов
├── data/              # изображения и видео для теста
├── requirements.txt
└── README.md

🧪 Пример вывода ошибок

Нажми, чтобы развернуть консольный вывод
🔍 Проверка модели: nudenet
❌ ошибка в data\porn12.jpg (  sfw обнаружено: ['FACE_FEMALE'])
❌ ошибка в data\porn3.jpg (  sfw обнаружено: ['FACE_FEMALE'])

🔍 Проверка модели: adamcodd
❌ ошибка в data\porn11.jpg (sfw)

🔍 Проверка модели: falconsai
❌ ошибка в data\photo_2025-05-20_13-52-07.jpg (nsfw)
❌ ошибка в data\porn11.jpg (normal)
❌ ошибка в data\porn2.jpg (normal)
❌ ошибка в data\porn3.jpg (normal)
❌ ошибка в data\porn6.jpg (normal)
❌ ошибка в data\porn9.jpg (normal)

🔍 Проверка модели: giacomoarienti
❌ ошибка в data\porn10.jpg (neutral)
❌ ошибка в data\porn11.jpg (neutral)
❌ ошибка в data\porn12.jpg (neutral)
❌ ошибка в data\porn3.jpg (neutral)

🔍 Проверка модели: LukeJacob2023
❌ ошибка в data\porn11.jpg (neutral)
❌ ошибка в data\porn3.jpg (neutral)

🔍 Проверка модели: Freepik
❌ ошибка в data\porn11.jpg (neutral)
❌ ошибка в data\porn3.jpg (neutral)

🔍 Проверка модели: marqo
❌ ошибка в data\porn11.jpg (sfw)
❌ ошибка в data\porn3.jpg (sfw)

megamen32/nsfw_models_comprasion

Этот проект — утилита для сравнительного тестирования моделей детекции NSFW-контента на изображениях. Поддерживает модели из Hugging Face, Timm и NudeNet, считает метрики (accuracy, precision, recall, f1) и замеряет скорость.

Python

0

7 commits

updated May 20, 2025

See the code

README

🔍 NSFW Model Benchmark

Этот проект позволяет:

  • 📊 сравнивать точность и скорость NSFW-моделей (из Hugging Face, Timm и NudeNet);
  • 🧪 проводить собственные тесты на своих изображениях или видео;
  • ⚙️ использовать готовую функцию analyze_file или интегрировать в Telegram-бота через check_avatar.

📊 Результаты сравнения моделей

МодельAccuracyPrecisionRecallF1Время (сек)
NUDENET0.8571.0000.8330.9090.270
ADAMCODD0.9291.0000.9170.9579.260
FALCONSAI0.5710.8750.5830.7003.990
GIACOMOARIENTI0.7141.0000.6670.8003.820
LUKEJACOB20230.8571.0000.8330.9093.680
FREEPIK0.8571.0000.8330.90912.700
MARQO0.8571.0000.8330.9091.790

📦 Поддерживаемые модели

ТипМодель IDИсточник
🤗 HFAdamCodd/vit-base-nsfw-detectortransformers
🤗 HFFalconsai/nsfw_image_detectiontransformers
🤗 HFgiacomoarienti/nsfw-classifiertransformers
🤗 HFLukeJacob2023/nsfw-image-detectortransformers
🤗 HFFreepik/nsfw_image_detectortransformers
🧠 Timmmarqo/nsfw-image-detection-384timm / hf_hub
👀 NudeNetNudeDetectorлокальный детектор (nudenet)

🚀 Быстрый старт

  1. Установи зависимости:
pip install -r requirements.txt
  1. Положи изображения в папку data/. Файлы, в названии которых есть porn, будут считаться NSFW, остальные — SFW.

  2. Запусти сравнительный тест моделей:

python main.py

🧰 Проверка изображений и видео вручную

В проекте есть модуль nsfw_checker.py, который позволяет:

  • проверять любые изображения или видео с помощью выбранной модели;
  • использовать встроенную функцию analyze_file();
  • обрабатывать .jpg, .png, .mp4, .mov и пр.;
  • получать результат: is_nsfw, уверенность, debug-информацию.

Пример использования:

from nsfw_checker import analyze_file

if __name__ == "__main__":
    path = "antiwhorebot/photo_2025-05-15_13-16-35.mp4"
    is_nsfw, score, src, debug = analyze_file(path)
    print("🔍 Проверка:", src)
    print("⚠️ NSFW:", is_nsfw)
    print("📈 Уверенность:", score)
    print("🧠 Детали:", debug)

🤖 Поддержка aiogram (Telegram-бот)

В nsfw_checker.py реализована функция check_avatar(bot, user_id), которая:

  • загружает аватарку пользователя;
  • извлекает изображение;
  • проверяет на NSFW;
  • возвращает: bool, уверенность, file_id.

Пример:

is_nsfw, score, file_id = await check_avatar(bot, user_id)

Идеально подходит для антиспам/антишлюх ботов.


📂 Структура проекта

.
├── main.py            # сравнение всех моделей
├── nsfw_checker.py    # API для проверки отдельных файлов
├── data/              # изображения и видео для теста
├── requirements.txt
└── README.md

🧪 Пример вывода ошибок

Нажми, чтобы развернуть консольный вывод
🔍 Проверка модели: nudenet
❌ ошибка в data\porn12.jpg (  sfw обнаружено: ['FACE_FEMALE'])
❌ ошибка в data\porn3.jpg (  sfw обнаружено: ['FACE_FEMALE'])

🔍 Проверка модели: adamcodd
❌ ошибка в data\porn11.jpg (sfw)

🔍 Проверка модели: falconsai
❌ ошибка в data\photo_2025-05-20_13-52-07.jpg (nsfw)
❌ ошибка в data\porn11.jpg (normal)
❌ ошибка в data\porn2.jpg (normal)
❌ ошибка в data\porn3.jpg (normal)
❌ ошибка в data\porn6.jpg (normal)
❌ ошибка в data\porn9.jpg (normal)

🔍 Проверка модели: giacomoarienti
❌ ошибка в data\porn10.jpg (neutral)
❌ ошибка в data\porn11.jpg (neutral)
❌ ошибка в data\porn12.jpg (neutral)
❌ ошибка в data\porn3.jpg (neutral)

🔍 Проверка модели: LukeJacob2023
❌ ошибка в data\porn11.jpg (neutral)
❌ ошибка в data\porn3.jpg (neutral)

🔍 Проверка модели: Freepik
❌ ошибка в data\porn11.jpg (neutral)
❌ ошибка в data\porn3.jpg (neutral)

🔍 Проверка модели: marqo
❌ ошибка в data\porn11.jpg (sfw)
❌ ошибка в data\porn3.jpg (sfw)