如何以编程方式识别成人内容?

我目前正在为客户开发一个网站。它包括用户能够上传要在网站上的图库中显示的图片。

我们遇到的问题是,当用户上传图像时,显然需要对其进行验证,以确保它对网站是安全的(没有色情或露骨的图片)。但是,我的客户不希望手动接受正在上传的每个图像,因为这将非常耗时,并且用户的图像不会立即在线。

我正在用PHP编写代码。如果需要,我可以更改为 ASP.net 或C#。有什么办法可以做到这一点吗?


答案 1

2019年更新

自2013年这个原始答案以来,很多事情都发生了变化,主要是机器学习。现在有许多库和 API 可用于以编程方式检测成人内容:

Google Cloud Vision API,它使用与Google用于安全搜索的相同模型。

NSFWJS使用TensorFlow.js声称可以达到约90%的准确率,并且在MIT许可下是开源的。

雅虎有一个名为Open NSFW的解决方案,根据BSD 2条款许可证。

2013年回答

有一个名为nude的JavaScript库.js就是为了这个,尽管我从未使用它。这是使用它的演示

还有PORNSweeper

另一种选择是使用像Amazon Mechanical Turk这样的东西“外包”审核工作,这是一个众包平台,“使计算机程序能够协调人类智能的使用,以执行计算机无法完成的任务”。因此,您基本上会为每个审核项目支付少量费用,并有一个外包的实际人员为您审核内容。

我能想到的唯一另一个解决方案是使图像用户审核,用户可以标记不适当的帖子/图像进行审核,如果没有人想要手动审核它们,则可以在一定数量的标志后简单地将其删除。

以下是有关该主题的其他一些有趣链接:


答案 2

下面的示例不能为您提供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>';

推荐