使用 Tensorflow JS 执行 mobilenet v2 进行对象检测
Execution of mobilenet v2 for object detection with Tensorflow JS
我使用 Tensorflow 对象检测 API 训练了不同类型的 mobilenet v2 模型,然后将它们转换为 tfjs 并 运行 在网络中。
这些模型的执行好像只支持executeAsync()方法。
我觉得能够使用 execute() 方法会加快推理时间,现在是 ~100ms。
但是,当我尝试 execute() 方法时,我收到有关某些动态操作的错误。
由于我更喜欢速度而不是准确性,我可以做些什么来加快推理时间吗?或者,是否有其他推荐的对象检测模型可以在网络上实时 运行?或者还有什么我应该尝试的吗?
为什么 execute
比 executeAsync
快?异步函数的开销浪费的时间最少,您最多可以获得 0.1-0.3 毫秒的时间
更好的问题是您使用的是哪个 tfjs 后端?
cpu
最慢,wasm
启动快,但总体上仍然使用 cpu 并且 webgl
预热缓慢(因为它必须编译 glsl 函数并上传权重作为着色器), 但在 gpu 可用时具有整体最快的推理
请记住,虽然 mobilenetv2 是一个轻量级模型,但它很旧并且性能与最新的轻量级 sota 模型不同
对于快速和轻量级的对象检测,我最喜欢的是 mobilenet v3 head 结合 centernet
我使用 Tensorflow 对象检测 API 训练了不同类型的 mobilenet v2 模型,然后将它们转换为 tfjs 并 运行 在网络中。 这些模型的执行好像只支持executeAsync()方法。 我觉得能够使用 execute() 方法会加快推理时间,现在是 ~100ms。 但是,当我尝试 execute() 方法时,我收到有关某些动态操作的错误。 由于我更喜欢速度而不是准确性,我可以做些什么来加快推理时间吗?或者,是否有其他推荐的对象检测模型可以在网络上实时 运行?或者还有什么我应该尝试的吗?
为什么 execute
比 executeAsync
快?异步函数的开销浪费的时间最少,您最多可以获得 0.1-0.3 毫秒的时间
更好的问题是您使用的是哪个 tfjs 后端?
cpu
最慢,wasm
启动快,但总体上仍然使用 cpu 并且 webgl
预热缓慢(因为它必须编译 glsl 函数并上传权重作为着色器), 但在 gpu 可用时具有整体最快的推理
请记住,虽然 mobilenetv2 是一个轻量级模型,但它很旧并且性能与最新的轻量级 sota 模型不同
对于快速和轻量级的对象检测,我最喜欢的是 mobilenet v3 head 结合 centernet