在.NET中调用NSFW.JS实现视频不良内容检测

陆遥
陆遥
发布时间:2026-10-16 | 8人浏览过
原创

本文讲解如何在.NET项目中利用NSFW.js模型对视频内容进行安全性检测。主要步骤涵盖使用Node.js构建本地WebAPI服务、通过FFmpeg处理视频获取关键帧,以及C#端调用接口获取鉴定结果的完整代码示例与配置说明。

1. 准备Node.js环境

首先需要在服务器上安装Node.js运行环境。由于@tensorflow/tfjs-node依赖Python编译原生模块,请确保系统中已安装Python并将路径添加到环境变量Path中。

第1步:安装依赖包

目的:部署NSFW.js运行所需的Express框架及TensorFlow库。

  • 打开终端,进入项目目录。
  • 执行以下命令安装必要的NPM包:
npm install express --save
npm install multer --save
npm install jpeg-js --save
npm install @tensorflow/tfjs-node --save
npm install nsfwjs --save

第2步:创建Server.js脚本

目的:编写提供RESTful接口的后端代码,负责接收图片数据、转换格式并返回预测概率。

在项目根目录创建server.js文件,填入以下内容:

const express = require('express')
const multer = require('multer')
const jpeg = require('jpeg-js')

const tf = require('@tensorflow/tfjs-node')
const nsfw = require('nsfwjs')

const app = express()
const upload = multer()

let _model

// 将Buffer转换为Tensor所需的Int32数组格式
const convert = async (img) => {
  const image = await jpeg.decode(img, true)
  const numChannels = 3
  const numPixels = image.width * image.height
  const values = new Int32Array(numPixels * numChannels)

  for (let i = 0; i < numPixels; i++)
    for (let c = 0; c < numChannels; ++c)
      values[i * numChannels + c] = image.data[i * 4 + c]

  return tf.tensor3d(values, [image.height, image.width, numChannels], 'int32')
}

// POST /nsfw 接口定义
app.post('/nsfw', upload.single('image'), async (req, res) => {
  if (!req.file) res.status(400).send('Missing image multipart/form-data')
  else {
    try {
      const image = await convert(req.file.buffer)
      const predictions = await _model.classify(image)
      image.dispose() // 释放内存
      res.json(predictions)
    } catch (error) {
      console.error(error)
      res.status(500).json({ error: 'Internal Server Error' })
    }
  }
})

// 加载模型并启动服务
const load_model = async () => {
  try {
    _model = await nsfw.load() 
    console.log('Model loaded successfully.')
    app.listen(8080, () => console.log('NSFW API server running on port 8080'))
  } catch (error) {
    console.error('Failed to load model:', error)
  }
}

load_model()

2. 启动与测试API服务

第1步:启动服务

目的:确认Node.js服务正常跑通。

  1. 在终端运行:node server.js
  2. 观察控制台输出“Model loaded successfully”和“NSFW API server running on port 8080”即表示成功。

第2步:验证接口可用性

目的:检查图片上传与识别是否返回预期JSON数据。

可以使用Postman或命令行进行测试。Windows下推荐使用PowerShell或CMD:

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表