使用open_nsfw鉴别色情图片(基于tensorflow)

一、背景

nsfw指“Not Suitable For Work”,就是含蓄的表达不宜浏览的内容。最近需要做一小部分关于色情图片识别的工作,就把最基础的工作内容记录下来。

二、现有方法

用于鉴别色情图片的现有方法基本有3种思路:

  1. 利用python的nonude模块直接识别
    这个思路是我看一篇博客中的介绍:用 Python 鉴别色色的图片。这篇博客介绍的还是很详细的,这个模块的原理是根据计算暴露皮肤的百分比来判断的,超过15%就认为是。实现过程简单,直接导入模块就能使用,但是该模块已经有3年没有更新过了,识别结果只有“真”“假”两种情况,准确率比较低。

  2. 统计人体皮肤的面积占比
    这种方法的思路就是找出皮肤区域,然后通过一定的统计特征,判断是否为色情图片。原作者给出了不同色彩空间下的皮肤判断公式,包括RGB,HSV,YCbCr三种空间。这种方法的参数可以自行调整,看了下,作者给出的效果还不错,但是结果也是只能判断出真假两种情况。

  3. 利用yahoo提供的open_nsfw模型及其拓展模型识别
    yahoo提供了一个open_nsfw开源程序,链接:http://github.com/yahoo/open_nsfw,这个程序是用深度学习模型做的,主要是vgg,我没有深究里面的模型结构,看了下效果,对图片采用打分的方式,分数大于0.8就说明很有可能是了。目前来说,这个模型的效果和可移植性都非常高,因此我主要考虑这种方法。

当然,yahoo公布的这个模型是2年前做的了,到现在为止,已有很多人对此进行了拓展衍生。

三、利用yahoo的open_nsfw识别色情图片(基于tensorflow)

上面也提到了yahoo这个开源程序的问题,就是版本不对应。于是我就找基于tensorflow的模型,还好找到了。附上链接:https://github.com/mdietrichstein/tensorflow-open_nsfw
https://gitee.com/zhangshengfu/NSFW-Python.git
使用第二个程序:
测试可以直接使用,下面直接上测试结果:
在这里插入图片描述
结果为:
Python–>>result:[0.43040982 0.5695902 ],path:D:/PythonProject/NSFW-Python/testImages\timg.jfif
使用tf模型,适宜观看指数0.43,不适宜观看指数0.57
TFLite–>>result:[0.64222586 0.3577741 ],path:D:/PythonProject/NSFW-Python/testImages\timg.jfif
使用TFLITE模型,适宜观看指数0.64,不适宜观看指数0.35

四、分析

  1. 目前来看,只是识别是否色情图片这方面,已经做的挺好的了,但是个人感觉如果想提高识别效果,一方面需要人体关键点检测,另一方面,一些人体动作和眼神,表情识别也有助于做进一步的判断。

  2. 如果想要自己重头训练的话,github上倒是有一些开源数据集。。。。。。。。先给出两个链接地址:
    https://github.com/EBazarov/nsfw_data_source_urls
    https://github.com/alexkimxyz/nsfw_data_scraper

(目前)前者总计159种不同类别的色情图片,约158万张图片链接,后者总计6类,约22万张。可以考虑自己写脚本把这些图片爬出来。需要注意的就是很多图片的链接是来自reddit,tumblr的,需要翻墙。
04630835/article/details/87178385

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值