《Tensorflow初级教程》
项目源码位置

效果展示

先看下效果:
这里通过网页上传图片,服务器接收到图片后保存到本地,再将图片路径传给Tensorflow服务,Tensorflow服务进行图片打分,再将分值返回到网页。

上传图片

在电脑本地选择您的图片,目前不支持网页链接。如图(1),选择了一个本地文件,点击“submit”按钮即可。
图片(1)

给图片打分

Tensorflow服务将评分返回给网页,网页进行显示。
图片(2)

目前Tensorflow模型里只有4个分类,分别是sexy(性感)、porn(真人淫秽)、hentai(卡通淫秽)、neutral(中性事物)、drawing(手绘漫画)
这个图片sexy打分达到了82.74%很明显属于性感类的图片了。其他的图片大家可以在服务搭建起来后自行测试。

开发情景

这个模型通过 https://github.com/alexkimxyz/nsfw_data_scraper 这个开源项目里的图片训练而成,训练后的模型放到了inception_model目录中,大家可以直接拿来使用。训练过程略过吧,要是讲的话就太多了。

项目使用说明

项目里的三个重要文件

TornadoServer.py

这个是python的Tornado服务器,用于搭建服务器。

TFServer.py

这个是Tensorflow服务,用于对图片打分。

UploadFile.html

这个就是网站首页了。如图(1)所示。

运行方式

第一步,需要将Tensorflow服务运行起来,执行TFServer.py这个文件。
第二步,启动Web服务器,执行TornadoServer.py这个文件。
第三步,在浏览器中打开http://127.0.0.1:8888/file这个地址,就是图片(1)显示的内容了。

上传图片的存储

当用户上传图片后,TornadoServer会将图片存在本地,不同的IP地址放在不同的文件夹中,文件以上传的时间点重新命名。

如图可见,192.168.10.19这个IP上传了多张图片,图片的名称按照时间点重新进行了命名。

代码讲解

TornadoServer

  def post(self):# 文件的暂存路径upload_path = os.path.join(os.path.dirname(__file__) + '/static', str(self.request.remote_ip))if(os.path.exists(upload_path) == False):os.makedirs(upload_path)file_metas = self.request.files['file']    #提取表单中‘name’为‘file’的文件元数据fileData = file_metas[0]fileName = fileData['filename']arr = os.path.splitext(fileName)extFileName = arr[len(arr) - 1]fileType = fileData['content_type']print(fileName)print(fileType)#这里判断图片是否为jpeg格式的文件,将其他格式的图片进行了过滤。if (operator.eq(fileType, 'image/jpeg') == False):self.write('请上传JPEG格式的图片!')returnelse:fileNameTime = self.getFileName()fileName = fileNameTime + extFileNamefileFullName = os.path.join(upload_path, fileName)#将用户上传的图片进行本地化存储。with open(fileFullName, 'wb') as up:up.write(fileData['body'])#self.write('finished!')#通过socket管道将图片路径传给Tensorflow服务器client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)client.connect("/tmp/tfserver.sock")client.send(bytes(fileFullName, 'utf-8'))#接收Tensorflow服务的打分数据resultbyte = client.recv(1024)resultStr = str(resultbyte, encoding="utf-8")n = fileFullName.find(staticFilePath)imagePath = fileFullName[n:]#将图片源文件和打分数据同时进行显示。htmlSource = '<!DOCTYPE html> ' \+ '<head> <meta charset="UTF-8"> </head> ' \+ '<body> ' \+ '<p> ' +  resultStr  + '</p>' \+ '<img src="' + imagePath + '"/>' \+ '</body>' \+ '</html>'print(htmlSource)self.write(htmlSource)return

TFServer

with tf.Session() as sess:softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')while True:#这里等待接收用户的图片信息。connection, address = TFServer.accept()rec = connection.recv(1024)picPath = str(rec, encoding="utf-8")print (picPath)image_data = tf.gfile.GFile(picPath, 'rb').read()predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': image_data})predictions = np.squeeze(predictions)top_k = predictions.argsort()[::-1]result = ''for node_id in top_k:human_string = id_to_string(node_id)score = predictions[node_id]buf = ('%s (score = %.2f%%) \n' % (human_string, score*100))result = result + bufprint(result)#将打分结果返回给提交打分申请的客户端connection.send(bytes(result, 'utf-8'))connection.close()

这里是部分的代码讲解。如果有那些问题,欢迎给我留言。

Tensorflow图片鉴黄 完整项目相关推荐

  1. Tensorflow直播视频流鉴黄 完整项目

    <Tensorflow初级教程> 项目源码位置 效果展示 这是一个GIF图片,图片较大,请耐心等待. 黄色字体显示的是sexy类别的,蓝色.绿色代表视频没有问题,红色代表色情,表示视频有问 ...

  2. 一个永久免费的图片鉴黄api接口

    相关说明 本项目是一个图片鉴黄api接口,支持jpg.png.jpeg格式文件,参考nsfwjs. 本接口为公益项目,永久免费,请勿乱攻击,本人会长期维护,使其少出问题,放心使用. 项目地址:http ...

  3. Java七牛云图片鉴黄

    官方文档:https://portal.qiniu.com/dora/thirdparty/create/nrop/document 代码实现 工具类 import com.alibaba.fastj ...

  4. 图片鉴黄大赛上线,请开始你的表演

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转自实时奖金竞赛社区FlyAI. 随着互联网的发展,内容安全已成为互联网不得不面临的严峻挑战. 互动社区的崛起,网友素质的参差不齐等原因使解决内容安 ...

  5. Python3 - Docker部署caffe open_nsfw 图片鉴黄

    文章目录 1. Docker部署caffe 检测caffe是否安装成功 2. 下载open_nsfw 3. 运行caffe 4. 运行鉴黄图片 本篇博文重点介绍 Centos:6.9 Docker部署 ...

  6. 移动端图片鉴黄(可离线识别 200ms)

    open_nsfw_android (可离线识别) 原文链接 (喜欢请记得Star) 色情图片离线识别,基于TensorFlow实现.识别只需200ms,可断网测试,成功率99%,调用只要一行代码,从 ...

  7. php oss图片鉴黄,Chevereto 调用百度图像审核 鉴黄

    October十月大佬: 看到论坛挺多人需求这个功能 就顺带研究了一下 之前有过类似经验 写起来挺快的 首先 有个百度账号(废话--) 登录百度AI控制台 https://console.bce.ba ...

  8. python图片鉴黄_鉴黄师专用 Python 轮子之 PornDetective

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

  9. 图像鉴黄的数据集及相关算法汇总

    前方高能预警,非战斗人士请火速撤离-- 数据集1:https://github.com/EBazarov/nsfw_data_source_urls/tree/master/raw_data 在 ra ...

最新文章

  1. Handler消息机制(六):Looper.loop()为什么不会阻塞主线程?
  2. php配置默认index.php,Apache的vhost中配置默认访问入口index-test.php的方法(Yii)
  3. 在WinCE中实现Screen Rotation(屏幕旋转)
  4. 机器学习理论梳理2 : KNN K近邻分类模型
  5. python十点半游戏代码_Python实现Pig Latin小游戏实例代码
  6. RabbitMQ 镜像集群之同步策略_专栏讲解
  7. 莫烦python博客_《莫烦Python》笔记 -- numpy部分
  8. 字节跳动AI Lab 秋季提前批招聘
  9. linux git ssh 配置文件,git bash配置ssh 登录 Linux的方法
  10. Altium的原理图主题修改为Orcad的默认样式(Altium原理图样式更改)
  11. 三点弯曲弹性模量怎么计算公式_腰背肌锻炼:五点支撑和三点支撑(视频)
  12. 之前关于字符串拼接的错误修正
  13. 2021百强县市名单
  14. NIPS中稿,聊聊科研!
  15. winform 线程 句柄不断增加_多线程讲解
  16. 我本将心向明月,奈何明月照沟渠
  17. [模电]差模信号、共模信号的通俗解释
  18. Python重试之美, 优雅的Tenacity
  19. 如何在鸿蒙系统中移植 Paho-MQTT 实现MQTT协议
  20. 帆软finereport导出excel的数字过长变成科学计数法的解决方法

热门文章

  1. GIt部署到linux服务器
  2. 东南大学计算机硕士培养方案,2015年学术硕士软件工程培养方案-东南大学计算机科学与工程学院.doc...
  3. 微信小程序考试--选择/填空
  4. 政府大数据之资源目录管理
  5. 热力学公式、推导及记忆方法
  6. vue页面引入另一个页面
  7. word使用:word中插入横线
  8. Y9000p,3060-laptop,ubuntu安装显卡驱动nvidia-driver-470
  9. 关于 此证书的签发者无效 解决办法 (整理自 网络)
  10. JDK1.8(rpm)安装