Как программно распознавать контент для взрослых?
В настоящее время я разрабатываю веб-сайт для клиента. Он состоит из пользователей, которые могут загружать фотографии для показа в галерее на сайте.
Проблема, с которой мы сталкиваемся, заключается в том, что когда пользователь загружает изображение, его, очевидно, необходимо будет проверить, чтобы убедиться, что оно безопасно для веб-сайта (никаких порнографических или откровенных изображений). Однако мой клиент не хотел бы вручную принимать каждое загружаемое изображение, так как это отнимет много времени, а изображения пользователей не будут мгновенно будьте в сети.
Я пишу свой код на PHP. Если понадобится, я мог бы перейти на ASP.net или C#. Есть ли какой-нибудь способ, которым это можно сделать?
6 answers
Существует библиотека JavaScript, называемая nude.js который предназначен для этого, хотя я никогда им не пользовался. Вот демонстрация его использования.
Существует также пОДМЕтальщик порнофильмов.
Другой вариант - "передать на аутсорсинг" работу по модерации, используя что-то вроде Механический Турок Амазонки, которая является краудсорсинговой платформой, которая " позволяет компьютерным программам координировать использование человеческого интеллекта для выполнения задач, которые компьютеры не в состоянии сделать". Таким образом, вы в основном заплатили бы небольшую сумму за элемент модерации и наняли бы стороннего человека для модерации контента для вас.
Единственное другое решение, которое я могу придумать, - это сделать изображения модерируемыми пользователями, где пользователи могут помечать неподходящие сообщения/изображения для модерации, и если никто не хочет их модерировать вручную, их можно просто удалить после определенного количества флагов.
Вот несколько других интересных ссылок на тема:
Если вы ищете решение на основе API, вы можете проверить Sightengine.com
Это автоматизированное решение для обнаружения таких вещей, как контент для взрослых, насилие, знаменитости и т.д. На изображениях и видео.
Вот пример на PHP с использованием SDK:
<?php
$client = new SightengineClient('YourApplicationID', 'YourAPIKey');
$output = $client>check('nudity')>image('https://sightengine.com/assets/img/examples/example2.jpg');
Затем вывод вернет классификацию:
{
"status": "success",
"request": {
"id": "req_VjyxevVQYXQZ1HMbnwtn",
"timestamp": 1471762434.0244,
"operations": 1
},
"nudity": {
"raw": 0.000757,
"partial": 0.000763,
"safe": 0.999243
},
"media": {
"id": "med_KWmB2GQZ29N4MVpVdq5K",
"uri": "https://sightengine.com/assets/img/examples/example2.jpg"
}
}
Ознакомьтесь с документацией для получения более подробной информации: https://sightengine.com/docs/#nudity-detection (отказ от ответственности: я там работаю)
Существует бесплатный API, который обнаруживает контент для взрослых (порно, нагота, NSFW).
Https://market.mashape.com/purelabs/sensitive-image-detection
Мы использовали его в нашей производственной среде, и я бы сказал, что пока он работает довольно хорошо. Хотя есть некоторые ложные обнаружения, похоже, они предпочитают помечать изображение как небезопасное, если они не уверены.
Все зависит от уровня точности, который вы ищете, простого определения тона кожи (например nude.js ), вероятно, даст вам точность 60-80 % на большом наборе образцов, для чего-то более точного, чем это, скажем, 90-95%, вам понадобится какая-то специализированная система компьютерного зрения с развивающейся моделью, которая со временем пересматривается. Для последнего вы, возможно, захотите проверить http://clarifai.com или https://scanii.com (над которым я работаю)
Приведенный ниже пример не дает вам 100% точных результатов, но он должен хоть немного помочь вам и работает из коробки.
<?php
$url = 'http://server.com/image.png';
$data = json_decode(file_get_contents('http://api.rest7.com/v1/detect_nudity.php?url=' . $url));
if (@$data->success !== 1)
{
die('Failed');
}
echo 'Contains nudity? ' . $data->nudity . '<br>';
echo 'Nudity percentage: ' . $data->nudity_percentage . '<br>';
В Microsoft Azure есть очень классный API под названием Компьютерное зрение , который вы можете использовать бесплатно (либо через пользовательский интерфейс, либо программно) и содержит тонны документации, в том числе для PHP.
У него есть некоторые удивительно точные (а иногда и юмористические) результаты.
Помимо обнаружения взрослого и "пикантного" материала, он будет читать текст, угадывать ваш возраст, определять основные цвета и т. Д. и т. Д.
Вы можете попробовать это на azure.microsoft.com.
Пример вывода из "пикантного" изображения:
FEATURE NAME: VALUE:
Description { "tags": [ "person", "man", "young", "woman", "holding",
"surfing", "board", "hair", "laying", "boy", "standing",
"water", "cutting", "white", "beach", "people", "bed" ],
"captions": [ { "text": "a man and a woman taking a selfie",
"confidence": 0.133149087 } ] }
Tags [ { "name": "person", "confidence": 0.9997446 },
{ "name": "man", "confidence": 0.9587285 },
{ "name": "wall", "confidence": 0.9546831 },
{ "name": "swimsuit", "confidence": 0.499717563 } ]
Image format "Jpeg"
Image dimensions 1328 x 2000
Clip art type 0
Line drawing type 0
Black and white false
Adult content true
Adult score 0.9845981
Racy true
Racy score 0.964191854
Categories [ { "name": "people_baby", "score": 0.4921875 } ]
Faces [ { "age": 37, "gender": "Female",
"faceRectangle": { "top": 317, "left": 1554,
"width": 232, "height": 232 } } ]
Dominant color background "Brown"
Dominant color foreground "Black"
Accent Color #0D8CBE