鉴黄师专用 Python 轮子之 PornDetective - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
slysly759
V2EX    Python

鉴黄师专用 Python 轮子之 PornDetective

  •  
  •   slysly759 2017-01-03 22:03:30 +08:00 9174 次点击
    这是一个创建于 3253 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    这两天跨年,就想将自己的 Python 组织和表达能力再提高一下,当然最好的方式自然是读大师的源码,我也就看到实验楼上面的那篇关于色情图片识别的文章,因此依葫芦画瓢才建了这个库。

    0x01 色情识别算法介绍

    检测色情或者说判定是否是色情的关键是通过皮肤的裸露程度判别,也就是说色情识别算法的核心就是识别皮肤。

    那么现今主要识别皮肤的是通过三个步骤:首先选择合适的颜色空间来表征图像像素;然后使用适当的皮肤模型来建模皮肤和非皮肤部分像素;最后依据此建模来分割出正确的皮肤部分。而识别皮肤的关键在于寻找到合适的像素区间,因为肤色 种族 光照 等等因素都会影响到皮肤的识别。

    从 2015 年的厦大陈丽一篇《一种融合方法的皮肤检测技术》上我们了解到 在图片预处理 降噪 resize 后 将二维直方图 高斯模型 动态阈值 三个处理模型进行混合的综合皮肤检测技术,能达到识别率 90+的程度,比其他三种模型高出一到五个百分点。

    那么实验楼这位作者是如何去识别一张图片的皮肤部分呢?

    • 皮肤确认的像素公式采用 stack 上的采用的是网上的 YCbcr 的公式 当然他也写了其他的公式,效果不如这个好
    • 确认为皮肤像素后进行归类。新发现的皮肤像素定位新的一块,如果皮肤像素周边有其他的像素就 merge 当然 我在测试的过程中,这个 merge 算法仍然可以优化,如果有小伙伴的话~
    • 归类后,判定是否为色情图片的 rules 他写了四条 当然这个判别不能和机器训练相比 但是已经比较准确了

    0x02 我在此基础上做了什么?

    • 完善 showskinorigin 方法,使其能够将被判定为皮肤的像素进行涂白 方便进行对比
    • 修改某些不是很 python 的方法,剔除单通道图片。
    • 新加入 LoadWay 文件,可以方便的扫描目录 图片 url 列表并检查是否为色情图片
    • 增加容错模块,单元测试后,打包然后共享给大家~

    0x03 未来将会准备做什么?

    • 根据论文的算法 在 python 上进行部分实现,方便优化算法
    • 修复多线程效率过低 占用内存过多的问题
    • 希望能够建立 server 返回 API

    试验效果图属不可描述范围~附上 Gayhub 地址~

    当然我不会说那个 HeiHeiHei 函数是干嘛的== 

    github 地址 ![]( http://www.songluyi.com/wp-content/uploads/2017/01/QQ 截图 20170103220111.png)

    36 条回复    2017-07-21 18:09:37 +08:00
    riaqn
        1
    riaqn  
       2017-01-03 22:31:27 +08:00   1
    只是识别皮肤裸露有问题吧? 那肚皮舞也变 porn 了。

    很明显需要更高端的算法。之前我看到有程序,能做到识别并且”标识敏感区域“(就是标识乳头和 XX )
    Yinz
        2
    Yinz  
       2017-01-03 22:40:06 +08:00   1
    总觉得人工硬编写识别逻辑的做法会被深度学习完全替代掉。。。
    run2
        3
    run2  
       2017-01-03 22:48:03 +08:00
    非洲同胞的皮肤能识别不-。-
    techmoe
        4
    techmoe  
       2017-01-03 22:56:15 +08:00 via Android
    同意一楼看法
    ericgui
        5
    ericgui  
       2017-01-03 22:58:14 +08:00
    你让微博上那些网红情何以堪?
    RqPS6rhmP3Nyn3Tm
        6
    RqPS6rhmP3Nyn3Tm  
       2017-01-03 23:00:14 +08:00 via iPhone
    反向使用,黄的留下?
    murmur
        7
    murmur  
       2017-01-03 23:00:31 +08:00
    还以为是自动上车
    ericgui
        8
    ericgui  
       2017-01-03 23:04:50 +08:00
    @Yinz 同意。
    ericgui
        9
    ericgui  
       2017-01-03 23:06:35 +08:00
    @BXIA
    @murmur 向老司机致敬
    Yinz
        10
    Yinz  
       2017-01-03 23:07:53 +08:00
    当然这个轮子出于学习目的还是很棒的!学习了:D
    Kilerd
        11
    Kilerd  
       2017-01-03 23:07:55 +08:00
    @Yinz 不是大型云商的话,哪来那么多训练集??

    又不是某某云。
    ihciah
        12
    ihciah  
       2017-01-03 23:26:36 +08:00
    Yahoo 似乎以前放出来过一个 porn-detect 的 network 和 model...
    Mac
        13
    Mac  
       2017-01-03 23:27:54 +08:00
    对鉴黄程序没兴趣,我只对他们的内容数据库敢兴趣
    guyskk
        14
    guyskk  
       2017-01-03 23:29:31 +08:00 via Android
    @BXIA PornDetective - find porn img easilly
    northisland
        15
    northisland  
       2017-01-03 23:30:45 +08:00
    弟弟 妹妹 咪咪的目标识别比较靠谱,
    roist
        16
    roist  
       2017-01-03 23:44:01 +08:00
    很常见的一个案例,一个穿泳装类的,站姿和蹲姿(你懂的那个姿势)的皮肤裸露程度有太大不同?但这两者是色情程度一个天上一个地下
    slysly759
        17
    slysly759  
    OP
       2017-01-03 23:53:48 +08:00 via Android
    @riaqn 我简单解释一下。
    1. 色情图片是分级别的 有皮肤暴露 卡通色情 成人色情 的区分 退一万步来说大数据分析得到所有三点特征匹配的也是成人色情。
    2. 皮肤算法不是说识别大块皮肤 或者加个权重就行,具体的识别多少区块 占比多少 像素值多少才能算 这个规则是通过样本采集来的。
    3. 判定的 rules 在程序中的确预先写好,后续将会加入训练模型, rules 是可以优化的。
    j5shi
        18
    j5shi  
       2017-01-03 23:56:00 +08:00 via iPhone
    建立 Server 用来返回 API 调用…于是 Server 上就会有看不完的 porn 照了…嘿嘿嘿
    slysly759
        19
    slysly759  
    OP
       2017-01-03 23:56:00 +08:00 via Android
    @roist 额 穿泳装蹲下你从哪里看啊喂→_→上面喵
    DoraJDJ
        20
    DoraJDJ  
       2017-01-04 00:26:32 +08:00 via Android
    @ihciah 然后有人利用这个玩意弄了个能够生成黄图的玩意
    lostvincent
        21
    lostvincent  
       2017-01-04 00:29:08 +08:00 via iPhone
    我感觉通过分析音频来鉴黄比较简单...
    SlipStupig
        22
    SlipStupig  
       2017-01-04 00:52:55 +08:00
    @lostvincent 色情图片,用音频识别,在下佩服佩服
    lostvincent
        23
    lostvincent  
       2017-01-04 01:03:07 +08:00 via iPhone
    @SlipStupig 就关注鉴黄没在意是图片了,尴尬(逃
    nbndco
        24
    nbndco  
       2017-01-04 07:25:35 +08:00 via iPhone
    基本上都是深度学习了,检测皮肤不靠谱的
    kankana
        25
    kankana  
       2017-01-04 07:53:23 +08:00 via iPhone
    试了腾讯万象,这东西还是得用深度学习,现有算法准确率没那么高
    EIlenZe
        26
    EIlenZe  
       2017-01-04 10:01:15 +08:00 via iPhone
    @DoraJDJ 233333333
    dobest
        27
    dobest  
       2017-01-04 10:23:01 +08:00
    一点看法:

    1. 基于像素+人工规则 的方法鲁棒性存在问题,像其他同学说的那样,深度学习更靠谱。
    2. 为什么不用 scikit-image 或 opencv 等基于 numpy 的库呢? 这样性能不是更好吗?
    3. 楼主的代码和 nude.py 的代码有些类似,但没看到说有参考 nude.py ,或者楼主是参考的实验楼该项目作者的代码?

    https://github.com/hhatto/nude.py/blob/master/nude.py
    https://github.com/songluyi/PornDetective/blob/master/porndetective/__init__.py
    slysly759
        28
    slysly759  
    OP
       2017-01-04 10:57:57 +08:00 via Android
    @dobest 的确借鉴他的,我也在文中说明了我改了那些 新加了那些东西。 看起来诸位都看好深度学习的| ω)我还是默默去看文献了⊙⊙
    dsphper
        29
    dsphper  
       2017-01-04 12:36:25 +08:00
    求原始训练集高清五码图片。
    iamnuomi
        30
    iamnuomi  
       2017-01-04 13:10:29 +08:00
    yahoo 的鉴黄开源项目在这里 https://github.com/yahoo/open_nsfw
    另外,还有人根据 yahoo 的模型反向制作了图片生成器,在这里: https://open_nsfw.gitlab.io/, 其中有大量算法生成的图片,怎么说呢,还是值得一看的

    anyway ,请大家搭配服用
    ericgui
        31
    ericgui  
       2017-01-04 13:23:28 +08:00
    其实微博上很多网红露太多了,都不穿衣服,但都利用手势或者其他姿势恰好遮住了三点,虽然也是几乎没遮住。。。这种情况啊,连微博管理员都不知道到底该删不该删。
    figofuture
        32
    figofuture  
       2017-01-04 15:41:49 +08:00
    mark
    winglight2016
        33
    winglight2016  
       2017-01-05 15:13:15 +08:00
    @lostvincent 正如前人所说:你叫那些直播网红怎么办啊?
    hjq98765
        34
    hjq98765  
       2017-01-06 11:55:19 +08:00
    胶衣丝袜控有福了→_→
    Pythonwanted001
        35
    Pythonwanted001  
       2017-01-12 16:28:57 +08:00
    大项目,有兴趣合作吗?可加 QQ 1005367713 私聊。
    saintatgod
        36
    saintatgod  
       2017-07-21 18:09:37 +08:00
    挖个坟,已经被机器学习甩掉几条街了。准确度太低
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2919 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 13:57 PVG 21:57 LAX 05:57 JFK 08:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86