在后台模式下使用 Core ML 对用户 activity 进行分类

Classifing user activity using CoreML in background mode

即使应用程序处于后台,我也想始终执行 CoreML 请求。我关注了一篇关于 Activity Classification with Create ML, CoreML3 的文章。它在前台运行良好,但在后台模式下停止工作。如何为此应用程序添加后台支持。当应用程序后台运行时,是否可以使用 CoreML 对用户 activity 进行分类?

作为解决方法,我添加了位置管理器以提供后台支持。位置管理器正在按预期为背景工作。但仍然 activity 分类请求返回 nil。

Activity 使用 Create ML 进行分类: https://medium.com/skafosai/activity-classification-with-create-ml-coreml3-and-skafos-part-2-734f1ea2f6e

最后我找到了一个在后台运行的解决方案。

我遇到了这个问题

Insufficient Permission (to submit GPU work from background)

我将 MLModelConfiguration 配置为 cpuOnly 来解决这个问题。

    let activityModel: MyActivityClassifier = {
    do {
        let config = MLModelConfiguration()
        config.computeUnits = .cpuOnly
        return try MyActivityClassifier(configuration: config)
    } catch {
        print(error)
        fatalError("Couldn't create MyActivityClassifier")
    }
}()