在实现/模型之间重置Tensorflow引擎?

问题描述

编辑:我添加了一个repo以重现该问题: https://github.com/bengfarrell/tf-issue-tester

我有一个单页应用程序,它在2个不同的视图中同时使用Posenet和FaceAPI(https://github.com/justadudewhohacks/face-api.js)。

(在diff演示应用程序中)单独使用时,这两个视图可以完美地工作,但是,只要将模型导入这两个不同的视图组件中,而在同一应用程序中,则会中断。

我的第一个错误提示是警告:

engine.ts:224 webgl backend was already registered. Reusing existing backend factory.
t.registerBackend @ engine.ts:224
(anonymous) @ backend_webgl.ts:2801
engine.ts:224 cpu backend was already registered. Reusing existing backend factory.

但是真正的问题是运行FaceAPI时出现错误:

engine.ts:583 Uncaught (in promise) TypeError: t is not a function
at engine.ts:583
at engine.ts:423
at t.scopedRun (engine.ts:434)
at t.tidy (engine.ts:421)
at l (engine.ts:583)

我正在假设Posenet环境与FaceAPI环境不兼容。理想情况下,我想清理TFJS并从两个组件视图中的每个视图重新开始。

在运行FaceAPI实现之前,我已经查看了文档并尝试运行engine.dispose()engine.disposeVariables(),但是我没有运气。

有人对如何正确清理TFJS使用之间有任何指示吗?我可能还应该问一下ES6导入的策略。也许有些导入方法实际上并没有创建警告所引用的基础工厂。如果没有,我当然可以在其他加载策略上发挥创意,例如动态导入或根据需要将非基于模块的脚本附加到DOM。

供参考,我的进口是:

import {load,getAdjacentKeyPoints} from '@tensorflow-models/posenet';

import {nets,loadFaceLandmarkModel,TinyFaceDetectorOptions,detectSingleFace} from 'face-api.js';

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)