引用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. 判定图片

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

NSFW.js 前端使用教程的更多相关文章

  1. 推荐20个很有帮助的 Web 前端开发教程

    在平常的搜索中,我碰到过很多有趣的信息,应用程序和文档,我把它们整理在下面这个列表.这是收藏的遇到的有用内容的一个伟大的方式,可以在你需要的时候方便查阅.相信你会在这个列表中发现对你很有用的资料. 您 ...

  2. Web前端入门教程之浏览器兼容问题及解决方法

    JavaScript 被称为JS,是作为浏览器的内置脚本语言,为我们提供操控浏览器的能力,可以让网页呈现出各种特殊效果,为用户提供友好的互动体验.JS是Web前端入门教程中的重点和难点,而浏览器兼容性 ...

  3. 推荐20个很有帮助的web前端开发教程

    1. CSS Vocabulary 一个伟大的指向和点击的小应用程序,让你加快速度掌握 CSS 语法的各个不同部分,学习各个属性的正确的名称. 2. Liquidapsive 一个简单的信息化布局,通 ...

  4. 推荐20个非常有帮助的web前端开发教程

    1. CSS Vocabulary 一个伟大的指向和点击的小应用程序,让你加高速度掌握 CSS 语法的各个不同部分,学习各个属性的正确的名称. 2. Liquidapsive 一个简单的信息化布局.通 ...

  5. JS前端图形化插件之利器Gojs组件(php中文网)

    JS前端图形化插件之利器Gojs组件(php中文网) 一.总结 一句话总结:php中文网我可以好好走一波 二.JS前端图形化插件之利器Gojs组件 参考: JS前端图形化插件之利器Gojs组件-js教 ...

  6. JS正则表达式完整教程

    JS正则表达式完整教程(略长) 引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水平的一个侧面标准. 关于正则表达式的教程, ...

  7. web前端该怎么入门?web前端入门教程(非常详细)

    初学编程的小伙伴经常会遇到的问题,1.没资源 2.没人带 3.不知道从何开始 ,小编也是从新手期过来的,所以很能理解萌新的难处,现在整理一些以前自己学习的一些资料送给大家,希望对广大初学小伙伴有帮助! ...

  8. jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档。

    jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档. jquery.cookie中的操作: jquery.cookie.js是一个基于jquer ...

  9. js前端分页之jQuery

    锋利的js前端分页之jQuery 大家在作分页时,多数是在后台返回一个导航条的html字符串,其实在前端用js也很好实现. 调用pager方法,输入参数,会返回一个导航条的html字符串.方法的内部比 ...

  10. js前端对后台数据的获取,如果是汉字则需要添上引号

    js前端对后台数据的获取,如果是汉字则需要添上引号

随机推荐

  1. 用ksweb+Android做服务器,搭建WordPress博客环境

    旧的安卓手机不要仍,安装上ksweb给wordpress做服务器,隔壁小孩都馋哭了. 为了能在自己的安卓手机服务器上写博客,首先我们来了解一下WordPress和ksweb: WordPress是使用 ...

  2. RestTemplate的超全讲解(全)转

    RestTemplate的超全讲解(全)转 https://blog.csdn.net/weixin_47872288/article/details/121842374 (81条消息) RestTe ...

  3. P4_创建第一个小程序项目

    设置外观和代理 创建小程序项目 点击"加号"按钮 填写项目信息 项目创建完成 在模拟器上查看项目效果 在真机上预览项目效果 主界面的 5 个组成部分

  4. 【KAWAKO】soundtoch-使用可执行文件对音频进行变调或变速

    目录 下载 单次使用 使用python脚本批量处理 下载 从官网下载可执行文件. 单次使用 在终端中直接运行,会出现使用方法和可选参数. 变速就设置tempo,变调就设置pitch,都变就都设置.变速 ...

  5. JZOJ 2483. 【GDKOI 2021提高组DAY1】回文(palindrome)

    题目 求区间最长回文串长度 \(1 \le n\le 5 \times 10^5\) 题解 比较妙的做法,主要是在询问部分 预处理出以某位为中心回文半径长 \(p_i\),马拉车和二分+哈希均可 然后 ...

  6. K3S系列文章-使用AutoK3s在腾讯云上安装高可用K3S集群

    开篇 <K3s 系列文章> <Rancher 系列文章> 方案 在腾讯云上安装 K3S 后续会在这套 K3S 集群上安装 Rancher 方案目标 高可用 3 台master ...

  7. Cesium源码阅读环境搭建

    1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...

  8. PostgreSQL lag,lead获取记录前后的数据

    场景:获取当前行的下一行某一字段数据,获取当前行的上一行某一字段数据 1.测试数据: postgres=# select * from tb1; id | name ----+------ 1 | a ...

  9. pat 乙级 1025 反转链表

    目前无法ac过最后一个测试点,其余ac,原因是有无效节点存在,但这个代码加上去除无效节点函数时便会运行超时 还没想出来怎么做,先这样吧 #include <stdio.h> #includ ...

  10. Linux操作命令(三)1.more命令 2.less命令 3.head命令 4.tail命令

    1.more 命令 分页显示文本文件的内容 more 命令,功能类似 cat ,cat 命令是将整个文件的内容从上到下显示在屏幕上. more 命令会一页一页的显示,方便使用者逐页阅读,而最基本的指令 ...