Классификации изображений NSFW

Библиотека Transformers предоставляет не только модели и токенизаторы, но и удобные инструменты для высокоуровневой обработки данных, такие как конвейеры (pipelines). Конвейеры позволяют быстро и легко выполнять различные задачи, связанные с обработкой естественного языка и компьютерным зрением, без необходимости в глубоком понимании внутренней работы моделей.

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

Для начала нам понадобится библиотека Transformers и библиотека Pillow (PIL) для работы с изображениями:

from PIL import Image
from transformers import pipeline

Затем мы инициализируем конвейер для классификации изображений с помощью предобученной модели. В данном случае мы используем модель “Falconsai/nsfw_image_detection”, которая была обучена для классификации изображений на категории “NSFW” и “SFW” (Safe for Work):

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

Метод pipeline позволяет быстро создать конвейер для конкретной задачи. В качестве первого аргумента мы указываем тип задачи (“image-classification” для классификации изображений), а во втором аргументе указываем предобученную модель, которую мы хотим использовать.

Для классификации изображений мы сначала загружаем изображение с помощью библиотеки PIL:

img = Image.open("/content/images.jpg")

В данном примере предполагается, что изображение с именем “images.jpg” находится в той же директории, что и скрипт. Вы можете заменить путь на путь к вашему изображению.

Затем мы передаем загруженное изображение в наш конвейер:

result = classifier(img)
		

Copied

Метод classifier возвращает список предсказаний, где каждое предсказание содержит информацию о вероятности принадлежности изображения к определенной категории.

Результаты классификации можно вывести на экран:

for prediction in result:
    print(prediction)

Каждое предсказание содержит следующие ключи:

  • label – категория, к которой может относиться изображение (например, “Neutral”, “Hentai”, “Porn”, “Sexy”).
  • score – вероятность принадлежности изображения к данной категории, значение от 0 до 1.

Например, результат может выглядеть следующим образом:

{'label': 'Neutral', 'score': 0.9999998807907959}
{'label': 'Hentai', 'score': 0.00000011920921371459961}
{'label': 'Porn', 'score': 0.0}
{'label': 'Sexy', 'score': 0.0}
		

В данном случае модель с высокой вероятностью определила, что изображение относится к категории “Neutral” (нейтральное, безопасное для работы).

Использование конвейеров из библиотеки Transformers позволяет быстро и эффективно решать различные задачи обработки естественного языка и компьютерного зрения. В данном примере мы рассмотрели, как классифицировать изображения на предмет неприемлемого контента, но конвейеры могут быть использованы и для других задач, таких как распознавание объектов, генерация текста, перевод и многие другие.

Конвейеры являются удобным инструментом для быстрого прототипирования и экспериментов, позволяя сосредоточиться на решении конкретной задачи, не углубляясь в детали реализации моделей.

from PIL import Image
from transformers import pipeline
img = Image.open("/content/images.jpg")
classifier = pipeline("image-classification", model="Falconsai/nsfw_image_detection")
classifier(img)