【问题标题】:Keras model in Tensorflow.js: good predictions on images but awful on video?Tensorflow.js 中的 Keras 模型:对图像的预测很好,但对视频的预测很糟糕?
【发布时间】:2020-11-24 21:08:01
【问题描述】:

我已将自定义 Keras 模型转换为适用于 Tensorflow.js 的 layersModel。我通过上传图像并在上传完成后调用预测来测试模型。预测片段:

let img = document.getElementById('image')
let offset = tf.scalar(255)
let tensorImg = tf.browser.fromPixels(img).resizeNearestNeighbor([224,224]).toFloat().expandDims();
let tensorImg_scaled = tensorImg.div(offset)
prediction = await model.predict(tensorImg_scaled).data();

使用此代码,我的预测遵循原始模型,置信度值不断变化,就像它们应该的那样。但是,我的意图是每秒分析网络摄像头提要。每秒调用一个包含此代码的函数:

const video = document.querySelector("video");
let offset = tf.scalar(255)
let tensorImg = tf.browser.fromPixels(video).resizeNearestNeighbor([224,224]).toFloat().expandDims();
let tensorImg_scaled = tensorImg.div(offset)
prediction = await model.predict(tensorImg_scaled).data();

对于视频,我得到了糟糕的结果,其中预测总是类似于 Float32Array(3) [6.18722574920633e-16, 1, 3.5979095258653615e-8] - 中间置信度值始终为 1 或 0,9999。

这可能是什么问题?很少调用视频预测 sn-p(比如每 5 秒一次)也无济于事。

非常感谢任何有关视频预测的帮助 - 这是 uni 的最后一个项目,恐慌开始蔓延......非常感谢!

【问题讨论】:

    标签: tensorflow keras tensorflow.js


    【解决方案1】:

    尽管视频在技术上是由单个帧组成的,但有一个重要的事情是这些帧以帧序列的形式存在。您的模型表现不佳,因为您训练它一次在单个帧上表现良好。在处理视频数据时,您应该使用 CONV(用于空间特征)和 LSTM(用于时间特征)。

    在您的情况下,您可以做的是对 K 个预测实施滚动预测,即,一帧的预测是特定数量预测的平均预测。

    【讨论】:

      猜你喜欢
      • 2016-10-20
      • 2019-06-28
      • 2020-04-19
      • 2020-08-12
      • 2020-09-29
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多