我最近一直在研究如何将iOS开发者的机器学习版本集成到我的应用中。由于这是我第一次接触与机器学习相关的内容,当我开始阅读苹果提供的不同模型描述时,我感到非常迷茫。它们有着相同的目的/描述,唯一的区别在于实际文件的大小。这些模型之间有什么区别?你如何知道哪个最适合?
回答:
苹果提供的模型仅用于简单的演示目的。大多数情况下,这些模型不足以用于你自己的应用。
苹果下载页面上的模型是为一个非常特定的目的训练的:在ImageNet数据集上进行图像分类。这意味着它们可以接收一张图像,并告诉你图像中的“主要”对象是什么,但前提是它必须是ImageNet数据集中1,000个类别中的一个。
通常,这并不是你在自己的应用中想要做的。如果你的应用想要进行图像分类,通常你希望在自己的类别上(如食物或汽车或其他任何东西)训练一个模型。在这种情况下,你可以使用像Inception-v3(原始版本,不是Core ML版本)这样的模型,并在你自己的数据上重新训练它。这将为你提供一个新的模型,然后你需要再次将其转换为Core ML格式。
如果你的应用想要做的事情不是图像分类,你可以将这些预训练模型用作更大神经网络结构中的“特征提取器”。但同样,这涉及到训练你自己的模型(通常是从头开始),然后将结果转换为Core ML格式。
因此,只有在非常特定的用例中——使用1,000个ImageNet类别进行图像分类——这些苹果提供的模型对你的应用才有用。
如果你确实想使用这些模型中的任何一个,它们之间的区别在于速度与准确性之间的权衡。较小的模型速度最快,但准确性也最低。(在我看来,VGG16不应该在移动设备上使用。它实在太大了,而且它的准确性并不比Inception甚至MobileNet高。)