引用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. 【分析笔记】Linux tasklet 机制的理解

    Tasklet 介绍 Linux 内核提供的四种中断下半部中 softirq(软中断).tasklet(小任务).workqueue(工作队列) .request thread(中断线程)中的其中一种 ...

  2. 洛谷 P3137 [USACO16FEB]Circular Barn S

    题目链接 本蒟蒻的第一篇题解,写得不好请指出,敬请谅解 题意: 有\(n\)头奶牛,分布在一些房间,某些房间可能有多头牛,要让这些牛按顺时针移动,求使每一个房间刚好有一个奶牛的最小花费 花费计算:如果 ...

  3. Excel文件 利用MySQL/Python 实现自动处理数据的功能

    目录 问题描述: 解决方案: 一.SQL查询 二.SQL.python处理 三.python处理 四.优化python处理 1.手动执行代码 2.开机自动执行代码 对比四种方案: 总结: 问题描述: ...

  4. Cesium计算三角形面积(十)

    function triangleArea(p0, p1, p2) { //利用subtract计算出两个向量 let v0=Cesium.Cartesian3.subtract(p0,p1,newC ...

  5. clicknium-划时代的自动化

    说起UI自动化,selenium一直是不可替代的存在,它的安装量.百度数量已经奠定了它在自动化.爬虫等相关领域的霸主低位,可以说,只要涉及到UI自动化,选selenium就对了. 细数过往,相关的UI ...

  6. [SHOI2006]仙人掌

    [SHOI2006]仙人掌 简要解析 其实很简单 只要普通树形 \(dp\) 就行了 \(f_x\) 表示 \(x\) 能向下延深的最大距离,\(v\) 是 \(x\) 的儿子 当一个点不属于任何环时 ...

  7. React Native学习笔记----React Native简介与环境安装

    React Native 的基础是React, 是在 web 端非常流行的开源 UI 框架.要想掌握 React Native,先了解 React 框架本身是非常有帮助的. 一.什么是React Na ...

  8. [POI2011]MET-Meteors 解题报告

    语言系统紊乱了 QAQ 这道题感觉不是很难鸭 qwq. 先只考虑一个国家,怎么做?很显然,就直接二分一下就行了.判定答案可以维护一个差分数组,然后最后对它做一个前缀和,再求一下这个国家的流行数量就好了 ...

  9. ubuntu18.04 server版安装教程

    转载博客园: Ubuntu18.04 Server版安装(详细版) - 运维密码 - 博客园 (cnblogs.com)

  10. iview表单验证

    iview表单验证的步骤 第一步:给 Form 设置属性 rules :rules="规则设置" 第二步:同时给需要验证的每个 FormItem 设置属性 prop 指向对应字段即 ...