【发布时间】:2021-07-18 17:20:25
【问题描述】:
我正在使用 CoreML 去除给定图像中的背景,但我遇到了 2 个主要问题。
我在 Xcode 中嵌入的模型是 DeepLabV3.mlmodel。这是返回最终图像的整个类:RemoveBackgroundCoreML_Final.swift,我刚刚将其导入到我的源代码中。它在完成工作方面运作良好。但是,我在第 107 行的这个 swift 类中有一个警告:
let data = Data(buffer: UnsafeBufferPointer(start: &cubeRGB, count: cubeRGB.count))
“UnsafeMutableBufferPointer”的初始化导致缓冲区指针悬空
更糟糕的情况是,根据我在 App Store 中针对某些设备的崩溃日志,这行代码会导致生产应用程序崩溃,即使我自己在开发环境中没有遇到任何崩溃。
这就是我如何从我的代码中调用上述 Swift 类中的 removeBackground 方法:
let finalImage = image.removeBackground(returnResult: .finalImage)
另一个问题是,上面的行返回finalImage,但它也阻塞了应用程序中的主线程,该线程之前刚刚开始运行一些 UI 动画以显示一些进程(我怀疑这可能与缓冲区指针有关)。
我希望任何有 CoreML 或线程经验的人都可以帮助我,我非常感激。如果需要进一步澄清,请询问。提前谢谢你。
【问题讨论】:
标签: swift multithreading pointers buffer coreml