NSFWJS 开源项目教程
项目介绍
NSFWJS 是一个基于 TensorFlow.js 的客户端内容检测库,专门用于识别和分类不适合工作环境的图像(Not Safe For Work)。该项目由 Infinite Red 维护,旨在帮助开发者在浏览器或 Node.js 环境中实现图像的 NSFW 检测。NSFWJS 使用预训练的模型,能够以较高的准确率(约90%)识别出包含成人内容的图像。
项目快速启动
安装
首先,确保你的项目中已经包含了 TensorFlow.js。然后,通过 npm 或 yarn 安装 NSFWJS:
# 使用 npm
npm install @tensorflow/tfjs nsfwjs
# 使用 yarn
yarn add @tensorflow/tfjs nsfwjs
加载模型并分类图像
以下是一个简单的示例,展示如何在浏览器中加载模型并分类图像:
import * as tf from '@tensorflow/tfjs';
import * as nsfwjs from 'nsfwjs';
async function start() {
const model = await nsfwjs.load();
// 假设你有一个图像元素
const img = document.getElementById('img');
// 将图像转换为 Tensor
const tensor = tf.browser.fromPixels(img);
// 分类图像
const predictions = await model.classify(tensor);
console.log(predictions);
// 清理 Tensor
tensor.dispose();
}
start();
应用案例和最佳实践
浏览器扩展
NSFW Filter 是一个使用 NSFWJS 的浏览器扩展,用于过滤掉浏览器中的 NSFW 图像。该扩展目前支持 Chrome 和 Firefox,并且是完全开源的。
服务器端应用
你也可以在 Node.js 环境中使用 NSFWJS 进行图像分类:
const tf = require('@tensorflow/tfjs-node');
const nsfwjs = require('nsfwjs');
const axios = require('axios');
async function classifyImage(url) {
const model = await nsfwjs.load();
const response = await axios.get(url, { responseType: 'arraybuffer' });
const imageBuffer = Buffer.from(response.data, 'binary');
const decodedImage = tf.node.decodeImage(imageBuffer);
const predictions = await model.classify(decodedImage);
console.log(predictions);
decodedImage.dispose();
}
classifyImage('https://example.com/path/to/image.jpg');
典型生态项目
TensorFlow.js
NSFWJS 的核心依赖是 TensorFlow.js,这是一个用于在浏览器和 Node.js 中运行机器学习模型的 JavaScript 库。TensorFlow.js 提供了丰富的 API,支持从简单的线性回归到复杂的神经网络模型。
React Native
NSFWJS 也支持 React Native 应用。你可以通过加载本地模型来减少网络负载,并利用 TFJS-React-Native 库在移动应用中实现图像分类。
Lovell/Sharp
对于图像预处理任务,你可以使用 Lovell/Sharp 库来处理更多文件格式,并进行图像优化和转换。
通过这些生态项目,NSFWJS 能够提供一个全面的解决方案,帮助开发者在不同的平台和环境中实现高效的内容检测。