减小使用 turicreate 创建的半精度 Core ML 模型的大小

Posted

技术标签:

【中文标题】减小使用 turicreate 创建的半精度 Core ML 模型的大小【英文标题】:Reduce size of a half precision Core ML model created with turicreate 【发布时间】:2018-09-07 16:57:20 【问题描述】:

我需要将 CoreML 模型压缩到 =Apple's Documentation,我已将模型转换为半精度模型(这现在也与 coremltools 存在问题)。我需要剃掉〜4 MB。不能下载模型。

最初为 63.5 MB 半精度转换后为 31.8 MB 压缩后为 28.9 MB

我可以尝试使用其他任何技术或方法来缩小它吗?

【问题讨论】:

【参考方案1】:

我要做的第一件事是尝试使用 Turi Create 中的“sqeezenet”模型选项创建此模型,而不是您现在使用的 ResNet50。 SqueezeNet 会给出类似的结果(可能稍微差一点),但模型总共只有大约 4 MB。

【讨论】:

我很抱歉,但我没有指定这是一个对象检测模型,而不是图像分类模型。 Turi 用于对象检测的唯一选择是 darknet-yolo。我会更新问题。 啊,明白了。我知道的使模型更易于压缩的唯一其他方法是量化(16 位)权重,以便在 mlmodel 文件中只使用有限数量的不同 16 位值。这样 zip 会在数据中看到更多的模式,并有更多的机会来压缩它们。目前无法自动执行此操作,因此您必须编写代码来加载 mlmodel、量化权重并编写新的 mlmodel 输出文件。这种方法的准确性也可能会变差。 哦,好吧。在高层次上,我明白你在说什么。我查看了 coremltools 的源代码,使用实际转换删除的函数超出了我的范围。有什么建议可以解决这个问题吗?我可能会考虑在 github 项目上创建一个问题。

以上是关于减小使用 turicreate 创建的半精度 Core ML 模型的大小的主要内容,如果未能解决你的问题,请参考以下文章

turicreate (turicreate-5.0b2) 中的对象检测返回空预测数组

使用 GPU 在 colab 上使用 Turicreate 训练对象检测模型

无法使用 turicreate

SQL Server 地理:减小 WKT 文本的大小(小数精度)

Android中的半透明状态栏

无法在我的 Windows 10 上安装“Turicreate”