MobileNet vs SqueezeNet vs ResNet50 vs Inception v3 vs VGG16

问题描述 投票:4回答:2

我最近一直在研究将iOS开发人员的机器学习版本与我的应用程序相结合。由于这是我第一次使用任何ML相关的东西,当我开始阅读Apple提供的不同型号描述时,我非常迷失。它们具有相同的目的/描述,唯一的区别是实际文件大小。这些模型之间有什么区别?您如何知道哪一个最适合?

ios machine-learning ios11 coreml
2个回答
8
投票

Apple提供的型号仅用于简单的演示目的。大多数情况下,这些模型不足以在您自己的应用程序中使用。

Apple下载页面上的模型经过专门培训:ImageNet数据集上的图像分类。这意味着他们可以拍摄图像并告诉您图像中的“主要”对象是什么,但前提是它是ImageNet数据集中的1,000个类别之一。

通常,这不是您想要在自己的应用中执行的操作。如果您的应用想要进行图像分类,通常您需要在自己的类别(如食物或汽车或其他)上训练模型。在这种情况下,您可以采用类似Inception-v3(原始版本,而不是Core ML版本)的内容,并在您自己的数据上重新训练它。这为您提供了一个新模型,然后您需要再次转换为Core ML。

如果您的应用程序想要执行除图像分类之外的其他操作,则可以将这些预训练模型用作更大的神经网络结构中的“特征提取器”。但这又涉及到训练自己的模型(通常是从头开始),然后将结果转换为Core ML。

因此,仅在非常具体的用例中 - 使用1,000个ImageNet类别进行图像分类 - 这些Apple提供的模型对您的应用程序非常有用。

如果您确实想要使用这些模型中的任何一种,它们之间的区别在于速度与精度。较小的型号速度最快,但也最不准确。 (在我看来,VGG16不应该在移动设备上使用。它太大了,并不比Inception甚至MobileNet更准确。)


5
投票

SqueezeNets是完全卷积的,并且使用Fire模块,其具有1x1卷积的挤压层,这大大减少了参数,因为它可以限制每层的输入通道的数量。这使得SqueezeNets的延迟极低,而且它们没有密集层。

MobileNets利用深度可分离的卷积,在开始时非常类似于初始塔。这些也减少了参数的数量,从而减少了延迟。 MobileNets还具有有用的模型缩小参数,比您在训练前可以调用的参数,以使其具有您想要的精确尺寸。 Keras实现也可以使用ImageNet预训练的权重。

其他型号都很深,大型号。减少的参数数量/卷积风格不是用于低延迟,而是用于训练非常深的模型的能力。 ResNet引入了层之间的残余连接,这些连接最初被认为是培训非常深的模型的关键。在前面提到的低延迟模型中没有看到这些。

© www.soinside.com 2019 - 2024. All rights reserved.