Core ML iOS 11 无法正确识别图像
Posted
技术标签:
【中文标题】Core ML iOS 11 无法正确识别图像【英文标题】:Core ML iOS 11 not recognizing images properly 【发布时间】:2017-12-07 10:48:54 【问题描述】:我尝试了最近在 ios 中引入的 Core ML 来识别和分类图像。问题是,它没有为发送的图像提供正确的结果。
如果我发送地球图像(Globe),它会给我这个类作为气泡。下面是我使用的代码,
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)
【问题讨论】:
IN 除了接受的答案之外,还有一件事要记住 - 在 CoreML 中,如果没有应用程序更新,就无法更新经过训练的模型。我丢失了一个关于 CoreML 不是 的博客的链接,但我找到了一个很好的资源,可以使用 CoreML 工具作为这个 repo 的自述文件:github.com/hollance/YOLO-CoreML-MPSNNGraph/blob/master/… 【参考方案1】:为了扩展 Matusalem 的答案,当使用图像分类网络时,您只能在它所针对的一个类中获得结果。在这种情况下,您似乎正在使用 Apple has made available for download 的预训练 ResNet50 Core ML 模型。
该图像分类网络与您将在其中找到的许多其他网络一样,已经在 ImageNet 大规模视觉识别挑战赛 2012 数据集(通常称为 ImageNet 或 ILSVRC2012)上进行了训练。该数据集在 2012 年竞赛之后成为卷积神经网络设计的基准,因此您会发现许多使用它的预训练网络。它有 1000 种可以在图像中识别的事物类别,以及标签 here 的完整列表。您会注意到“地球”不在其中,因此该网络将提供与其训练过的最接近的匹配类别。
如果您以前从未见过地球仪,甚至没有接触过“地球仪”这个词,您能认出其中的一个吗?这些网络可以以令人惊讶的方式进行概括,但如果它们甚至没有您想要分类的类别,它们将无法提供您想要的结果。
ImageNet 数据集是一个有趣的起点,但可能不是最适合实际使用的。它的类别分布很奇怪,大约有 200 种狗,但没有人类。它可能是预训练网络的一个很好的起点,然后使用迁移学习将该网络细化为您的特定数据集,但您很可能希望训练自己的特定于应用程序的网络。那完全是另一个话题了。
【讨论】:
布拉德,出于某种原因,你的回答总是让我微笑!【参考方案2】:Core ML 只能用于对已经训练好的模型进行推理。您将不得不使用其他一些工具来训练您的模型,然后使用 Core ML 工具将其转换为 Core ML。您可以在文档中找到支持的第三方机器学习工具和格式:
https://developer.apple.com/documentation/coreml/converting_trained_models_to_core_ml
【讨论】:
那么就没有办法训练现有的机器学习模型了吗? 不使用 Core ML。 Core ML 只能使用现有的训练模型。它是一种用于设备推理的快速框架。以上是关于Core ML iOS 11 无法正确识别图像的主要内容,如果未能解决你的问题,请参考以下文章
MLKit 是一个强大易用的工具包。通过 ML Kit 您可以很轻松的实现文字识别条码识别图像标记人脸检测对象检测等功能
MLKit 是一个强大易用的工具包。通过 ML Kit 您可以很轻松的实现文字识别条码识别图像标记人脸检测对象检测等功能