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
- 加載模型
- 判定圖片
圖片判定的非常快,完全不用擔心卡死頁面
本文來自博客園,作者:月神的使者,轉載請注明原文鏈接:http://www.rzrgm.cn/dffxd/p/17007836.html

浙公網安備 33010602011771號