写点什么

拯救尴尬:鉴黄神器 NSFW JS 开源了!

  • 2019-02-26
  • 本文字数:1907 字

    阅读完需:约 6 分钟

拯救尴尬:鉴黄神器NSFW JS开源了!

近日,GitHub 上开源了一款鉴定不雅内容的 js 库 NSFW JS,你可以使用 NSFW JS 识别不雅内容,所有操作都只在客户端进行,甚至都不需要让文件离开用户的电脑。


演示地址:https://nsfwjs.com/


项目地址:https://github.com/infinitered/nsfwjs


你有没有过这样的经历,在睡觉之前看了一些东西,然后在闭上眼睛时那些东西仍然历历在目?我说的可不是那种甜蜜的美梦,而是那种被你的老板看到后会让你卷铺盖走人的东西。


用户的输入可能会很恶心。我的一个朋友之前开了一家网店,居然可以允许用户输入负的数。一些恶意用户会购买一件 50 美元的衬衫,然后再加上负一件 40 美元的衬衫,从而达到打折的效果!纠正用户输入的数字是很容易的,但如果是图片呢?那是不可能的!


机器学习正在做着令人惊叹的事情,现在已经开始进入 JavaScript 领域,那些令人惊叹的事情无处不在。

NSFW JS NPM 模块

我可以用一整章的内容来介绍 NSFW JS 内部原理,但还是让我们来关注它的功能吧。


给 NSFW JS 一张图片元素或画布,然后简单地调用 classify,可能会得到如下 5 个分类结果。


  • 绘画(Drawing)——无害的艺术,或艺术绘画;

  • 变态(Hentai)——色情艺术,不适合大多数工作环境;

  • 中立(Neutral)——一般,无害的内容;

  • 色情(Porn)——不雅的内容和行为,通常涉及生殖器;

  • 性感(Sexy)——不合时宜的挑衅内容。


每个分类都有一个概率!基于这些数字和分类,你可以采取行动或者只是目瞪口呆。


为什么要用它?

大公司一般都有专门的团队专注于消除令人反感的内容,但我们一般享受不到这种奢侈。就像客户端的表单验证可以减少服务器端的工作量一样,客户端的内容检查也可以减少团队的工作量。

场景 1:

想象一下,当用户要上传淫秽图像时,他们会立即收到这样的消息:“抱歉!这张图片的一些内容已经触发了内容警告。你仍然可以上传图片,但不会立即可用,需要通过人工审核后才会生效”。用户看到这条消息后可能会放弃上传。

场景 2:

它也可以用于用户到用户的保护。在从别人那里接收消息时,可能会收到警告,告知他们要查看的内容是不是适合。如果可以查看,它会在显示之前进行确认,而这些是在没有服务器处理的情况下完成的!


随着用户上传内容的合法性变得越来越重要,我们需要更大更好的工具来保证优质网站的畅通。

如何使用它?

这很简单,基本上包含三个步骤:


1.获取代码;


2.在客户端加载模型;


3.对图像进行分类。

1. 获取代码

我将向你展示 Node 风格的用法。首先,我们需要引入 NSFW JS。如果项目中尚未包含 TensorflowJS,请先获取它。



现在,我们可以在 JS 文件中导入 Node 模块:


// Classic import styleimport * as nsfwjs from 'nsfwjs'// or just use require('nsfwjs')
复制代码

2. 在客户端加载模型

接下来我们需要做的是加载模型。这个“模型”是用来评估图像的函数。可以在这里下载它们。这些文件是 4MB 大小的分片,便于在客户端进行缓存。在我的示例中,我将它们放在 public/model/文件夹中。



如果你的目录也一样,那么可以使用这个路径来加载模型。


// Load files from the server to the client!const model = await nsfwjs.load('/model/')
复制代码

3. 对图像进行分类

现在,模型已经存在于客户端的内存中,我们可以对页面上的图像元素进行分类。


// Gimme that imageconst img = document.getElementById('questionable_img')
// Classify the imageconst predictions = await model.classify(img)// Share resultsconsole.log('Predictions: ', predictions)
复制代码


预测(默认情况下)将返回 5 个分类结果,按照最可能到最不可能的顺序排列!例如:


[  {className: “Drawing”, probability: 0.9195643663406372},  {className: “Hentai”, probability: 0.07729756087064743},  {className: “Porn”, probability: 0.0019258428364992142},  {className: “Neutral”, probability: 0.0011005623964592814},  {className: “Sexy”, probability: 0.00011146911856485531}]
复制代码


所有概率的总和应该加起来等于 1 或 100%。现在,你可以基于这些数据做你想做的事情!标记超过 60%的东西,或者只用最前面那个,把其余的忽略掉。

误报

作为人类,你可能经过了几十年的图像识别训练。所以可以肯定地说,你肯定会遇到一些很明显的误报。虽然这些通常很有趣,但结果中也会出现少量的数据偏差。随着数据清洗技术的改进,这些偏差将被消除。这是一个缓慢的过程。


对于像 NSFW 这样的东西,我觉得出现误报总比出现漏网之鱼更好。

动手演示

需要注意的是,NSFW 可能会发生误报,但这个模型每天都在不断改进。因为是开源的,所以我希望大家一起帮助改进它!



英文原文:


https://shift.infinite.red/avoid-nightmares-nsfw-js-ab7b176978b1


更多内容,请关注前端之巅。



2019-02-26 14:3414145
用户头像

发布了 38 篇内容, 共 32.3 次阅读, 收获喜欢 209 次。

关注

评论 3 条评论

发布
用户头像
nice
2019-03-21 17:01
回复
用户头像
哭了,弄了一天没弄好,有谁有教程吗
2019-03-17 16:27
回复
用户头像
这个演示网站没有效果啊
2019-03-05 14:25
回复
没有更多了
发现更多内容

文献解读-遗传病-第三期|《Answer ALS,一种用于散发性和家族性 ALS 的大规模资源,结合了来自诱导多能细胞系的临床和多组学数据》

INSVAST

基因数据分析 生信服务

如何优雅实现存算分离:缓存及Tablespace讲解与演示

酷克数据HashData

存算分离

30天拿下Rust之错误处理

希望睿智

rust 错误处理

一键生成,效率翻倍,用AI赋能PPT制作

霍格沃兹测试开发学社

星创编辑器在投放业务中的落地|得物技术

得物技术

前端 Web React 企业号 2024年5月 PK 榜

AI 日报|硅谷 “鲁迅” 怒怼马斯克,炮轰 AI 界;前 OpenAI 安全主管入职友商 Anthropic

可信AI进展

用 Baidu Comate 实现研发提效,百度营销服务团队打造“轻舸”加速营销智能化

百度Geek说

企业号 5 月 PK 榜 智能代码助手; 企业号2024年5月PK榜 Baidu Comate

30天拿下Rust之生命周期

希望睿智

rust 生命周期

AI+金融新篇章:智谱AI与邮储银行签署战略合作协议开启大模型时代

技术研究院

[ICLR 2024] 基于Pathways架构的自适应多尺度时间序列预测模型Pathformer

阿里云大数据AI技术

人工智能 自适应 论文 Iclr

在 Kubesphere 中开启新一代云原生数仓 Databend

Databend

华为云大咖说:开发者应用AI大模型的“道、法、术”

华为云开发者联盟

人工智能 华为云 大模型 华为云开发者联盟 企业号2024年5月PK榜

API安全应该怎么做?

芯盾时代

网络安全 网关 API网关 零信任

FPGA运行下一代储备池计算,控制混沌动力系统更精准

算AI

人工智能 神经网络 算法 自动化 FPGA

《歧路旅人》好玩吗 《歧路旅人》苹果电脑怎么玩

阿拉灯神丁

游戏 苹果电脑 CrossOver Mac下载 如何在Mac上运行win游戏 CrossOver 24虚拟机

网页文档下载不了怎么办 网页文档下载方法

阿拉灯神丁

视频 网络加速 下载器 网页 idm下载

拯救尴尬:鉴黄神器NSFW JS开源了!_开源_Gant Laborde_InfoQ精选文章