news 2026/9/5 15:08:17

node + nsfwjs 流程记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
node + nsfwjs 流程记录

nsfwjs是一个免费开源的图片鉴别插件,本地打包尺寸过大,不符合预期,所以大多数人选择在服务端部署。

下面是node版本部署流程笔记:(仅供参考)

node服务这里采用的是express框架:Express - Node.js web application framework

npm install express --save

nsfwjs代码库地址:GitHub - infinitered/nsfwjs: NSFW detection on the client-side via TensorFlow.js

https://github.com/infinitered/nsfwjs

建议:用管理员权限启动cmd

第一步:环境准备

npm install --global windows-build-tools

npm install -g --production windows-build-tools

以上环境准备我个人尝试了多次才执行成功,若遇到失败可重试,不要着急

第二步:依赖安装

npm install nsfwjs

注意:下面这个安装需要翻墙,里面部分引用资源在外网。

大家遇到最多的问题就是这个包安装或者执行失败,可尝试用cnpm

npm install @tensorflow/tfjs-node
@tensorflow/tfjs-node和@tensorflow/tfjs两个包是互斥的,删除node_modules后重试

你可能会用到的包

npm i @tensorflow/tfjs-node-gpu

相关文档:tfjs/README.md at master · tensorflow/tfjs · GitHub

快速删除庞大的node_modules指令:

rd /s /q node_modules

扩展,文档中推荐的另一个模式(sharp)

Output options - sharp - High performance Node.js image processing (pixelplumbing.com)


const getMetadata = async (img) => { const image = await sharp(img).jpeg().metadata(); const { data, info } = await sharp(img) .toFormat('jpeg') .raw() .toBuffer({ resolveWithObject: 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] = data[i * 4 + c] return tf.tensor3d(values, [image.height, image.width, numChannels], 'int32') } 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 getMetadata(req.file.buffer) // const image = await convert(req.file.buffer) const predictions = await _model.classify(image) image.dispose() res.json(predictions) } catch (error) { res.status(400).send(error) } } })

也可以将模型下载到项目中:

模型发布仓库:GitHub - GantMan/nsfw_model: Keras model of NSFW detector

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 14:58:46

Matlab图像拼接7大传统算法原理与工程实现

简介&#xff1a;本资源是面向图像处理研究者与计算机视觉方向研究生的MATLAB图像拼接算法代码合集&#xff0c;聚焦宽视差、大形变场景下的几何配准与结构保持问题&#xff0c;覆盖APAP、AANAP、SPHP、SPW、LPC、REW、TFA等主流传统拼接方法。资源共88个文件&#xff0c;包含3…

作者头像 李华
网站建设 2026/9/5 14:53:50

量化交易工具HaoCurve源码解析:从MATLAB指标计算到策略回测实战

简介&#xff1a;本资源是一款面向科研人员、工程师及MATLAB初学者的轻量级曲线绘制与分析工具——HaoCurve&#xff08;俗称“薅曲线”&#xff09;&#xff0c;聚焦解决实验数据可视化、快速绘图与参数化调整等高频需求。压缩包为161KB的RAR格式&#xff0c;共含3个核心文件&…

作者头像 李华
网站建设 2026/9/5 14:52:53

锂离子电池健康状态预测与容量再生技术链

简介&#xff1a;本资源是一套基于NASA公开锂离子电池老化数据集的完整分析与建模系统&#xff0c;面向电池管理算法研究者、新能源汽车BMS开发工程师及高校电化学/能源系统方向研究生&#xff0c;聚焦解决电池健康状态评估、剩余使用寿命精准估计及容量衰减机理挖掘等核心工程…

作者头像 李华
网站建设 2026/9/5 14:51:50

考研线代强化:分块矩阵求解逆矩阵、齐次方程组与方阵幂综合题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 14:50:56

明股实债与FA乱象:技术创业融资的结构性风险与应对策略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华