问题描述
编辑:我添加了一个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 (将#修改为@)