Автоматическое размытие неприемлемого контента (NSFW) на изображениях

При работе с изображениями, особенно в контексте веб-сайтов, социальных сетей или других публичных платформ, важно обеспечивать безопасность и комфорт пользователей, избегая демонстрации неприемлемого контента (NSFW – Not Safe for Work). В этой статье мы рассмотрим, как можно автоматически обнаруживать и размывать NSFW контент на изображениях с помощью Python и библиотеки Transformers.

Классификация изображений на предмет NSFW

Первым шагом является классификация изображений на категории “NSFW” и “SFW” (Safe for Work). Для этого мы будем использовать предобученную модель, которая была обучена на большом наборе изображений с соответствующими метками. Библиотека Transformers предоставляет удобный инструмент – конвейер (pipeline), который позволяет быстро выполнять задачи классификации.

from transformers import pipeline

classifier = pipeline("image-classification", model="Falconsai/nsfw_image_detection")

В приведенном коде мы инициализируем конвейер classifier для задачи классификации изображений. Модель “Falconsai/nsfw_image_detection” была обучена для распознавания NSFW контента и может классифицировать изображения на категории “Neutral”, “Hentai”, “Porn” и “Sexy”.

Обработка изображений и размытие NSFW контента

После классификации мы можем обработать изображение, размыв его, если оно содержит NSFW контент. Для этого используем библиотеку Pillow (PIL), которая позволяет применять различные фильтры к изображениям.

from PIL import Image, ImageFilter

img = Image.open(image_path)

if is_nsfw:
    img = img.filter(ImageFilter.GaussianBlur(radius=5))
    print("Предупреждение: изображение содержит NSFW контент. Применено размытие.")

В этом фрагменте кода мы загружаем изображение с помощью Image.open, а затем проверяем, является ли оно NSFW. Если изображение содержит неприемлемый контент, мы применяем фильтр ImageFilter.GaussianBlur с радиусом 5 для размытия деталей. Вы можете регулировать радиус, чтобы добиться нужного эффекта размытия.

Ниже представлена полная программа, которая загружает изображение, классифицирует его, а затем размывает, если оно содержит NSFW контент.

from transformers import pipeline
from PIL import Image, ImageFilter

def classify_and_blur_nsfw(image_path):
    classifier = pipeline("image-classification", model="Falconsai/nsfw_image_detection")
    img = Image.open(image_path)

    result = classifier(img)
    is_nsfw = any(pred['label'] in ['Hentai', 'Porn', 'Sexy'] for pred in result)

    if is_nsfw:
        img = img.filter(ImageFilter.GaussianBlur(radius=5))
        print("Предупреждение: NSFW контент. Применено размытие.")
    else:
        print("Безопасное изображение (SFW).")

    img.save('output.jpg')

# Пример использования
classify_and_blur_nsfw("/path/to/image.jpg")

В этой программе функция classify_and_blur_nsfw принимает путь к изображению, классифицирует его и, при необходимости, размывает. В конце измененное изображение сохраняется под именем “output.jpg”.

Автоматическое обнаружение и размытие неприемлемого контента на изображениях – важный шаг в обеспечении безопасности и комфорта пользователей. Библиотека Transformers, вместе с другими инструментами, такими как Pillow, позволяет легко реализовать такие решения. Данная программа может быть полезна для модерации контента, фильтрации изображений или других задач, где необходимо автоматически обрабатывать потенциально неприемлемый контент.