现实是,全世界大约有45.4亿个互联网用户(2020年6月)产生了空前的内容,只会增加寻找优化内容适度方法的方法的冲动。由于活跃用户数量不断浸泡,内容量也成倍增长,机器学习和人工智能可能非常昂贵,并且手动适度的时间非常耗时,并且时间延迟。
因此,现在我们正处于任何允许用户生成内容的平台面临类似问题。幸运的是,机器学习已经成熟到计算机处理能力,存储,数据工具,网络等的进步,使机器学习技术变得越来越负担得起。这是为创新而持续不断的努力,带领Sashido的团队创建了仅使用开源工具和库构建的简单,优雅的完整内容审核服务。它由三个主要组件 - 图像分类REST API,自动化引擎和管理面板组成,它们可以单独集成或将其完全集成到任何Parse Server Node.js项目中并在任何地方托管。
简单地对我们的桌面和移动友好的管理面板进行了简单的插图。在这里检查完整的演示。
根据您的特定标准,在Admin应用程序中显示的供批准的图像是从自动化引擎中标记为手动调节的图像。
以下是一些示例,说明了如何通过REST API对特定类别的图片进行分类。
图像源 | 图像源 | 图像源 |
---|---|---|
分类结果 | 分类结果 | 分类结果 |
[{{ “ className”:“中立”, “概率”:0.93821 },{ “ className”:“绘图”, “概率”:0.05473 },{ “ classname”:“性感”, “概率”:0.00532 },{ “ className”:“无尽”, “概率”:0.00087 },{ “ classname”:“色情”, “概率”:0.00085 ]] | [{{ “ classname”:“性感”, “概率”:0.99394 },{ “ className”:“中立”, “概率”:0.00432 },{ “ classname”:“色情”, “概率”:0.00164 },{ “ className”:“绘图”, “概率”:0.00006 },{ “ className”:“无尽”, “概率”:0.00001 ]] | [{{ “ className”:“绘图”, “概率”:0.96063 },{ “ className”:“中立”, “概率”:0.03902 },{ “ className”:“无尽”, “概率”:0.00032 },{ “ classname”:“性感”, “概率”:0.00001 },{ “ classname”:“色情”, “概率”:0.00005 ]] |
中性演示 | 性感演示 | 绘画演示 |
此服务是用Mongo DB和Parse Server构建的。您可以在标准Express应用程序中使用它,但请记住,存储库的文件结构是特定于解析的。该代码是在src
文件夹中组织的, src/cloud/main.js
是服务的根文件。 React Vizalization逻辑分别将其放置在scr/react
文件夹中。
REST API与NSFW.JS分类一起使用,该分类使用TensorFlow预训练的模型。给定URL,它返回预测图像进入每个类的可能性 - 绘画,中性,性感,色情和无尽。您可以在此博客文章中找到有关背后逻辑和堆栈的更多详细信息。
API提供了两种用于分类图像的方法 - 使用任何Parse SDK或Parse REST API直接从明确路由或直接从云代码函数进行分类。
从快递端点分类
curl http://localhost:1337/api/image/classify?url=https://nsfw-demo.sashido.io/sexy.png
从nsfwimageclalsify云代码函数 - REST API示例进行分类。
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 Server AfterSave Trigger自动化的。
一开始,必须定义五个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
的图像。
有关如何在此处的文章中找到项目的参数的更多详细信息。
适度的首选项将被保存到Production应用程序中的MedererationsCores配置参数中,因为这将使您在需要时可以随时修改它们。
将后悬挂触发器挂钩到用户生成的收藏集中,会自动检查新上传的照片,并将其标记为安全,删除或进行调节。 AfterSAFE包含用于匹配图像的API分类与定义的适度偏好相对应的逻辑。根据所有传递的数据,做出了决定,结果将保存到您的数据库中。
为了保留REST API预测和自动化引擎结果的整洁记录,您将需要在数据库集合中添加一些列,以持有用户生成的内容。
您应该将以下列添加到用户imagecollection
min
,则标记为isSafe - true
。deleted - true
不适当图片。这些图片不会自动从文件存储中删除。save自动发射后,但是我们添加了一个额外的API端点,以防您需要检查手动是否对观众有毒。
curl http://YOUR_PARSE_SERVER_URL/api/image/is_safe?url=https://nsfw-demo.sashido.io/sexy.png
最后的触摸是基于ReactJS的简单admin应用程序。它具有简单的登录/注销功能,仅授予批准的主持人访问。
自动化引擎将其标记为moderationRequired=true
图片显示在应用程序中。我们确保同时构建台式机和移动友好的用户界面,因此您可以在旅行时轻松地批准或拒绝图像。
自己测试我们的演示中的图像!
node.js> = 10.2.1
Mongo DB
解析服务器
克隆回购:
git clone https://github.com/SashiDo/content-moderation-application.git
cd content-moderation-application
将env.example复制到.env文件,并使用您喜欢的编辑器为您的本地环境设置环境变量:
cp env.example .env
放置您的mongodb uri并归档URL。如果您的应用程序托管在Sashido,则可以使用Sashido项目的凭据。您可以在App的仪表板 - >应用程序设置上找到所有键和URL。
NB!要加载需要手动审核的图像在当地的管理应用程序中,您还需要放置实际的app_id!
由于这是一个功能齐全的示例,因此包含所有依赖关系。您只需要运行:
npm install
npm run dev
为您的生产服务器设置以下parse.configs。
适中对象应作为parse.config保存,因此可以随时更新首选项。
布尔类型的MederationAutomation选项,该选项允许启用/禁用内容审核自动化。
对于生产,您需要设置NSFW模型URL , 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 MB | 224 | 90% |
https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/93/ | 4.2 MB | 224 | 93% |
请注意,用于此项目的Inception_V3模型具有较高的RAM/CPU消耗量。尽管这两个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
感谢您查看此部分。我们对任何很酷的想法都开放,因此,如果您有一个愿意并愿意分享 - 分叉存储库,应用更改并打开拉动请求。 :)
版权所有©2020,Cloudstrap AD。有关更多详细信息,请参见许可证。