前言
SegmentAnything Model (SAM) 是 Meta 开源的分割万物 AI 模型,因笔者主要使用 Vue,因此对官方 Demo 进行了工程迁移工作,这里记录了迁移过程遇到的一些问题。
没有使用多线程加速
官方的 React Demo 项目使用ort-wasm-simd-threaded.wasm
进行多线程加速。
而笔者 Vue 工程的 Demo 却使用的是ort-wasm-simd.wasm
,并没有多线程加速,卡住了渲染进程。
断点ort-wasm-simd.wasm
的 Initiator 流程,发现在wasm-factory.ts
中isMultiThreadSupported()
返回值为false
,进而知道是typeof SharedArrayBuffer === 'undefined'
的原因,导致的多线程加速没有开启的问题。
查看 MDN 了解到,浏览器做了安全限制,需要通过站点 HTTP 消息头让文档处于安全上下文,以启用SharedArrayBuffer
。
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Em