При работе с изображениями, особенно в контексте веб-сайтов, социальных сетей или других публичных платформ, важно обеспечивать безопасность и комфорт пользователей, избегая демонстрации неприемлемого контента (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, позволяет легко реализовать такие решения. Данная программа может быть полезна для модерации контента, фильтрации изображений или других задач, где необходимо автоматически обрабатывать потенциально неприемлемый контент.