Akismet在检测垃圾邮件评论方面做得非常出色。但是,评论并不是当今垃圾邮件的唯一形式。如果我想要akismet这样的工具来自动检测社交网站上允许用户上传其照片,头像等的色情图片怎么办?
已经有一些基于图像的搜索引擎以及面部识别功能可用,因此我认为这不是火箭科学,可以做到。但是,我不知道这些东西是如何工作的,如果我想从头开始开发它,该如何处理。
我应该如何开始?
有没有正在进行的开源项目?
Akismet在检测垃圾邮件评论方面做得非常出色。但是,评论并不是当今垃圾邮件的唯一形式。如果我想要akismet这样的工具来自动检测社交网站上允许用户上传其照片,头像等的色情图片怎么办?
已经有一些基于图像的搜索引擎以及面部识别功能可用,因此我认为这不是火箭科学,可以做到。但是,我不知道这些东西是如何工作的,如果我想从头开始开发它,该如何处理。
我应该如何开始?
有没有正在进行的开源项目?
Answers:
这是在2000年撰写的,尚不确定色情侦探的最新状态是否已经提高,但是我对此表示怀疑。
http://www.dansdata.com/pornsweeper.htm
只要图片是彩色的,PORNsweeper似乎就具有区分人的图片和非人的图片的能力。区分人的脏照片和干净的照片不太成功。
使用默认的中等敏感度,如果人力资源部发送了帐户中新员工的照片,则您有大约50%的机会得到它。如果您的妹妹给您发送了她六个月大的照片,则同样有可能被拘留。
指出一些有趣的错误(例如称蒙娜丽莎色情片)是合理的,只要它们代表了软件的行为即可。如果制造商承认他们的算法图像识别器会在15%的时间内掉球,那么当它确实很愚蠢时,就去取笑吧。
但是,PORNsweeper似乎只在一个部门符合其规定的规格-检测实际的色情内容。在检测色情内容方面做得还算不错,但在检测干净图片方面却很糟糕。如果在不久的将来该领域没有取得重大进展,我也不会感到惊讶。
这实际上相当容易。您可以通过编程方式检测肤色-色情图片往往有很多皮肤。这会产生误报,但是如果出现问题,您可以通过实际审核来传递检测到的图像。这不仅大大减少了版主的工作量,还为您提供了许多免费的色情内容。这是双赢的。
#!python
import os, glob
from PIL import Image
def get_skin_ratio(im):
im = im.crop((int(im.size[0]*0.2), int(im.size[1]*0.2), im.size[0]-int(im.size[0]*0.2), im.size[1]-int(im.size[1]*0.2)))
skin = sum([count for count, rgb in im.getcolors(im.size[0]*im.size[1]) if rgb[0]>60 and rgb[1]<(rgb[0]*0.85) and rgb[2]<(rgb[0]*0.7) and rgb[1]>(rgb[0]*0.4) and rgb[2]>(rgb[0]*0.2)])
return float(skin)/float(im.size[0]*im.size[1])
for image_dir in ('porn','clean'):
for image_file in glob.glob(os.path.join(image_dir,"*.jpg")):
skin_percent = get_skin_ratio(Image.open(image_file)) * 100
if skin_percent>30:
print "PORN {0} has {1:.0f}% skin".format(image_file, skin_percent)
else:
print "CLEAN {0} has {1:.0f}% skin".format(image_file, skin_percent)
此代码测量图像中心的肤色。我已经测试了20张相对温和的“色情”图像和20张完全无辜的图像。它标记100%的“色情”和20张清晰图像中的4张。这是一个相当高的误报率,但该脚本的目的是非常谨慎,可以进一步调整。它适用于浅色,深色和亚洲肤色。
误报的主要缺点是棕色物体,例如沙子和木头,当然,它不知道“调皮的”和“漂亮的”肉(例如面部镜头)之间的区别。
带有虚假负片的虚弱之处是图像上没有太多裸露的肤色(例如皮革束缚),涂有油漆或纹身的皮肤,黑白图像等。
我宁愿允许用户报告不良图像。图像识别开发可能会花费过多的精力和时间,并且不会像人眼那样精确。外包适度的工作要便宜得多。
“ Amazon Mechanical Turk(MTurk)是Amazon Web Services套件之一,这是一个众包市场,它使计算机程序能够协调使用人工智能来执行计算机无法执行的任务。”
繁荣!这是包含算法的白皮书。
有谁知道从哪里获取Java(或任何语言)实现的源代码?
那会摇滚。
一种称为WISE的算法具有98%的准确率,但14%的误报率。因此,您要做的就是让用户标记2%的误报,理想情况下,如果有一定数量的用户标记它,则自动删除,并让主持人查看14%的误报。
有一些软件可以检测出色情的可能性,但这并不是一门精确的科学,因为计算机无法识别图片上的实际内容(图片只是网格上的一大堆值,没有任何意义)。您可以通过举例来告诉计算机什么是色情,什么不是色情。这样做的缺点是只能识别这些或相似的图像。
鉴于色情片具有重复性,如果您以很少的误报来训练系统,则您就有很大的机会。例如,如果您用裸人训练系统,则可能会将“几乎”裸人的海滩图片也标记为色情。
类似的软件是最近推出的facebook软件。它只是专门用于脸上。主要原理是相同的。
从技术上讲,您将实现某种利用贝叶斯过滤的特征检测器。如果特征检测器是简单检测器,或者仅计算当前图像与一组保存的色情图像的相似度,则特征检测器可能会寻找诸如肤色像素百分比的特征。
当然,这不仅限于色情,实际上更是一个极端案例。我认为尝试在图像中查找其他事物的系统更为常见;-)
答案确实很简单:可以肯定地说,在未来二十年内将不可能。在此之前,我们可能会获得良好的翻译工具。我上次检查时,人工智能人员正在努力从角度稍有变化的两张照片中识别同一辆汽车。看一看他们花了多长时间才能获得足够的OCR或语音识别。这些是识别问题,可以从字典中受益匪浅,尽管要花费数百万的工时,但仍远远没有完全可靠的解决方案。
话虽如此,您可以简单地添加“进攻性”?用户生成的竞争旁边的链接,并让mod交叉检查收到的投诉。
编辑:
我忘记了一些东西:如果要实现某种过滤器,则需要一个可靠的过滤器。如果您的解决方案正确率达到50%,则4000名拥有体面图像的用户中有2000名将被阻止。期待愤怒。
台湾国立成功大学的一名研究生于2004年对此问题进行了研究。在检测从Internet下载的裸照方面,他获得了89.79%的成功率。这是他论文的链接:基于肤色的裸体人物图像检测研究
是中文的,因此您可能需要翻译器,以防无法阅读。
简短的答案:使用主持人;)
长答案:我不认为有一个项目可以解决这个问题,什么是色情?仅腿,全裸,侏儒等。其主观。
添加令人反感的链接并存储有问题的图片的md5(或其他哈希值),以便将来可以对其进行自动标记。
如果有人拥有一个大型的图像md5公共数据库以及作为Web服务运行的描述性标签,那会有多酷?很多色情片不是原创作品(因为现在拥有这种色情片的人可能还没有制作出来),而且流行的图片往往在不同的地方漂浮,所以这确实可以有所作为。
检测色情图像仍然是一项确定的AI任务,这在理论上还非常多。
通过添加按钮/链接“报告垃圾邮件/滥用行为”来收集集体力量和人类智慧。或雇用几个主持人来完成这项工作。
PS真的感到惊讶的是,假设软件和算法是万能的,甚至没有考虑他们是否想要完成,有多少人提出问题。他们是不了解硬件,底层编程以及所有“魔术”的新一代程序员的代表吗?
PS#2。我还记得,有时会发生某些情况,当人们自己无法确定照片是色情的还是艺术品时,会被带到法院。即使在法院裁定之后,仍有一半的人会认为该判决是错误的。这种情况的最后一个愚蠢的情况是在最近,因为CD封面图像带有一些裸露内容,因此在英国禁止了Wikipedia页面。
该BrightCloud Web服务API是为这个完美的。这是一个REST API,用于像这样进行网站查找。它包含一个非常大且非常准确的Web过滤数据库,并且其中一个类别(成人)已识别出超过1000万个色情网站!
我听说过使用非常简单但非常有效的算法的工具。该算法计算了具有接近某些预定义“肤色”颜色的颜色值的像素的相对数量。如果该数量高于某个预定义值,则认为图像具有色情/色情内容。当然,对于特写的面部照片和许多其他事情,该算法会给出假阳性结果。
由于您正在撰写有关社交网络的文章,因此会有很多带有大量肤色的“正常”照片,因此您不应该使用此算法来拒绝所有具有正面结果的照片。但是您可以使用它为版主提供一些帮助,例如以较高的优先级标记这些图片,
这个看起来很有希望。基本上,它们检测皮肤(通过识别面部进行校准)并确定“皮肤路径”(即,测量皮肤像素与面部皮肤像素/皮肤像素的比例)。这具有不错的性能。 http://www.prip.tuwien.ac.at/people/julian/skin-detection
今天,我将不再尝试进一步定义我所理解的简写形式的内容。也许我永远无法成功地做到这一点。但是我一看到它就知道了,这种情况下涉及的电影并非如此。
这不是火箭科学。不再。这与人脸识别非常相似。我认为最简单的处理方法是使用机器学习。并且由于我们正在处理图像,因此我可以指向神经元网络,因为这些似乎是图像的首选。您将需要训练数据。您可以在Internet上找到大量的训练数据,但是必须将图像裁剪为算法要检测的特定部分。当然,您必须将问题分解为要检测的不同身体部位,并为每个部位创建训练数据,这就是事情变得有趣的地方。
就像上面的人所说的那样,它不可能100%完成。在某些情况下,此类算法会失败。实际精度将由您的训练数据,神经网络的结构以及如何选择将训练数据(阴茎,阴道,乳房等以及它们的组合)聚类来确定。在任何情况下,我都非常有信心可以针对色情色情图像实现高精度。
这是一个裸体检测器。我还没试过 这是我唯一能找到的OSS。