javascript - 使用 Tensorflow JS 执行 mobilenet v2 进行对象检测
问题描述
我使用 Tensorflow 对象检测 API 训练了不同类型的 mobilenet v2 模型,然后将它们转换为 tfjs 并在 Web 中运行它们。似乎这些模型的执行只支持 executeAsync() 方法。我觉得能够使用 execute() 方法将加快推理时间,现在约为 100 毫秒。但是,当我尝试 execute() 方法时,我收到有关某些动态操作的错误。由于我更喜欢速度而不是准确性,我可以做些什么来加快推理时间?或者,是否有其他推荐的对象检测模型可以在网络上实时运行?或者还有什么我应该尝试的?
解决方案
为什么会execute
比 快executeAsync
?异步函数的开销浪费的时间最少,您最多可以增加 0.1-0.3 毫秒
更好的问题是您使用的是哪个 tfjs后端?
cpu
最慢,wasm
启动速度快,但总体上仍然使用 cpu 并且webgl
预热很慢(因为它必须编译 glsl 函数并将权重作为着色器上传),但是当 gpu 可用时总体上推理速度最快
请记住,虽然mobilenetv2是一个轻量级模型,但它已经很老了,性能与最新的轻量级 sota 模型不同
,用于快速和轻量级的对象检测,我最喜欢的是mobilenet v3 head 结合centernet
推荐阅读
- c - 为什么需要针对目标的标准库构建(主机)GCC?
- python - 三个维度的匀称插值返回 Z 点,但结果无效
- reactjs - 无法降低下拉高度
- tsql - 使用 SQL 从字符串数据中提取文本(处理空值)
- reactjs - 使用 highcharts 移除事件监听器
- python - Logistic回归的多个问题(1.所有CV值具有相同的分数,2.分类报告和准确性不匹配)
- flutter - Flutter:创建一个没有默认构造函数的类的新实例并更改一些属性
- amazon-web-services - EMR Presto 6.3.0 未正确利用内存,因此“不同”查询速度较慢
- python - sqlalchemy 过滤少数具有不同数据类型的列
- c# - Selenium:从电子邮件文本字段/文本框中获取字符串