使用的 TensorFlow.js 版本
- 张量流 1.12.0
- 张量流基础 1.12.0
- 张量流GPU 1.12.0
- 张量流中心 0.2.0
- 张量流js 0.8.0
使用的浏览器版本
- Windows 10 上的 Firefox 65.0 (64-it)
- Windows 10 上的 Microsoft Edge 42.17134.1.0
问题描述
我在 Python 中创建并训练了一个基于 Keras 的 LSTM 双向模型来对视频进行分类。这个模型效果很好,并且以 90+ 的准确度对视频进行分类。但是当我使用 tensorflorjs_converter 工具将此模型转换为 tensoflorjs 模型并在浏览器上使用相同的模型时,该模型总是为任何视频输入抛出相同的输出(前 3 个结果) ——BasketballDunk;概率。0.860,平衡梁;概率。0.088,BodyWeightSquats;概率。0.024
我检查了 LSTM 双向模型的所有输入、它们的形状等,没有发现任何问题。但是无论视频输入如何,来自 LSTM 双向模型的推理仍然是相同的。我确保作为序列发送到 LSTM 模型的每个单独的视频帧都是正确的。(使用 MobileNet 模型识别每一帧,并且它正确,因此得出结论,发送到 LSTM 的帧是完美的)请帮助我识别问题并修复。所有必需的详细信息如下。
(整个模型基于陈先顺(chen0040)->[ https://github.com/chen0040/keras-video-classifier]在这个github存储库中给出的示例)
模型细节:
- 使用 MobileNet 模型提取特征
- 使用 LSTM 双向模型来提取提取的特征并将视频分类为 20 类之一
使用的数据集:
- UCF101 - 动作识别数据集 ( http://crcv.ucf.edu/data/UCF101.php )
Tensorflowjs 转换模型:
- tensorflowjs 转换的模型、示例视频和要测试的 html 文件都在这个驱动器位置作为 zip 文件:[ https://drive.google.com/open?id=1k_4xOPlTdbUJCBPFyT9zmdB3W5lYfuw0]
- 要测试模型,只需解压缩并使用“yarn”构建并使用“yearn watch”运行
- index.html 有测试说明
注意:我已经尝试过 LSTM 模型(单向),同样的问题也与转换后的模型有关。唯一的区别是它产生“台球”作为概率超过 0.95 的最高预测。
重现问题的代码: 代码和测试工件位于此驱动器位置的 zip 文件中 - [ https://drive.google.com/open?id=1k_4xOPlTdbUJCBPFyT9zmdB3W5lYfuw0]