近日,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

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

拯救尴尬:鉴黄神器NSFW JS开源了!相关推荐

  1. java 鉴黄_真香,我把百万鉴黄服务源码开源了

    前言 最近某云审查的比较严,图床上的内容也无奈关闭了,有兴趣的小伙伴可以使用炒鸡工具箱自行搭建.今儿跟大家分享一下之前自建鉴黄服务的这个流程顺便分享一下相关源码. 图床架构 鉴黄流程 代码案例 建议有 ...

  2. iOS开发-图片离线鉴黄 基于TensorFlow nsfw oc版

    iOS开发-图片离线鉴黄 基于TensorFlow nsfw oc版 前言-基于TensorFlow鉴黄 效果 首先要引入Firebase 鉴黄类的封装 OC版本的鉴黄demo Swift版本的鉴黄 ...

  3. c语言 将url图片存到本地_一个22万张NSFW图片的鉴黄数据集?我有个大胆的想法……...

    如果你想训练一个内容审核系统过滤不合适的信息,或用 GAN 做一些大胆的新想法,那么数据集是必不可少的.例如图像鉴黄,我们需要使用卷积神经网络训练一个分类器,以区分正常图像与限制级图像.但限制级的图像 ...

  4. 一个22万张NSFW图片的鉴黄数据集?我有个大胆的想法……

    机器之心报道,机器之心编辑部. 如果你想训练一个内容审核系统过滤不合适的信息,或用 GAN 做一些大胆的新想法,那么数据集是必不可少的.例如图像鉴黄,我们需要使用卷积神经网络训练一个分类器,以区分正常 ...

  5. 158万张图像的鉴黄数据集

    机器之心报道 如果你想训练一个内容审核系统过滤不合适的信息,或用 GAN 实现一些大胆的想法,那么数据集是必不可少的.但限制级图像很难收集,也很少会开源.在这个项目中,作者构建了一个大型高质量图像鉴黄 ...

  6. 厉害了!一本正经地为单身狗推荐这个158万张图像的鉴黄数据集

    本文转自"机器之心"(almosthuman2014) 如果你想训练一个内容审核系统过滤不合适的信息,或用 GAN 实现一些大胆的想法,那么数据集是必不可少的.但限制级图像很难收集 ...

  7. 那个20多万“不可描述”照片的数据集,有人用它做了鉴黄模型 | Demo

    三井 发自 凹非寺  量子位 报道 | 公众号 QbitAI 有人上手了! 近日, GitHub出现一个名为"NSFW Model"的项目.通俗一点来说,就是一个鉴黄模型. 这个模 ...

  8. 用python将照片做成数据集_那个20多万“不可描述”照片的数据集,有人用python做了鉴黄模型 | Demo...

    有人上手了! 近日, GitHub出现一个名为"NSFW Model"的项目.通俗一点来说,就是一个鉴黄模型.学习Python中有不明白推荐加入交流群 号:864573496 群里 ...

  9. 用Python做了鉴黄模型,内含多20万张“不可描述”图片

    GitHub出现一个名为"NSFW Model"的项目.通俗一点来说,就是一个鉴黄模型. 这个模型,使用的数据来自前不久量子位介绍的那个数据集,内含多20万张"不可描述& ...

最新文章

  1. SPRING3.X JSON 406 和 中文乱码问题
  2. linux挂载硬盘_一篇文章带你了解 linux 如何进行挂载
  3. c++ 调用python
  4. 项目管理中的特殊———例外管理
  5. Redis——Java连接Redis
  6. 为什么工作7年又来开博客?
  7. ReactJS 开发过程中的一些使用心得
  8. wordpress代码高亮插件coolcode
  9. fcntl函数的SET用法
  10. PADS(4)——PADS Logic原理图设计技巧
  11. xsmax无法进入dfu模式_iPhone XR/XS/XS Max 如何进入恢复模式或 DFU 模式?
  12. 微信小程序 提示 provisional headers are shown
  13. 关于长城!你可能不知道......
  14. 简单了解下什么是中台?
  15. Godot Engine:格斗游戏中的必杀技(大招/绝招/特殊技/Special Move )输入系统实现
  16. 高一数学试题-2022年秋期末试卷
  17. 基于android的交流平台,参阅:基于android的大学生信息交流平台的设计与实现
  18. 博士科研论坛和一些学者研究
  19. 为什么北京人和上海人都成了“杭漂“?
  20. 刘一男词汇课(从sail到shed):“重复是记忆之母,理解是记忆之父。“

热门文章

  1. 数据中心防雷SPD技术漫谈
  2. system pause in C#
  3. FC SAN与IP SAN的比较
  4. iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge
  5. jQuery之替换节点
  6. PHP实时生成并下载超大数据量的EXCEL文件
  7. 异步请求之XMLHttpRequest篇
  8. 运维39脱产班 决心书
  9. 聊聊Oracle 11g的Snapshot Standby Database(上)
  10. 团队项目—每日记录3(补4.25)