MobileNet vs SqueezeNet vs ResNet50 vs Inception v3 vs VGG16
Posted
技术标签:
【中文标题】MobileNet vs SqueezeNet vs ResNet50 vs Inception v3 vs VGG16【英文标题】: 【发布时间】:2018-02-21 14:06:54 【问题描述】:我最近一直在考虑将面向 ios 开发人员的机器学习版本与我的应用相结合。由于这是我第一次使用任何与 ML 相关的东西,当我开始阅读 Apple 提供的不同型号描述时,我非常迷茫。它们具有相同的用途/描述,唯一的区别是实际文件大小。这些模型之间有什么区别?您怎么知道哪一个最合适?
【问题讨论】:
【参考方案1】:Apple 提供的模型仅用于简单的演示目的。大多数情况下,这些模型不足以在您自己的应用中使用。
Apple 下载页面上的模型针对一个非常特定的目的进行了训练:ImageNet 数据集上的图像分类。这意味着他们可以拍摄图像并告诉您图像中的“主要”对象是什么,但前提是它是 ImageNet 数据集中的 1000 个类别之一。
通常,这不是您想在自己的应用中执行的操作。如果您的应用程序想要进行图像分类,通常您希望根据自己的类别(如食物或汽车等)训练模型。在这种情况下,您可以使用 Inception-v3(原始版本,而不是 Core ML 版本)之类的东西,然后根据您自己的数据重新训练它。这为您提供了一个新模型,然后您需要再次将其转换为 Core ML。
如果您的应用想做图像分类以外的事情,您可以将这些预训练模型用作更大神经网络结构中的“特征提取器”。但这同样涉及训练您自己的模型(通常是从头开始),然后将结果转换为 Core ML。
因此,只有在非常具体的用例(使用 1,000 个 ImageNet 类别的图像分类)中,这些 Apple 提供的模型才对您的应用有用。
如果您确实想使用这些模型中的任何一个,它们之间的区别在于速度与准确性。较小的模型速度最快,但也最不准确。 (在我看来,VGG16 不应该用在移动设备上。它太大了,不比 Inception 甚至 MobileNet 更准确。)
【讨论】:
【参考方案2】:SqueezeNets 是完全卷积的,并使用 Fire 模块,该模块具有 1x1 卷积的压缩层,这大大减少了参数,因为它可以限制每层的输入通道数量。这使得 SqueezeNets 的延迟极低,而且它们没有密集层。
MobileNets 利用深度可分离卷积,与 inception 中的 inception towers 非常相似。这些也减少了参数的数量,从而减少了延迟。 MobileNets 还具有有用的模型收缩参数,您可以在训练之前调用这些参数以使其精确到您想要的大小。 Keras 实现也可以使用 ImageNet 预训练的权重。
其他模型是非常深的大型模型。减少的参数数量/卷积风格不是用于低延迟,而只是用于训练非常深的模型的能力,本质上。 ResNet 引入了层之间的残差连接,这些连接最初被认为是训练非常深的模型的关键。这些在前面提到的低延迟模型中是看不到的。
【讨论】:
以上是关于MobileNet vs SqueezeNet vs ResNet50 vs Inception v3 vs VGG16的主要内容,如果未能解决你的问题,请参考以下文章
MobileNet V12017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applica
MobileNet V12017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applica
轻量级网络 Inception, Pointwise Conv, Group Conv, Depthwise Conv, Bottleneck, Xception, MobileNet, Shuffe