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
- 加载模型
- 判定图片
图片判定的非常快,完全不用担心卡死页面
本文来自博客园,作者:月神的使者,转载请注明原文链接:https://www.cnblogs.com/dffxd/p/17007836.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现