0

我无法摆脱使用 Core ML 图像识别的程序中的错误!

我的代码基本上是经过调试的,并且可以处理大量文件,但是在 421 个文件上会发生 EXC_BAD_ACCESS 错误(我更改了处理文件的顺序以消除文件损坏的问题)我已经将所有潜在危险的对象转换为单例避免泄漏,调试和整理sqlite数据库,使用推荐的generateCGImagesAsynchronously运算符重写代码从视频文件中获取图片,所有内容都清理干净并且可以正常工作,但仍然出现错误直接提取文本对象的代码从网络上稍微升级了一下,可能是有问题吧?,求助!

CreateAltModel3.shared.handler = VNImageRequestHandler(ciImage: inputImage!)
        CreateAltModel3.shared.request = VNCoreMLRequest(model: CreateAltModel3.shared.visionModel!) { [weak self] req3, error in
            output_handler(req3.results) }
        
        do {try CreateAltModel3.shared.handler!.perform([CreateAltModel3.shared.request!])} catch {print ("hadler3 error - request3")}

这是 output_handler 函数的代码

            func output_handler(_ results: [Any]?) {
        guard let results = results as? [VNClassificationObservation]
            else {return}
        for class1 in results {
            if (class1.confidence > 0.05) {  // Only show greater than 5%
                let fileID = filesArray[currentFileIndex]?.index
                if percentRecogn <= Int(round(class1.confidence*100)) {
                    findKeyStr = (class1.identifier + " " + String(round(class1.confidence*100)) + "%")
                    resultKeyStr.0 = Int64(fr)
                    let comma = (resultKeyStr.1 == "") ? "" : ", "
                    let cutDubbing = (resultKeyStr.1 == class1.identifier) ? resultKeyStr.1 : resultKeyStr.1 + comma + class1.identifier
                    resultKeyStr.1 = cutDubbing
                    resultKeyStr.2 = Int64(fileID!)
                }
            }
        }
    }

但据我所知,退出此功能后会发生错误

在下一行代码 在此处输入图像描述

更多的代码传播没有意义,因为我只会用额外的信息混淆你,我只会补充一点,这段代码在全局流中循环工作,并按预期将信息输出到主流中的标签和 ImageView,以及所有内容似乎已调试,但我无法理解错误的性质,可能与流有关,但甚至不知道在哪里挖掘)

4

1 回答 1

2

您不能(或至少不应该)一次使用VNCoreMLRequest多个线程中的一个。

于 2020-12-03T10:38:28.970 回答