NSFW.js 前端使用教程
引用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();
大总结!
- 引入js
- 加载模型
- 判定图片
图片判定的非常快,完全不用担心卡死页面
NSFW.js 前端使用教程的更多相关文章
- 推荐20个很有帮助的 Web 前端开发教程
在平常的搜索中,我碰到过很多有趣的信息,应用程序和文档,我把它们整理在下面这个列表.这是收藏的遇到的有用内容的一个伟大的方式,可以在你需要的时候方便查阅.相信你会在这个列表中发现对你很有用的资料. 您 ...
- Web前端入门教程之浏览器兼容问题及解决方法
JavaScript 被称为JS,是作为浏览器的内置脚本语言,为我们提供操控浏览器的能力,可以让网页呈现出各种特殊效果,为用户提供友好的互动体验.JS是Web前端入门教程中的重点和难点,而浏览器兼容性 ...
- 推荐20个很有帮助的web前端开发教程
1. CSS Vocabulary 一个伟大的指向和点击的小应用程序,让你加快速度掌握 CSS 语法的各个不同部分,学习各个属性的正确的名称. 2. Liquidapsive 一个简单的信息化布局,通 ...
- 推荐20个非常有帮助的web前端开发教程
1. CSS Vocabulary 一个伟大的指向和点击的小应用程序,让你加高速度掌握 CSS 语法的各个不同部分,学习各个属性的正确的名称. 2. Liquidapsive 一个简单的信息化布局.通 ...
- JS前端图形化插件之利器Gojs组件(php中文网)
JS前端图形化插件之利器Gojs组件(php中文网) 一.总结 一句话总结:php中文网我可以好好走一波 二.JS前端图形化插件之利器Gojs组件 参考: JS前端图形化插件之利器Gojs组件-js教 ...
- JS正则表达式完整教程
JS正则表达式完整教程(略长) 引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水平的一个侧面标准. 关于正则表达式的教程, ...
- web前端该怎么入门?web前端入门教程(非常详细)
初学编程的小伙伴经常会遇到的问题,1.没资源 2.没人带 3.不知道从何开始 ,小编也是从新手期过来的,所以很能理解萌新的难处,现在整理一些以前自己学习的一些资料送给大家,希望对广大初学小伙伴有帮助! ...
- jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档。
jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档. jquery.cookie中的操作: jquery.cookie.js是一个基于jquer ...
- js前端分页之jQuery
锋利的js前端分页之jQuery 大家在作分页时,多数是在后台返回一个导航条的html字符串,其实在前端用js也很好实现. 调用pager方法,输入参数,会返回一个导航条的html字符串.方法的内部比 ...
- js前端对后台数据的获取,如果是汉字则需要添上引号
js前端对后台数据的获取,如果是汉字则需要添上引号
随机推荐
- 12月2日内容总结——边框属性,display属性,css盒子模型,浮动、溢出、定位、z-index属性和建议博客页面搭建
目录 一.边框 边框简介 border-style--边框样式 border-width--边框宽度 border-color--边框颜色 二.display属性 三.CSS盒子模型 概念 margi ...
- Pytest插件pytest-order指定用例顺序
Pytest插件pytest-order指定用例顺序 安装 pip install pytest-order 注意不是pytest-ordering 说起来这里有个故事 关于pytest-order ...
- wsl 网络探究
省流:wsl2能否固定ip地址? - 豆腐干的回答 - 知乎 https://www.zhihu.com/question/387747506/answer/2764445888 割--------- ...
- OPENMP FOR CONSTRUCT GUIDED 调度方式实现原理和源码分析
OPENMP FOR CONSTRUCT GUIDED 调度方式实现原理和源码分析 前言 在本篇文章当中主要给大家介绍在 OpenMP 当中 guided 调度方式的实现原理.这个调度方式其实和 dy ...
- STM32F4跳转函数
JMP2APP void JMP2APP(void) { pFunction Jump_To_Application; uint32_t JumpAddress; if (((*(__IO uint3 ...
- React Hooks的理解,React Hooks有哪些,解决了什么问题
一.是什么 Hook 是 React 16.8 的新增特性.它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性 至于为什么引入hook,官方给出的动机是解决长时间使 ...
- JZOJ 2020.07.27【NOIP提高组】模拟
总结 今天的题还好,不幸拿了 \(rank1\),只有 \(380pts\) 实际 \(AK\) 也不难 前三题都是思维题 后面一题其实不过是简单的数据结构优化 \(dp\) 的题 用 \(GSM\) ...
- [NOI Online 提高组]冒泡排序
题目 洛谷等许多 \(OJ\) 都有 思路 考试题,今日无意又做了一次 然后发现自己读错题了······ 其实询问时只要 \(k\) 轮排序后的逆序对个数并不需要真的对序列进行更改 很显然 \(k\) ...
- fixed 定位元素超出内容 overflow 不滚动
假如,一个父元素的定位是 fixed,其所有子元素的高度加起来超过了父元素,父元素设置 overflow: auto.有可能出现不滚动的问题,发生的情况有横向和竖向的. 竖向滚动:必须要设置父元素的高 ...
- PostgresSQL用returning实现mysql的last_insert_id
今天开发问到,postgressql里面有没有像mysql那样插入一个值后返回插入的值,这个是有的,而且有更强的扩展性. 示例: [postgres@localhost ~]$ psql psql ( ...