引用js + 下载模型

先看文档 https://github.com/infinitered/nsfwjs

非常好,一点也看不懂。总之,先引js,不知道去哪里下载js就上jsdelivr搜一搜

按顺序引:

https://www.jsdelivr.com/package/npm/@tensorflow/tfjs

https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@4.1.0/dist/tf.min.js

https://www.jsdelivr.com/package/npm/nsfwjs

https://cdn.jsdelivr.net/npm/nsfwjs@2.4.2/dist/nsfwjs.min.js

接下来就是非常普通的引用,相信大家都会

nsfwjs有一个很吵闹的加载提示,可以自己找到位置给注释掉



再看一遍文档,emm,这次就看懂了 首先下载模型

https://github.com/GantMan/nsfw_model

他有一个链接,指向“最新的”Releases,不要信这个



周所周知 1.1 < 1.2

上这里找:https://github.com/GantMan/nsfw_model/tags

然后1.2的版本里有两个带model.json的文件夹,大的好像更准

模型有几种加载参数,最好的方法就是都试一遍

接下来是加载模型 (自己改模型地址)

let model = await nsfwjs.load("js/nsfw/mobilenet_v2_140_224/web_model/", {type: 'graph'});
// 加载模型时返回的是 `Promise`
// reslove回来的就是加载后的模型本体 // 这里就是判定,判定一般会有五个结果(看你用的什么模型,官方的一直都是五个)
let p = await model.classify(img);
if(p[0].className=="Hentai"||p.find(v => v.className == "Hentai").probability>0.1) {
return true;
} else {
return false;
}

model.classify里面可以放视频的节点,图片的节点,以及canvas等等,视频是你播到哪里,他取的图片就在哪里

主要是要了解每一次返回的是什么,要想真正了解就多写几个console.log

蒟蒻写的代码 (自己改模型地址)

let nsfw = {
inited: false,
init: async function () {
if(!nsfw.inited) {
nsfw.model = await nsfwjs.load("js/nsfw/mobilenet_v2_140_224/web_model/", {type: 'graph'});
}
nsfw.inited = true;
return nsfw.model;
},
check: async function (img, type="Hentai") {
if(!nsfw.inited) {
await nsfw.init();
}
let p = await nsfw.model.classify(img);
if(p[0].className==type||p.find(v => v.className == type).probability>0.1) {
return true;
} else {
return false;
}
}
};
// 使用非常的简单,可以直接,会自动初始化(加载模型)
nsfw.check(img);
nsfw.check(video);
nsfw.check(canvas);
nsfw.check(imgData);
// 也可以手动初始化
nsfw.init();

大总结!

  1. 引入js
  2. 加载模型
  3. 判定图片

图片判定的非常快,完全不用担心卡死页面

最新文章

  1. mysql分表的3种方法
  2. mvn打包时添加version和profile
  3. python反射原理
  4. 技术英文单词贴--R
  5. [转]Linux下的暴力密码破解工具Hydra详解
  6. curl 查看网站连接情况
  7. .net excel利用NPOI导入oracle
  8. 一段代码说明javascript闭包执行机制
  9. #include &lt;time.h&gt;
  10. Microsoft Jet 数据库引擎找不到对象&#39;Sheet1$_&#39;。请确定对象是否存在,并正确地写出它的名称和路径
  11. WPF 完美截图 &lt;序&gt;
  12. PHP7开启Opcode开启强悍性能
  13. Docker Data Center系列(二)- UCP安装指南
  14. CORS——跨域请求那些事儿
  15. 支持MPI的hdf5库的编译
  16. PHP的爬虫框架
  17. npm 更新版本
  18. 【HAOI2008】圆上的整点
  19. How To Scan QRCode For UWP (3)
  20. Winform给TextBox设置默认值(获取焦点后默认值消失)

热门文章

  1. c++ 递推算法
  2. 使用pycharm打开sqlite的问题
  3. 接入jira OAuth权限流程
  4. 学习Java Day24
  5. 合肥光源储存环束流三维参数测量系统相关PV
  6. 什么是Http? http和https的区别
  7. 【TS】泛型以及多个泛型参数
  8. shell:判断某个变量是否包含字符串/变量的方法
  9. React Native学习笔记----React Native简介与环境安装
  10. 个人博客系统Typecho情侣主题模板Cupid