写点什么

拯救尴尬:鉴黄神器 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:3414397
用户头像

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

关注

评论 3 条评论

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

Mybatis中传递多个参数的4种方法

源字节1号

开源 软件开发 前端开发 后端开发 小程序开发

英文阅读 The manager's path 1.3

程序员在修行

使用消息队列有什么优点?有什么缺点?

程序员在修行

亚信科技与中国信通院达成全方位、跨领域战略合作

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库

与中小企业共生共赢,华为云B2B企业节来了

YG科技

ARTS 打卡 第一周,初试ARTS

三掌柜

ARTS 打卡计划

ARTS 打卡第四周

程序员在修行

关于身心灵学习的感悟1

程序员在修行

Footprint Analytics 为 ABGA Web3 Gaming Summit 提供支持,助力 Web3 游戏行业发展

Footprint Analytics

议题征集|Flink Forward Asia 2023 正式启动

Apache Flink

flink

Databend 开源周报第 110 期

Databend

Last Week in Milvus

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

【转载】JVM实际内存占用超过Xmx的原因,设置Xmx的技巧

虚实的星空

Java

用AI提高代码质量,同事对我的代码赞不绝口~

飞算JavaAI开发助手

数字化转型与架构-架构设计篇|如何开发一个各部门都满意的系统?

数字随行

数字化转型

云迁移?是技术问题也是团队问题

在天涯的海角

Scrum Master,这九个问题你问了吗?

敏捷开发

项目管理 敏捷开发 团队协作 Scrum Master

828 B2B企业节,华为云如何提升生态合作伙伴的综合竞争力?

YG科技

如何赋能企业数字化转型?华为云有妙招

YG科技

分库表数据倾斜的处理让我联想到了AKF模型 | 京东云技术团队

京东科技开发者

数据库 京东云 企业号9月PK榜

Ask Milvus Anything!聊聊被社区反复@的那些事儿 Ⅰ

Zilliz

非结构化数据 Milvus 向量数据库 deepdive

从实时监控到智能洞察:Grafana 和 CnosDB 的无限潜力

CnosDB

时序数据库 开源社区 CnosDB

高性能MySQL实战(三):性能优化 | 京东物流技术团队

京东科技开发者

京东云 企业号9月PK榜

SPI在Java中的实现与应用 | 京东物流技术团队

京东科技开发者

Java spi 京东云 企业号9月PK榜

序列化与反序列化一棵树

程序员在修行

9月24日,线下见个面?

MatrixOrigin

数据库 分布式 MatrixOrigin MatrixOne

数据通信网络之IPv6以太网单臂路由

timerring

数据通信网络

一文读懂私有云、公有云和本地化部署

青椒云云电脑

公有云 私有云

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