当前位置:  开发笔记 > 编程语言 > 正文

以编程方式检测色情图片的最佳方法是什么?

如何解决《以编程方式检测色情图片的最佳方法是什么?》经验,为你挑选了9个好方法。

Akismet在检测垃圾评论方面做得非常出色.但是评论现在并不是垃圾邮件的唯一形式.如果我想像akismet这样的东西在社交网站上自动检测色情图片,允许用户上传他们的照片,头像等怎么办?

已经有一些基于图像的搜索引擎以及面部识别的东西可用,所以我假设它不是火箭科学,它可以做到.但是,我不清楚这些东西是如何工作的,如果我想从头开发它,我该如何处理它.

我应该如何开始?

是否有任何开源项目正在进行中?



1> SpliFF..:

这实际上相当容易.你可以以编程方式检测肤色 - 而色情图片往往会有很多皮肤.这将产生误报,但如果这是一个问题,您可以传递通过实际审核检测到的图像.这不仅大大减少了主持人的工作,而且还为你提供了大量的免费色情内容.这是双赢的.

#!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个.这是一个非常高的误报率,但剧本旨在相当谨慎,可以进一步调整.它适用于浅色,深色和亚洲肤色.

假阳性的主要弱点是沙子和木头等棕色物体,当然它不知道"顽皮"和"漂亮"肉体(如面部镜头)之间的区别.

假阴性的弱点是没有太多暴露肉体(如皮革束缚),涂漆或纹身皮肤,黑白图像等的图像.

源代码和示例图像


掠夺者:图像样本中没有实际的裸露.

2> Jeff Atwood..:

这是写于2000年,不确定色情检测的现状是否已经发展,但我对此表示怀疑.

http://www.dansdata.com/pornsweeper.htm

只要图片是彩色的,PORNsweeper似乎有能力区分人物照片和非人物照片.它在区分人们的脏图片和干净图片方面不太成功.

使用默认的中等灵敏度,如果人力资源在账户中发送新章的图片,那么你有大约50%的机会获得它.如果你的姐姐给你发了她六个月大的照片,那么同样可能会被拘留.

如果它们代表软件的行为,那么指出有趣的错误,例如调用蒙娜丽莎色情片,这是公平的.如果制造商承认他们的算法图像识别器会在15%的时间内丢球,那么当它确实是愚蠢的时候取笑它.

但PORNsweeper似乎只能在一个部门达到规定的规格 - 检测实际的色情内容.它在检测色情片方面还不错,但在检测干净的照片方面却很糟糕.如果在不久的将来在这个领域没有取得重大飞跃,我不会感到惊讶.



3> Konstantin T..:

我宁愿允许用户报告错误的图像.图像识别开发可能需要花费太多的精力和时间,并且不会像人眼一样精确.外包这种审核工作要便宜得多.

看看:亚马逊机械土耳其人

" Amazon Mechanical Turk(MTurk)是亚马逊网络服务套件之一,这是一个众包市场,使计算机程序能够协调人类智能的使用,以执行计算机无法完成的任务."


@Noon Silk为什么你觉得这是一种不道德的做法?
Amazon Mechanical Turk可能需要花钱.鉴于主题,您会认为有一个聪明的商业模式,您可以免费完成这项工作.
亚马逊机械土耳其风格的网站可能有一个市场,但专门研究这类主题的网站.... :)
@Ankur大声笑!很好的主意.前往nic.com查看PornOrNot.com是否仍然可用.

4> Brian Lyttle..:

用于成人图像分类和过滤的视觉词袋模型

以编程方式检测色情图片的最佳方式是什么?

色情检测/色情去除软件简介

检测色情数字图像(2011年!)



5> davidjnelson..:

繁荣!这是包含算法的白皮书.

有谁知道从哪里获得java(或任何语言)实现的源代码?

那会摇滚.

一种称为WISE的算法具有98%的准确率,但误报率为14%.所以你要做的就是让用户标记2%的漏报,理想情况是如果有一定数量的用户标记它就自动删除,并让版主查看14%的误报.



6> Abhinav Kaus..:

Nude.js基于De La Salle大学的Rigan Ap-apid 的白皮书.



7> Patrick Corn..:

有一种软件可以检测色情的概率,但这不是一门精确的科学,因为计算机无法识别图片上的实际内容(图片只是网格上的一大组值,没有任何意义).你可以通过举例来教电脑什么是色情片,什么不是.这样做的缺点是它只能识别这些或类似的图像.

鉴于色情的重复性,如果你训练系统的误报很少,你就有很好的机会.例如,如果您使用裸体人员训练系统,它可能会将"几乎"裸体人物的海滩图片标记为色情内容.

类似的软件是最近推出的facebook软件.它只专注于面孔.主要原则是一样的.

从技术上讲,你会实现某种利用贝叶斯过滤的特征检测器.如果特征检测器是简单的检测器,或者只是计算当前图像与一组保存的色情图像的相似度,则特征检测器可以寻找诸如肉色像素的百分比之类的特征.

这当然不仅限于色情片,它实际上更像是一个角落案例.我认为更常见的是试图在图像中找到其他东西的系统;-)


因此,解释用户提出的问题并不是一个有效的答案,即他试图实现的目标是不可能的?伙计,你可能会有点脱离...

8> Thomasz..:

答案非常简单:可以肯定地说,在接下来的二十年里,这是不可能的.在此之前,我们可能会得到很好的翻译工具.我最后一次检查时,AI人员正在努力在两张从略微改变的角度拍摄的照片上识别同一辆车.看看他们一起获得足够好的OCR或语音识别需要多长时间.这些是识别问题,可以从字典中受益匪浅,尽管有数百万人的月份,但仍然远没有完全可靠的解决方案.

话虽这么说你可以简单地添加一个"冒犯性的?" 链接在用户生成的竞争旁边,并有一个mod交叉检查传入的投诉.

编辑:

我忘记了一些事情:如果你要实现某种过滤器,你需要一个可靠的过滤器.如果你的解决方案是50%正确,4000个拥有体面图像的用户中的2000个将被阻止.期待愤怒.



9> 小智..:

2004年,台湾国立成功大学的一名研究生对这一课题进行了研究.他在检测从互联网上下载的裸照时,成功率达89.79%.以下是他的论文链接:基于肤色的裸体人物图像检测研究
中文因此,如果您无法阅读,您可能需要翻译.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有