作者:jiazi--- | 来源:互联网 | 2023-01-30 15:50
我尝试了最近在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)
1> Brad Larson..:
为了扩展Matusalem的答案,当使用图像分类网络时,您只能在其中一个训练过的类中获得结果.在这种情况下,您似乎正在使用Apple 提供的预先训练的ResNet50 Core ML模型.
与您在那里找到的许多其他网络一样,该图像分类网络已经在ImageNet大规模视觉识别挑战2012数据集上进行了培训,通常称为ImageNet或ILSVRC2012.该数据集成为2012年竞赛后卷积神经网络设计的基准,因此您将找到许多使用它的预训练网络.它有1000种可以在图像中识别的东西,这里有完整的标签列表.您会注意到"globe"不在其中,因此网络将提供与其训练过的最接近的匹配类别.
如果您以前从未见过地球仪,或者甚至没有看到过"地球仪"这个词,那么您能识别一个吗?这些网络可以以令人惊讶的方式进行推广,但如果它们甚至没有您想要分类的类别,那么它们将无法提供您想要的结果.
ImageNet数据集是一个有趣的起点,但可能不是最适合实际使用的.它有一个奇怪的类分布,类似于200种犬种,但没有人类.它可以是预训练网络的一个很好的起点,然后使用传输学习将该网络优化为您的特定数据集,但您很可能希望训练自己的特定于应用程序的网络.那是另一个话题.