1. democss
地址:http://www.huchengchun.com:8127/porn_classificationhtml
接口说明: 前端
1. http://www.huchengchun.com:8127/porn_classification 提供了一个简易的网页工具,用户能够上传若干张图片,服务端会传回每一张图片是不是色情图片的断定,结果的形式是json格式。截图以下:python
返回结果的说明:jquery
2. 还支持了http get 对网页图片进行断定,请求的格式为: http://www.huchengchun.com:8127/porn_classification?img_url=xxxgit
其中 xxx 是网络图片的地址,目前只支持以jpg 和png结尾的格式。好比以下的请求返回的结果github
http://www.huchengchun.com:8127/porn_classification?img_url=https://pic2.zhimg.com/v2-2cfee04b86d10256be2d98458f45bb4e_1200x500.jpg
{
"status": "normal",
"v2-2cfee04b86d10256be2d98458f45bb4e_1200x500_1569511599.jpg": {
"hentai": "0.0064989934",
"drawings": "0.0012943572",
"porn": "0.1919955",
"neutral": "0.0314714",
"sexy": "0.76873976"
}
}web
嗯,确实是性感美女,能够看到断定的结果仍是比较准确的。ajax
2. 原理json
1. 色情图片分类模型。
这一部分主要是参考 github nsfw 的 keras 的开源实验。nsfw 是 Not Suitable for Work 的缩写,是yahho 最早提出一个一个基于深度学习的色情图片断定模型,地址: https://github.com/yahoo/open_nsfw.原始的模型是使用 caffe搭建的,可是显然,如今都已是9102年了,早已是tf/keras/pytorch 横行的时代了,caffe几乎已通过时了,因此我也懒得去再搭建一个caffe的深度学习环境了。在万能的github上搜索 nsfw 就能够发现不少其余框架移植的nsfw,这里我选择了一个相对比较简单的基于keras 的nsfw的实现,地址是:https://github.com/GantMan/nsfw_model.
做者提供了基于几十G嘿嘿嘿图片预训练的keras h5模型,开箱即用。固然,原始语料那是不可能提供的。如何加载模型,做者已经替你写好了脚本。几行代码就能够实现。
2. web 后端。
我本身有一个花了100多软妹币买的垃圾腾讯云服务器。还花了几十块钱买了俩域名:www.huchengchun.com ,www.huchengchun.top. 域名是在花生壳买的。这个服务器的配置是4G内存+40G存储+1M带宽,搭建换一个我的网站,写写博客却是没啥问题,可是用做跑深度学习模型显然是痴心妄想。不过还好,我手里还有一个我的的GPU主机,RTX2080TI, i7 cpu,16G 内存 + 256G SSD,11G 显存。 显然若是用它来跑深度学习的服务是再合适不过了。
但,惋惜,我这个服务器是连的家里的内网wifi,没有公网ip,咋经过域名访问呢?
固然是有办法的,咱们可使用内网穿透嘛。即咱们须要一个有公网ip的机器作反向代理,中间作一个桥梁,对用户的http请求作转发,转发到内网服务器,而后再将内网服务器的响应转发给用户。
关于内网穿透这里简单介绍两种方法:
1.花生壳客户端提供的内网穿透功能
2. 开源的frp工具。
具体说明能够参考我本身的这个简单总结: http://note.youdao.com/noteshare?id=22a62ce23805c456419a865e78ea4ff4
这里的web 服务是使用的flask 框架搭建的。之因此使用flask 搭建主要基于以下的几个理由:
1. flask 是一个基于python的轻量级web 框架,支持众多插件,能够快速搭建一个web服务。
2. 由于咱们的绝大多数深度学习模型基本前端语言都是python,因此web服务基于python天然能够无缝衔接 深度学习模型了。
关于 flask 的学习,这里我不想展开了,想学习的,能够去官网学习:flask
3. 前端环境
1. 提供一个界面,用户能够上传图片到服务器
2. 服务器接收到图片,使用nsfw模型处理,返回response
3. 前端接收server的response,并解析展现出来。
上传图片的 html + js + css 代码我参考了网上别人的demo,见: https://github.com/fozero/frontcode/blob/master/src/02/index.html
其中用到了一点点 jquery + ajax 功能,其余的一些细节还有 flask + ajax 的跨域请求,json 的 pretty 展现等,见参考文献。
3. 总结 & 其余
经过这个小项目,你能够初步学习:
最后相似地,以前我发布过一篇博文:如何训练一个诗歌生成器,我基于和上面相似的思路,如今也提供了一个http接口,你们能够调用这个接口随便生成一些诗歌玩玩,地址是:http://www.huchengchun.com:8126/poem_generation
接口说明以下:
服务名称
|
服务类型
|
端口号
|
启动脚本位置
|
绑定公网服务器ip
|
绑定公网服务器端口
|
说明
|
poem_prediction
|
python
keras
训练了一个lstm模型,用于写诗
|
8126
|
/home/work/server/poem_prediction_8126.sh
|
45.40.207.39
|
8126
|
请求方式:get/post
请求参数:
pr:能够传入任意非控值,表示随机预测一个五言绝句
ps:传入一个长度为6的字符串,返回一个长度为24的句子
pf:传入一个单个字符,返回一个以该字开头的五言绝句
ph:传入四个字,返回以这四个字开头的五言藏头诗
|
请求实例
|
返回实例
|
curl -G --data-urlencode "type=text" --data-urlencode "pf=胡" http://www.huchengchun.com:8126/poem_generation
|
{"extra": "", "status": "normal", "response": "胡室金同生,知人古新山。气虚中一事,主前千水同。"}
|
还有一个 bert_as_service开源项目,基于flask + bert 搭建一个 web server,能够任意文本编码为固定长度的向量,原文提供了python调用、http调用等多种方式,挺有意思的。我也把这个服务部署在我本身的服务器上了,而且提供了http post 接口,地址:
http://www.huchengchun.com:8125 ,调用实例以及返回实例:
curl -X POST http://www.huchengchun.com:8125/encode \
-H 'content-type: application/json' \
-d '{"id": 123,"texts": ["我爱中国"], "is_tokenized": false}'
|
{"id":123,"result":[[0.043742578476667404,...-0.06586530804634094]],"status":200}
|
最后,之后也许会探索更多好玩的机器学习/深度学习项目,提供接口给你们。
Have Fun!
参考文献:
1.基于keras 的nsfw: https://github.com/GantMan/nsfw_model.
2.用户上传多图片前端demo:https://github.com/fozero/frontcode/blob/master/src/02/index.html
3.flask 引用templates:https://stackoverflow.com/questions/31002890/how-to-reference-a-html-template-from-a-different-directory-in-python-flask/31003097
4.flask 解决 ajax 跨域请求错误的问题: https://stackoverflow.com/questions/26980713/solve-cross-origin-resource-sharing-with-flask