Akismet在检测垃圾评论方面做得非常出色.但是评论现在并不是垃圾邮件的唯一形式.如果我想像akismet这样的东西在社交网站上自动检测色情图片,允许用户上传他们的照片,头像等怎么办?
已经有一些基于图像的搜索引擎以及面部识别的东西可用,所以我假设它不是火箭科学,它可以做到.但是,我不清楚这些东西是如何工作的,如果我想从头开发它,我该如何处理它.
我应该如何开始?
是否有任何开源项目正在进行中?
这实际上相当容易.你可以以编程方式检测肤色 - 而色情图片往往会有很多皮肤.这将产生误报,但如果这是一个问题,您可以传递通过实际审核检测到的图像.这不仅大大减少了主持人的工作,而且还为你提供了大量的免费色情内容.这是双赢的.
#!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个.这是一个非常高的误报率,但剧本旨在相当谨慎,可以进一步调整.它适用于浅色,深色和亚洲肤色.
假阳性的主要弱点是沙子和木头等棕色物体,当然它不知道"顽皮"和"漂亮"肉体(如面部镜头)之间的区别.
假阴性的弱点是没有太多暴露肉体(如皮革束缚),涂漆或纹身皮肤,黑白图像等的图像.
源代码和示例图像
这是写于2000年,不确定色情检测的现状是否已经发展,但我对此表示怀疑.
http://www.dansdata.com/pornsweeper.htm
只要图片是彩色的,PORNsweeper似乎有能力区分人物照片和非人物照片.它在区分人们的脏图片和干净图片方面不太成功.
使用默认的中等灵敏度,如果人力资源在账户中发送新章的图片,那么你有大约50%的机会获得它.如果你的姐姐给你发了她六个月大的照片,那么同样可能会被拘留.
如果它们代表软件的行为,那么指出有趣的错误,例如调用蒙娜丽莎色情片,这是公平的.如果制造商承认他们的算法图像识别器会在15%的时间内丢球,那么当它确实是愚蠢的时候取笑它.
但PORNsweeper似乎只能在一个部门达到规定的规格 - 检测实际的色情内容.它在检测色情片方面还不错,但在检测干净的照片方面却很糟糕.如果在不久的将来在这个领域没有取得重大飞跃,我不会感到惊讶.
我宁愿允许用户报告错误的图像.图像识别开发可能需要花费太多的精力和时间,并且不会像人眼一样精确.外包这种审核工作要便宜得多.
看看:亚马逊机械土耳其人
" Amazon Mechanical Turk(MTurk)是亚马逊网络服务套件之一,这是一个众包市场,使计算机程序能够协调人类智能的使用,以执行计算机无法完成的任务."
用于成人图像分类和过滤的视觉词袋模型
以编程方式检测色情图片的最佳方式是什么?
色情检测/色情去除软件简介
检测色情数字图像(2011年!)
繁荣!这是包含算法的白皮书.
有谁知道从哪里获得java(或任何语言)实现的源代码?
那会摇滚.
一种称为WISE的算法具有98%的准确率,但误报率为14%.所以你要做的就是让用户标记2%的漏报,理想情况是如果有一定数量的用户标记它就自动删除,并让版主查看14%的误报.
Nude.js基于De La Salle大学的Rigan Ap-apid 的白皮书.
有一种软件可以检测色情的概率,但这不是一门精确的科学,因为计算机无法识别图片上的实际内容(图片只是网格上的一大组值,没有任何意义).你可以通过举例来教电脑什么是色情片,什么不是.这样做的缺点是它只能识别这些或类似的图像.
鉴于色情的重复性,如果你训练系统的误报很少,你就有很好的机会.例如,如果您使用裸体人员训练系统,它可能会将"几乎"裸体人物的海滩图片标记为色情内容.
类似的软件是最近推出的facebook软件.它只专注于面孔.主要原则是一样的.
从技术上讲,你会实现某种利用贝叶斯过滤的特征检测器.如果特征检测器是简单的检测器,或者只是计算当前图像与一组保存的色情图像的相似度,则特征检测器可以寻找诸如肉色像素的百分比之类的特征.
这当然不仅限于色情片,它实际上更像是一个角落案例.我认为更常见的是试图在图像中找到其他东西的系统;-)
答案非常简单:可以肯定地说,在接下来的二十年里,这是不可能的.在此之前,我们可能会得到很好的翻译工具.我最后一次检查时,AI人员正在努力在两张从略微改变的角度拍摄的照片上识别同一辆车.看看他们一起获得足够好的OCR或语音识别需要多长时间.这些是识别问题,可以从字典中受益匪浅,尽管有数百万人的月份,但仍然远没有完全可靠的解决方案.
话虽这么说你可以简单地添加一个"冒犯性的?" 链接在用户生成的竞争旁边,并有一个mod交叉检查传入的投诉.
编辑:
我忘记了一些事情:如果你要实现某种过滤器,你需要一个可靠的过滤器.如果你的解决方案是50%正确,4000个拥有体面图像的用户中的2000个将被阻止.期待愤怒.
2004年,台湾国立成功大学的一名研究生对这一课题进行了研究.他在检测从互联网上下载的裸照时,成功率达89.79%.以下是他的论文链接:基于肤色的裸体人物图像检测研究
中文因此,如果您无法阅读,您可能需要翻译.