Публікація

Детектор NSFW для розпізновання зображень з шкідливим для роботи контентом

Скріпт базується на nsfwjs і є враппером для розгортання на Deno Deploy

Зробив незамисловатий враппер, який являє собою детектор NSFW контента, тобто зображень сексуального та порнографічного характера. Цей детектор базується на TensorFlow AI модельці, яка представлена у вигляді пакету nsfwjs.

Приклад запиту:

1
2
3
4
5
6
7
8
9
10
11
12
13
const formdata = new FormData();
formdata.append("image", fileInput.files[0], "nsfw-image.jpg");

const requestOptions = {
  method: "POST",
  body: formdata,
  redirect: "follow"
};

fetch("https://nsfw-detector.ujournal.com.ua/", requestOptions)
  .then((response) => response.json())
  .then((result) => console.log(result))
  .catch((error) => console.error(error));

Приклад відповіді:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
    "predictions": [
        {
            "className": "Porn",
            "probability": 0.98
        },
        {
            "className": "Sexy",
            "probability": 0.01
        },
        {
            "className": "Hentai",
            "probability": 0.01
        },
        {
            "className": "Neutral",
            "probability": 0
        },
        {
            "className": "Drawing",
            "probability": 0
        }
    ],
    "isNSFW": true,
    "confidence": 0.98,
    "processingTime": 2802
}

З приклада бачимо, що окрім обмеженого результата у вигляді флага isNSFW, маємо ще список predictions з докладною оцінкою по кожному класу. З тестів зрозумів, що деякі зображення хибно відносяться до Neutral, особливо ті, де багато одягу та лише маленькі фрагменти тіла. Проте, людина точно визначить це зображення, як порнографічне. Тому навіть малі значення probability в класі Porn повинні викликати увагу.

І загальна думка: моделька доволі дешева і доволі ефективна. Я захостив її на Deno Deploy і планую використовувати в CRON скрипті для неспішної модерації контента.

Оновлено: Додана можливість перевіряти тексти на входження поганих слів за словником jmas/profanity-list.

Посилання на Github: github.com/jmas/nsfw-detector-api

URL сервісу: nsfw-detector.ujournal.com.ua

Публікація захищена ліцензією CC BY 4.0 .