我不是ML专家,对此我只知道一点背景。我知道有一些技术可以减少神经网络的大小,比如蒸馏和修剪。但我不知道如何有效地执行这些技术。
现在我需要解决一个非常实际的问题。我想把人脸识别模型FaceNet发送到移动设备上。在识别精度和性能+大小之间可能存在权衡。我不知道哪种型号最适合我的要求。我认为我需要测试许多大小的模型,并找出哪一个是最好的经验。要做到这一点,我应该获得许多尺寸的模型,这是通过压缩预先培训的FaceNet在其网站上获得的。例如,30 of版本的FaceNet,40 of版本的FaceNet等等。
然而,模型压缩并不是免费的,而且成本很高。我担心我会做一些非常愚蠢和昂贵的事情。建议的方法是什么?对于非ML专家,这个问题有什么共同的解决方案吗?
发布于 2022-06-23 08:13:39
网络“压缩”不像滑块,你可以从慢/准确到快速/不精确的任何地方移动。
从您的初始模型开始,您可以应用一些技术,这些技术可能减少或不减少网络的大小,也可能降低或不降低准确性。例如,将权重从float32转换到float16肯定会使网络的内存需求减少一半,但也会带来精度上的小幅下降,而且并不是所有设备都支持它。
我的建议是:从基本模型开始,并使用它进行一些测试。了解您离目标FPS有多远,以及您的应用程序的大小,然后决定哪种方法更有意义达到您心目中的目标。
既然您说您不是ML专家,我认为这类任务(至少据我所知)需要对这个主题和实验进行一定的研究,我将从一个开放源码的解决方案开始,比如https://tvm.apache.org/。
https://stackoverflow.com/questions/72726549
复制相似问题