我一直在使用预训练模型,只是想知道所有计算机视觉预训练模型中最快的前向传播模型。我一直在尝试在一次性学习中实现更快的处理,并尝试在单个图像上使用少数模型进行前向传播,结果如下:
- VGG16:4.857 秒
- ResNet50:0.227 秒
- 起始时间:0.135 秒
您能说出目前可用的最快的预训练模型以及上述模型之间的巨大时间消耗差异吗?
我一直在使用预训练模型,只是想知道所有计算机视觉预训练模型中最快的前向传播模型。我一直在尝试在一次性学习中实现更快的处理,并尝试在单个图像上使用少数模型进行前向传播,结果如下:
您能说出目前可用的最快的预训练模型以及上述模型之间的巨大时间消耗差异吗?
答案将取决于您的硬件和您处理的图像等一些因素。此外,我们应该区分您是在训练模式还是推理模式下通过网络进行单次运行。在前者中,附加参数是预先计算和缓存的,并且使用了几个层,例如 dropout,这些层在推理过程中被简单地忽略了。我将假设您只想为单个图像生成单个预测,因此我们正在讨论推理时间。
基本的相关性将是:
在列出了所需的最终推理时间(产生一次通过网络的前向运行所需的时间)中的几个因素后,我猜想 MobileNetV2 可能是最快的预训练模型之一(可在 Keras 中获得)。我们可以从下表中看到,这个网络的内存占用很小,只有 14 兆字节,参数约为 350 万。将其与您的 VGG 测试进行比较,大约 1.38 亿... 40 倍!此外,MobileNetV2 的主要工作层是一个 conv 层——它们本质上是残差网络的聪明和更小的版本。
我包含上面整个表格的原因是为了强调内存占用量小和推理时间快,这是有代价的:低准确度!
如果您计算 top-5 准确度与参数数量(通常与内存)的比率,您可能会在推理时间和性能之间找到一个很好的平衡。