Реальность того, что в мире насчитывается около 4,54 миллиарда пользователей интернета (июнь 2020 г.), генерируя беспрецедентное количество контента, только увеличивает желание найти подход для оптимизации модерации контента. И эта задача становится все тяжелее из-за фактов, что количество активных пользователей постоянно понижается, объемы контента также растут в геометрической прогрессии, машинное обучение и ИИ могут быть очень дорогими, а ручная модерация очень трудоемкая и задерживается во времени.
Итак, теперь мы находимся в точке, когда любая платформа, которая позволяет сгенерировать пользователем контент, сталкивается с аналогичной проблемой. К счастью, машинное обучение уже созрело до такой степени, что достижения в области мощности компьютерной обработки, хранения, инструментов данных, веб -и т. Д. Это и постоянное стремление к инновациям привело к тому, что команда Sashido создала эту простую и элегантную полностью функциональную службу модерации контента, созданную только инструментами и библиотеками с открытым исходным кодом . Он состоит из трех основных компонентов - API REST Classification Classification, Engine Automation и панели администратора, которые могут быть интегрированы отдельно или в целом в любой проект Server Server.js и размещены в любом месте.
Простая иллюстрация нашей настольной и мобильной панели администратора. Проверьте полную демонстрацию здесь.
Изображения, отображаемые для утверждения в приложении Admin, представляют собой те, которые помечаются для ручной модерации из механизма автоматизации на основе ваших конкретных критериев.
Вот несколько примеров того, как изображения из конкретных классов классифицируются API REST.
Источник изображения | Источник изображения | Источник изображения |
---|---|---|
Результат классификации | Результат классификации | Результат классификации |
[{ "ClassName": "Нейтральный", «Вероятность»: 0,93821 }, { "ClassName": "Рисунок", «Вероятность»: 0,05473 }, { "ClassName": "Sexy", «Вероятность»: 0,00532 }, { "ClassName": "hentai", «Вероятность»: 0,00087 }, { "ClassName": "порно", «Вероятность»: 0,00085 }] | [{ "ClassName": "Sexy", «Вероятность»: 0,99394 }, { "ClassName": "Нейтральный", «Вероятность»: 0,00432 }, { "ClassName": "порно", «Вероятность»: 0,00164 }, { "ClassName": "Рисунок", «Вероятность»: 0,00006 }, { "ClassName": "hentai", «Вероятность»: 0,00001 }] | [{ "ClassName": "Рисунок", «Вероятность»: 0,96063 }, { "ClassName": "Нейтральный", «Вероятность»: 0,03902 }, { "ClassName": "hentai", «Вероятность»: 0,00032 }, { "ClassName": "Sexy", «Вероятность»: 0,00001 }, { "ClassName": "порно", «Вероятность»: 0,00005 }] |
Нейтральная демонстрация | Сексуальная демонстрация | Рисовать демонстрацию |
Эта служба построена в node.js с Mongo DB и Parse Server. Вы можете использовать его в стандартном приложении Express, но имейте в виду, что структура файла репо является специфической. Код организован в папке src
, а src/cloud/main.js
- корневой файл для службы. Реакция логики Vizualization проходит соответственно в папку scr/react
.
API REST работает с классификацией NSFW.JS, которая использует предварительно обученные модели TensorFlow. Учитывая URL, он возвращает прогнозы, насколько вероятно, что изображение попадает в каждый из классов - рисунок, нейтральный, сексуальный, порно и хентай. Более подробная информация о логике и использовании Stack вы можете найти в этом сообщении в блоге.
API предлагает два подхода для классификации изображений - из экспресс -маршрута или непосредственно из функции облачного кода, используя любой из SDK Parse или API Parse REST.
Классифицировать из экспресс -конечной точки
curl http://localhost:1337/api/image/classify?url=https://nsfw-demo.sashido.io/sexy.png
Классифицируйте из функции облачного кода nsfwimageclassify - пример API REST.
curl -X POST
-H "X-Parse-Application-Id: myAppId"
-H "X-Parse-REST-API-Key: myRestApiKey"
--data-urlencode "{"url":"https://nsfw-demo.sashido.io/sexy.png"}"
http://localhost:1337/functions/nsfwImageClassify
Цель механизма автоматизации состоит в том, чтобы проверить, как классификация определенного изображения соответствует параметрам, которые вы устанавливаете как безопасные для вашего проекта. Процесс автоматизируется с помощью послепродажного триггера сервера Parse.
Вначале важно определить, какие из пяти классов NSFW могут содержать токсичные изображения, а какие являются безопасными. Все классы, которые могут быть тревожными для вашей аудитории, должны быть включены в предпочтения умеренности.
Чтобы проиллюстрировать, что такое идея и настройка, давайте представим, что нам нужно установить критерии для приложения для знакомств взрослых. Как любое приложение для знакомств, пользователи имеют картинку профиля, и им разрешено загружать разные фотографии. Мы можем предположить, что тип фотографий должен быть в основном нейтральным ... и, возможно, некоторые сексуальные фото также будут разрешены. Таким образом, мы добавим все остальные классы в наши модерационные предпочтения. Что -то вроде:
{
"Sexy": { "min": 0.6, "max": 1 },
"Drawing": { "min": 0.5, "max": 0.8 },
"Porn": { "min": 0.4, "max": 0.8 },
"Hentai": { "min": 0.2, "max": 0.8 }
}
Двигатель автоматизации автоматически отказался от всех изображений, которые классифицируются выше max
ограничения, установленного в наших предпочтениях, и утверждать все, что ниже значения min
.
Более подробная информация о том, как точно настроить параметры для вашего проекта, вы можете найти в статье здесь.
Настройки модерации будут сохранены в параметра конфигурации модераций для производственного приложения, так как это позволит вам изменить их на лету, если это необходимо.
Послеподобный триггер подключен к коллекции, созданной пользователем, автоматически проверяет недавно загруженные фотографии и отмечает их как безопасные, удаленные или модерацию. Aftersafe содержит логику для соответствия, как классификация API изображения соответствует определенным предпочтениям модерации. Основываясь на всех переданных данных, принято решение, и результат сохраняется в вашей базе данных.
Чтобы сохранить аккуратную запись прогнозов API REST и результатов двигателя автоматизации, вам нужно будет добавить несколько столбцов в коллекцию баз данных, в которой содержится пользовательский контент .
Вы должны добавить следующие столбцы в пользовательский размер
min
ваших предпочтений умеренности, оно отмечено isSafe - true
.deleted - true
. Эти изображения не будут автоматически удалены из хранилища файлов.Поздравляет автоматически, но мы добавили дополнительную конечную точку API, если вам нужно проверить Munualy, если изображение является токсичным для вашей аудитории.
curl http://YOUR_PARSE_SERVER_URL/api/image/is_safe?url=https://nsfw-demo.sashido.io/sexy.png
Последний штрих-это простое приложение администратора на основе ReactJS. Он имеет простую функцию входа/входа в систему, и только утвержденные модераторы предоставляются доступ.
Изображения, которые отмечены механистом автоматизации как moderationRequired=true
отображаются в приложение. Мы позаботились о том, чтобы создать как настольный, так и мобильный пользовательский интерфейс, чтобы вы могли легко одобрить или отвергать изображения даже с вашего телефона во время путешествия.
Проверьте сами, играя с изображениями в нашей демонстрации!
Node.js> = 10.2.1
Mongo Db
Parse Server
Клонировать репо:
git clone https://github.com/SashiDo/content-moderation-application.git
cd content-moderation-application
Скопируйте env.example в файл .env и установите переменные среды для вашей локальной среды с вашим любимым редактором:
cp env.example .env
Поместите URL и файлы MongoDB URI и файлы. Если ваше приложение размещено в Sashido, вы можете использовать учетные данные вашего проекта Sashido. Вы можете найти все клавиши и URL -адреса на приборной панели приложения -> Настройки приложения.
Черт! Для загрузки изображений, которые требуют ручной модерации в приложение администратора локально, вам нужно будет поместить также фактическое APP_ID!
Поскольку это полнофункциональный пример, все зависимости присутствуют в Package.json. Вам нужно только запустить:
npm install
npm run dev
Установите следующий Parse.configs для вашего производственного сервера.
Объект ModerationsCores должен быть сохранен в качестве parse.config, поэтому предпочтения могут быть обновлены на лету.
Модератор вариант логического типа, который позволяет включать/отключить автоматизацию модерации контента.
Для производства вам необходимо установить URL -адрес модели NSFW , размер формы модели NSFW и переменная для автоматизации кэширования .
Модельный URL | Размер | Размер формы | Точность |
---|---|---|---|
https://ml.files-sashido.cloud/models/nsfw_inception_v3/ | Огромный | 299 | 93% |
https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/90/ | 2,6 МБ | 224 | 90% |
https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/93/ | 4,2 МБ | 224 | 93% |
Обратите внимание, что модель на основе stection_v3, используемая для этих проектов, имеет высокое потребление ОЗУ/ЦП. В то время как две модели Mobilenet гораздо более легкие.
TF_MODEL_URL = MODEL_URL
TF_MODEL_INPUT_SHAPE_SIZE = MODEL_SHAPE_SIZE
CONFIG_CACHE_MS = CONFIG_CAHE_IN_MILISECONDS
# Example
TF_MODEL_URL = " https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/93/ "
TF_MODEL_INPUT_SHAPE_SIZE = 224
CONFIG_CACHE_MS = 10000
Подключите свое приложение Sashido с GitHub, а затем код может быть легко развернут с двумя простыми командами для добавления удаленной ветви и нажимать изменения.
git remote add production [email protected]:parsegroundapps/<your-pg-app-your-app-repo>.git
git push -f production master
Спасибо, что посмотрели на этот раздел. Мы открыты для любых классных идей, поэтому, если они у вас есть и вы готовы поделиться - разделите репо, примените изменения и откройте запрос на тягу. :)
Copyright © 2020, Cloudstrap Ad. Смотрите лицензию для получения дополнительной информации.