nsfwjs 鉴黄

By | 2024年11月9日

nsfwjs

nsfwjs 用于鉴定不雅图片,结果分5种类型,所有概率的总和应该加起来等于 1 或 100%。

  • 绘画(Drawing)——无害的艺术,或艺术绘画;
  • 变态(Hentai)——色情艺术,不适合大多数工作环境;
  • 中立(Neutral)——一般,无害的内容;
  • 色情(Porn)——不雅的内容和行为,通常涉及生殖器;
  • 性感(Sexy)——不合时宜的挑衅内容。

这个库不仅准确度高(约90%的小模型和93%的中等模型),而且由于开源,随着时间的推移,其准确性还在不断提高。目前可用模型有3种:

nsfwjs github 地址:https://github.com/infinitered/nsfwjs
在线nsfwjs 鉴黄 Demo:https://nsfwjs.com

目前本人测下来,Porn 为 0.7 的一定是色情图片,不过推荐大于等于 0.6 的就应该判定是色情图片了?

TensorFlow.js

sfwjs 基于 TensorFlow.js 实现,TensorFlow.js 是一个用于使用 JavaScript 进行机器学习开发的库。

使用 Node.js 让 nsfwjs 在服务器端运行

参考:https://github.com/infinitered/nsfwjs?tab=readme-ov-file#node-js-app
参考例子中提供了一个 API 服务来调用 nsfwjs。

使用 Python 执行 Node.js

方法一:使用 subprocess 调用 Node.js 脚本

假设我们有一个 Node.js 文件 example.js,文件内容如下:

// example.js
function add(a, b) {
    return a + b;
}

const args = process.argv.slice(2); // 获取传递的参数
const result = add(parseInt(args[0]), parseInt(args[1]));
console.log(result); // 打印结果

使用 node 命令执行上面的js模本:node example.js 1 2,结果等于3,1和2是参数。

在 Python 中使用 subprocess 模块执行该脚本

import subprocess

def call_nodejs_method(a, b):
    # 调用 Node.js 并传递参数
    result = subprocess.run(
        ['node', 'example.js', str(a), str(b)], # 使用 node 解释器运行 example.js 文件并传入参数
        capture_output=True,                     # 捕获输出结果
        text=True                                # 将输出解码为字符串
    )
    
    # 获取并返回输出结果
    return result.stdout.strip()

# 示例调用
output = call_nodejs_method(5, 3)
print("Result from Node.js:", output)

解释:

  1. subprocess.run 可以调用外部命令(这里是 Node.js),并通过 capture_output=True 捕获输出。
  2. node example.js 命令执行 example.js 文件,后面跟着的是参数 ab,它们会被传递到脚本中。
  3. result.stdout.strip() 提取并返回 Node.js 脚本输出的结果。
Category: AI

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注