本文是基于ubuntu14.04+tensorflow1.6(cpu)+python3.6+anaconda
简介
yahoo开源了用于检测图片是否包含不适宜工作场所(NSFW)内容的深度神经网络项目https://github.com/yahoo/open_nsfw,GitHub 库中包含了网络的 Caffe 模型的代码。检测具有攻击性或成人内容的图像是研究人员进行了几十年的一个难题。随着计算机视觉技术和深度学习的发展,算法已经成熟,雅虎的这个模型能以更高的精度分辨色情图像。 由于 NSFW 界定其实是很主观的,有的人反感的东西可能其他人并不觉得如何。雅虎的这个深度神经网络只关注NSFW内容的一种类型,即色情图片。 实质上是利用了CNN的一些图像分类模型ResNet来实现二分类问题(色情与否)。
安装必要的库
anaconda安装和tensorflow1.6+python3.6版本见前文
https://duhuazhen.github.io/2016/01/29/object-detection/
激活环境(我的tensorflow1.6+python3.6环境在tensorflow环境下)
source activate tensorflow
- scipy
conda install scipy
- numpy
conda install numpy
- scikit-image
conda install scikit-image
下载源码
git clone https://github.com/mdietrichstein/tensorflow-open_nsfw
用法
python classify_nsfw.py -m data/open_nsfw-weights.npy test.jpg
下面我们通过几组照片来测试,结果中的SFW表示适合在公共场合查看的概率,NSFW表示不适合在公共场合查看的概率:
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
Results for 'test4.jpg'
SFW score: 0.08396992832422256
NSFW score: 0.9160301089286804
Results for 'test1.jpg'
SFW score: 0.554294228553772
NSFW score: 0.44570574164390564
Results for 'test2.jpg'
SFW score: 0.9743315577507019
NSFW score: 0.025668391957879066
用了一张较为裸漏的照片,结果如下
Results for 'test6.jpg'
SFW score: 0.004062295891344547
NSFW score: 0.995937705039978
总体来说还是较为准确的。
参考
https://yahooeng.tumblr.com/post/151148689421/open-sourcing-a-deep-learning-solution-for
https://github.com/yahoo/open_nsfw
https://github.com/mdietrichstein/tensorflow-open_nsfw