社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python | 拯救鉴黄师

计算机与网络安全 • 8 年前 • 1211 次点击  

信息安全公益宣传,信息安全知识启蒙。

加微信群回复公众号:微信群QQ群16004488

加微信群或QQ群可免费索取:学习教程

教程列表见微信公众号底部菜单



曾经被无数人向往的神秘职业“专业鉴黄师”,已经要被人工智能替代了!


人工智能是怎么鉴黄的?


对于一张图像,我们可以广义地定义为3类:“正常”、“性感”、“色情”。因此,可以利用机器学习的方法来对训练集图像进行训练,将训练后的模型用于预测。


鉴黄师们每天面对着海量的数据进行判断分类,根据肤色裸露程度、姿势、肢体轮廓判断是否涉及色情元素。海量数据标注之后便是对机器的训练。其通常逻辑是:鉴黄师输入海量数据,将各类数据进行标签化训练,告诉机器,ABC是色情,DEF非色情,机器通过监督学习,提取ABCDEF的特征来判断G是不是色情。

据科技公司介绍,人工智能鉴黄有效节省了超过90%的人工复审工作,节省了大量成本。


在提高鉴黄的准确度上,目前还有采用的路径是深度卷积神经网络CNNs的多GPU并行框架,通过小样本目标的学习,快速准确地理解图像内容,并从图像中自动识别指定目标。网络直播平台可以进行内容自定义,对视频中静态和动态的物体、人物信息进行实时分析识别,最终综合处理视频中采集到的敏感信息,对视频中的场景进行事件分析,鉴定其涉黄与否。


当然这些技术使用方法都离不开Python,这是最重要的。

一、ASCII艺术

ASCII 的全称是 American Standard Code for Information Interchange,即美国信息交换标准码。是由军用电报编码发展而来,并成为最通用的现代计算机编码系统。


在显卡还不能摧毁航母战斗群的年代,计算机还主要用来计算导弹弹道和卫星轨道,其图形处理能力是非常弱的,甚至还不如今天高级一点的示波器。但这并不能阻止人类对美的追求,正如四万年前的莽荒也没有耽误拉斯科洞窟壁画的诞生。

拉斯科洞窟壁画


在我刚上网那阵(暴露年龄?),有个流传很广的帖子,是教你观看命令行里的《星球大战》,而这部星战正是由ASCII编码中的字符构成的,这被称作ASCII art。

这不大番薯和老夫子吗?


在斗图代替打字、点播变成直播甚至VR/AR的今天,图形的处理已经不再是瓶颈,反而成为了新的增长点。道高一尺魔高一丈,技术的进步也带来了有害信息,比如广大家长朋友们特别关注的色情信息。刚开始色情的鉴定是由人工完成的,李迪同志就是在《暴走大事件》中扮演鉴黄师唐马儒而一炮走红。


但是,基于人工智能的图像识别也在飞速进步,自动鉴黄已经投入实用,鉴黄师的职业前景就面临着严重的威胁!你想想,你在家里吃着火锅鉴着黄,突然间,工作都要丢了,这谁受得了。救救鉴黄师!


二、字符画


把一张照片转换为字符画,大致需要三步:


  • 将图片尺寸压缩到字符画所能接受的量级;

  • 彩色图转换为灰度图,灰度是一个0-255的数值;

  • 建立灰度值与字符集之间的映射关系。


早年间以上步骤还需要专门做一个小软件来完成,而现在只需要简单的代码就可以直接在浏览器中实现。

熟悉这个窗口边框的同学应该也不年轻了


因为字符画的本质是“字符”,可以用文本编辑器打开,对于计算机来说,他们和其他的字符没有任何区别,“画”的性质只是由人类的想象力后天赋予的。所以,如果你用字符画的形式传播春宫图,还是需要唐马儒。

小马听了美滋滋

三、Python扩展库


针对字符画生成的基础功能,Python已经内置了很多优秀的扩展库,可以在此基础上直接调用,而无需重复制造轮子。


  • 图库PIL(Python Imaging Library)基本的图像处理功能。

  • 网库urllib 获取网络资源,如下载网上的图片。

没有必要把0-255的灰度值一一对应为不同的字符,一般十几个也就足够了。这里做如下定义:

这里将最低的灰度段映射为' '(空格),也就是原图中空白或接近空白的部分,在字符画中也会会变成空白;而原图的黑点则变成@。


四、图片预处理


4K屏已经逐渐普及,现在差不多的电脑显示器也能支持2K分辨率,如果把每个像素点都变成一个字符,那出来的图片实在是太大了。


所以首先要对源图片进行压缩,再转换为灰度模式,即抛出色彩信息。

五、图片到字符

然后是建立图片(压缩后)像素点到字符集的映射关系。

最后综合前面几个函数,以文本形式输出字符画。

六、图源采集

接下来我们可以为所欲为将任意图片转换为字符画看看效果,为了充分发扬互联网精神,目前仅支持具有网络地址的图片(其实是图片上传系统还没做好)。


下面来看一个实例,将一张QQ企鹅的图标转换为字符画。

七、开放空间

上节的例子仍然保留了默认的字符集和默认图像宽度60,接下来的部分留给读者自由发挥,可以通过修改如下参数获得自己的字符画:


  • new_width:字符画的尺寸(宽的字符数)

  • ASCII_CHARS:字符集

  • image_url:网络图片地址,就是你想要转换的图片


操作示例:

当你在网上看到一张图片,右键-复制图片地址。



将图片地址赋值予变量image_url,点击运行即可。

替换相应变量

摘掉眼镜看效果更佳。

Sublime编辑器里的成像效果


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/zsGg25VJgj
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/7135