node.js - 带有mobilenet和blazeface的Tensorflow js服务器端分类
问题描述
我正在尝试将 tensorflowjs 与已经构建的模型一起使用,一开始我遇到了 blazeface 的问题,因为它没有在照片上找到人脸(只显示人脸),所以我正在尝试使用 mobilenet 和同样的问题结果是无意义的。非常漂亮,它来自我发送的图像格式。
所以这是我的代码:
module.exports = {
blazeface: require('@tensorflow-models/blazeface'),
mobilenet: require('@tensorflow-models/mobilenet'),
tf: require("@tensorflow/tfjs-node"),
fs: require("fs"),
sizeOf: require("image-size"),
async structureData(imageLink) {
let data = this.fs.readFileSync(imageLink);//return a buffer
const dimension = await this.sizeOf(imageLink);
const tensorflowImage = {
data: data,
width: dimension.width,
height: dimension.height
};
console.log(tensorflowImage)
return tensorflowImage;
},
async detectFace(imageLink) {
let image = await this.structureData(imageLink);
const model = await this./*blazeface*/mobilenet.load();
const returnTensors = false;
const predictions = await model.classify(image);
console.log(predictions);
}
}
所以这段代码不是错误的结果,但结果是这个=>
[
{
className: 'theater curtain, theatre curtain',
probability: 0.03815646469593048
},
{
className: 'web site, website, internet site, site',
probability: 0.0255243219435215
},
{ className: 'matchstick', probability: 0.02520526386797428 }
]
以及任何照片(这里是白色背景中的香蕉)。所以我很确定我需要重建 structureData 函数,但我不知道如何......我也用 uint32array 尝试过
async structureData(imageLink) {
let data = this.fs.readFileSync(imageLink);
data = new Uint32Array(data);
const dimension = await this.sizeOf(imageLink);
const tensorflowImage = {
data: data,
width: dimension.width,
height: dimension.height
};
console.log(tensorflowImage)
return tensorflowImage;
},
但我收到了这个错误。
Error: pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was Object
请记住我正在使用节点,所以我不能(或认为我不能)我们 HTMLimageelement
非常感谢 :)
解决方案
通过使用张量、视频或图像元素作为模型的参数,它将能够进行分类。
let data = this.fs.readFileSync(imageLink);
tensor = tf.node.decodeImage(data, 3)
await model.classify(tensor)
推荐阅读
- react-navigation - React Navigation:TabNavigator:如何在滑动事件或从一个选项卡到另一个选项卡的过渡状态之间获取回调?
- python - python imageio图像大小而不将图像加载到内存
- c# - c# regex 用不同的字符串替换所有模式
- hadoop - 蜂巢直线是否支持将文件下载/移动到客户端
- solace - 如何从 Solace 设备进行远程登录
- javascript - 如果数字是 JS 中的回文,则最佳验证
- android - 我收到“无法解析符号‘resid’和‘show()’的错误:”
- android - 使用 Play 应用签名进行 Android 应用转移
- c - 为什么将函数插入示例代码后出现错误?
- apache-kafka - 我可以将多个转换器/处理器附加到 Apache Kafka 中的单个流吗