iOS 11的Core ML无法正确识别图像。

3
我尝试了最近在iOS上推出的Core ML来识别和分类图像。问题是,它没有为发送的图像提供正确的结果。
如果我发送一个地球图像(地球仪),它会将其归类为气泡。以下是我使用的代码:
            let model = Resnet50()

            let pixelBuffer: CVPixelBuffer =  (modelImg.pixelBuffer())!

            if let prediction = try? model.prediction(image: pixelBuffer) {
                print( "Found it!! It is a/an \(prediction.classLabel)")
            }

是否可以在现有的Core ML模型(例如Resnet50)基础上,使用自定义用例来训练模型?


1
除了已接受的答案之外,还有一件事需要记住 - 在CoreML中,训练过的模型无法在应用程序更新之前进行更新。我丢失了一篇关于CoreML“不是什么”的博客链接,但我发现使用CoreML工具的好资源是这个存储库的README:https://github.com/hollance/YOLO-CoreML-MPSNNGraph/blob/master/README.markdown - user7014451
2个回答

5
为了详细说明Matusalem的回答,当使用图像分类网络时,您只能得到它训练过的类别中的一个结果。在这种情况下,您似乎正在使用苹果提供的预先训练的ResNet50 Core ML模型,可以下载
像许多其他图像分类网络一样,该网络已经在ImageNet Large Scale Visual Recognition Challenge 2012数据集上进行了训练,通常称为ImageNet或ILSVRC2012。该数据集成为了2012年比赛后卷积神经网络设计的基准,因此您会发现许多预训练的网络都使用它。它有1000个可在图像中识别的物品类别,完整标签列表在这里。您会注意到“地球仪”不在其中,因此该网络将提供与其训练过的最接近的类别。
如果你以前从未见过地球仪,甚至没有接触过“地球仪”这个词,你能够辨认出它吗?这些网络可以以出乎意料的方式进行概括,但是如果它们甚至没有分类你想要分类的内容,它们就无法提供你想要的结果。
ImageNet数据集是一个有趣的起点,但可能不适用于实际应用。它具有奇怪的类分布,例如有大约200个狗品种,但没有人类。它可以成为预训练网络的良好起点,然后使用迁移学习来优化该网络以适应特定数据集,但您最有可能希望训练自己的应用程序特定网络。那是另一个完整的话题。

Brad,你的回答总是让我感到开心! - Roi Mulia

3

那么无法训练现有的机器学习模型了吗? - yaali
不使用Core ML。Core ML只能使用现有的训练模型。它旨在作为一种快速的框架用于设备上的推理。 - Matusalem Marques

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接