为了账号安全,请及时绑定邮箱和手机立即绑定

在电子中使用张量流.js的posenet

在电子中使用张量流.js的posenet

慕田峪9158850 2022-08-27 15:25:42
我正在尝试在电子应用程序中使用posenet MobileNetV1网络。我希望能够从文件系统中读取图像(无论它是png还是jpg都没关系),并通过网络运行它。到目前为止,我做了什么:我正在使用以下模块:import * as posenet from '@tensorflow-models/posenet';var imageToBase64 = require('image-to-base64');var toUint8Array = require('base64-to-uint8array')并通过以下方式初始化网络:var net = posenet.load();为了读取图像,我将其转换为base64而不是Uint8Array,而不是使用它们来创建对象 ,这符合ImageData的定义。{data: bytes, width: width, height: height}一切都在运行,但百分比的结果非常低:{  score: 0.002851587634615819,  keypoints: [    { score: 0.0007664567674510181, part: 'nose', position: [Object] },    {      score: 0.0010295170359313488,      part: 'leftEye',      position: [Object]    },    {      score: 0.0006740405224263668,      part: 'rightEye',      position: [Object]    },请注意,将来我打算构建这个应用程序,所以像这样的模块是不好的,因为它不能很好地构建。Canvas如果有人能给我一个工作poc,那就太好了,因为我已经为此工作了很长时间。
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

电子有两个独立的上下文;一个可以被视为服务器端上下文的上下文,称为主上下文和呈现器上下文,其中调用浏览器及其脚本。虽然这个问题不够精确,但它试图在电子的主要上下文中执行posenet,这可以进行比较,就好像有人试图在nodejs中运行此代码一样。


主渲染器中的 posenet


const data = Buffer.from(base64str, 'base64')

const t = tf.node.decodeImage(data)

const net = await posenet.load()

const poses = net.estimateMultiplePoses(t, {

      flipHorizontal: false,

      maxDetections: 2,

      scoreThreshold: 0.6,

      nmsRadius: 20})

  })

  // do whatever with the poses

来自浏览器执行的脚本的posenet


const im = new Image()

im.src = base64str

const net = await posenet.load()

im.onload = async() => {

 const poses = await net.estimateMultiplePoses(im, {

      flipHorizontal: false,

      maxDetections: 2,

      scoreThreshold: 0.6,

      nmsRadius: 20})

  })

  // do whatever with the poses

}


查看完整回答
反对 回复 2022-08-27
?
MYYA

TA贡献1868条经验 获得超4个赞

即使您复制了结构,也许PoseNet正在检查对象是否属于某个类,除非您实际创建ImageData对象然后设置字段,否则它不会是。这就是我对它为什么不喜欢它的猜测。

您是否尝试过:

let clamped = Uint8ClampedArray.from(someframeBuffer);
let imageData = new ImageData(clamped, width, height);

PoseNet似乎接受ImageData|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement 对象,可以传递给其预测函数。


查看完整回答
反对 回复 2022-08-27
  • 2 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信