JavaScript裸体识别技术
当第一次听说nude.js的时候,我非常怀疑这种浏览器端的裸体识别技术,有几个理由:
- 正常情况下,裸体识别应该在服务器端进行,这样,那些色情图片或色情视频才能在发送给浏览者前被发现。
- 我不相信完全依赖计算机能过滤掉所有色情内容(虽然我是个程序员)。
- 黑白裸体图像能被识别出来吗?准确率能有多少?
- 如果在客户端发现了色情图片,你能怎么做?这种技术如何使用?
我用nude.js试验了不少内容,让我来告诉你如何使用它,以及我这些怀疑的答案是什么。
关于nude.js裸体识别脚本
从技术的角度上讲,nude.js使用了HTML5画布(Canvas)和WebWorker技术来操作图像进行分析。图像被复制到画布上,使用裸体识别算法进行比较,包括下面几种特征识别:
- 在图像中查找类似肤色的像素。
- 根据捕捉到的像素定位或构造皮肤位置。
- 分析皮肤位置判断是裸体或非裸体。
- 就裸露情况进行分级,判断是否属于裸露。
nude.js支持IE9+ (excanvas), Firefox 3.6+, WebKit引擎的浏览器(谷歌浏览器, Safari, Mobile Safari,Opera)。nude.js还支持对视频进行截屏分析。
nude.js的用法
首先要在你的页面上引入nude.js脚本,然后是需要分析的图片:
|
1
2
3
4
5
6
7
8
9
10
11
|
<!-- 对于不支持画布技术的IE --><!--[if IE]><script type="text/javascript" src="excanvas_r3/excanvas.compiled.js"></script> <![endif]--><script src="nude.js/compressed/nude.min.js"></script><!-- 需要识别的图片 --><img src="/lazy.gif?067588" data-original="dvt1.jpg" alt="Dita Von Tease" id="image1" onclick="onImageClick('image1');" /><img src="/lazy.gif?067588" data-original="dvt2.jpg" alt="Dita Von Tease" id="image2" onclick="onImageClick('image2');" /><img src="/lazy.gif?067588" data-original="dvt3.jpg" alt="Dita Von Tease" id="image3" onclick="onImageClick('image3');" /><img src="/lazy.gif?067588" data-original="dvt4.jpg" alt="Dita Von Tease" id="image4" onclick="onImageClick('image4');" /> |
nude.js的用法很简单,因为它只有两个方法:<code>load</code> 和 <code>scan</code>。其中 <code>load</code> 方法接受图片的 <code>id</code> 或图片本身,将其拷贝到画布里。而 <code>scan</code> 方法根据算法对画布数据进行分析,返回 <code>true</code> 或 <code>false</code>。
|
1
2
3
4
5
6
7
|
function onImageClick(node) { nude.load(node); // 扫描 nude.scan(function(result){ alert(result ? "在" + node.id + "发现裸露图像!" : "非裸体"); });} |
你可以想象出,这些过程是在浏览器里进行的,所以不要期望很迅速的得出结果。而且,很显然,图片尺寸是分析速度的一个重要因素。如果你的网站严重的依赖nude.js,小心那些大尺寸的图片。
裸体识别的结果
对于高质量的裸露女性的JPEG图片,这个小脚本检测成功率非常高。但对于暗色调或黑人皮肤却不是很成功。在我的测试中,nude.js没有识别出黑白裸露图像,也没有发现视频的色情影像(可能是我的视频清晰度不够)。
不管怎么说,nude.js的表现还是很不错的,但总觉得这种技术还无法大规模使用。扫描图片需要时间,而且会卡住浏览器。因为nude.js(包括它使用的识别算法)对黑白图片和低质量的图片有缺陷,所以我不推荐在网站上大量的依赖这个脚本进行识别。
JavaScript裸体识别技术的更多相关文章
- 前端html、Javascript、CSS技术小结
简单地总结了一下前端用过的html.javascript.css技术,算是清点一下,做个大略的小结,为进一步的学习给个纲领. 一.HTML 由于HTML5的兴起,简单地判断一个网页是否是html5网页 ...
- 人脸识别技术大总结(1):Face Detection & Alignment
http://blog.jobbole.com/85783/ 首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他技术 - 导航条 - 首页 最新文章 IT 职场 前端 - Ja ...
- PHP实现人脸识别技术
这次人脸识别技术,是实现在微信端的,也就是说利用公众微信平台,调用第三的API来实现人脸识别这项技术的. 实现的思路: 首先呢,将收集的照片,建立一个照片库,然后利用在微信平台发送的照片,去到照片库进 ...
- Modelarts与无感识别技术生态总结(浅出版)
[摘要] Modelarts技术及相关产业已成为未来AI与大数据重点发展行业模式之一,为了促进人工智能领域科学技术快速发展,modelarts现状及生态前景成为研究热点.笔者首先总结modelarts ...
- uu云验证码识别平台,验证码,验证码识别,全自动验证码识别技术,优优云全自动打码,代答题系统,优优云远程打码平台,uu云打码
uu云验证码识别平台,验证码,验证码识别,全自动验证码识别技术,优优云全自动打码,代答题系统,优优云远程打码平台,uu云打码 优优云验证码识别答题平台介绍 优优云|UU云(中国公司)是全球唯一领先的智 ...
- 汽车Vin码识别——可以嵌入到手机里的新OCR识别技术
汽车Vin码识别(车架号识别),顾名思义,就是识别汽车的Vin码(车架号),汽车Vin码识别(车架号识别)利用的是OCR识别技术,支持视频流获取图像,自动触发识别,另外汽车Vin码 ...
- 移动端车牌识别——可以嵌入智能手机系统里的新OCR识别技术
移动端车牌识别技术,是在OCR光学字符识别技术的基础上研发的用来识别汽车号牌特征信息的图像识别技术.在国内,该项技术由北京易泊时代携手清华大学成功地将"国家863计划"项目成果-- ...
- 汽车Vin码识别技术的由来到发展
核心内容:汽车Vin码.汽车车架号.Vin码识别.汽车Vin码识别.车架号识别.汽车车架号识别 一.汽车Vin码识别应用背景 随着二手车产业链发展越来越强大,在汽车买卖以及后市场应用中,了解车辆的相关 ...
- face ++ 人脸识别技术初步
网站地址: https://console.faceplusplus.com.cn/documents/5671791主要有 1 人脸识别技术 2 人体识别技术 ...
随机推荐
- jquery动态绑定事件
什么是动态绑定? 动态绑定是指动态添加的DOM节点或者html元素,他们最开始时运行的时候是不存在的.如果要给这些动态加入的节点增加事件,就必须要用jquery的on方法来绑定事件. $('.cont ...
- go 学习笔记(4) ---项目结构
go install和go build之争.目前,IDEA插件和LiteIDE都采用了go build.Eclipse插件采用了go install.官方推荐go install方式编译项目,官方项目 ...
- python os库学习笔记
os.getcwd(): 获取当前目录 os.name: 获取当前使用的操作系统 eg: print os.name os.remove(): 删除指定文件 eg: os.remove('test.t ...
- Accounting_会计基础知识
作为企业的财务人员,必须拥有一些技能和财务方面的知识,本文就所讲述的是财务岗位必须掌握的知识总结,仅供参考. 1.账面价值.账面余额和账面净值 账面价值是指某科目(通常是资产类科目)的账面余额减去相关 ...
- DBA_实践指南系列1_Oracle Erp R12系统安装Install(案例)
2013-12-01 Created By BaoXinjian
- Linux系统休眠和设备中断处理
一.设备IRQ的suspend和resume 本小节主要解决这样一个问题:在系统休眠过程中,如何suspend设备中断(IRQ)?在从休眠中唤醒的过程中,如何resume设备IRQ? 一般而言,在系统 ...
- Java 异常模型综述
一. 异常的引入及基础 发现错误的理想时机是在编译阶段.也就是在你试图运行程序之前. 然而,编译期间编译器并不能找出全部的错误,余下的错误仅仅有在运行期才干发现和解决,这类错误就是 Throwable ...
- [面试题] Find next higher number with same digits
Find next higher number with same digits. Example 1 : if num = 25468, o/p = 25486 Example 2 : if num ...
- 批处理学习笔记2 - 编写批处理的for循环
批处理中的for循环集成的功能比较多,可以直接对文件操作. ====================================================================== ...
- sudo apt-get update 时出现的hit、ign、get的含义
hit,命中表示链接上这个网站 get获取表示有更新并且下载, ign忽略表示无更新或者更新无关紧要或者不需要,譬如某些插件系统已经有了或者语言翻译包