通过减少类来提高模型的速度和准确性



我正在Tensorflow Model Zoo的不同预训练模型上进行实验,以解决实时对象检测问题。我在CPU上运行推理,性能(fps,mAP(低于标准。虽然我理解为什么模型会权衡准确性和速度,反之亦然,但我想知道模型必须检测的类的数量是否与其性能呈线性关系。大多数预先训练的模型可以检测80多个对象,我只需要这些类的一个子集就可以解决我的问题。基本上,如果我在一个检测到80个对象的模型上进行迁移学习,比如说,只有5个对象,这个模型能运行得更快吗?

理论上是的。在实践中,而不是。一个模型的速度是由它的参数数量决定的(与其他模型一样(。当你只需要预测5个类而不是80个类时,理论上你需要更少的参数。

在实践中,该模型学习了类在其所有参数中的属性。你需要决定,你想使用哪些权重,不想使用哪些。可以肯定的是,通过检测哪个权重对最终预测有影响,这在某种程度上是可能的。例如,您可以编写一个自定义损失函数,该函数只为某些类预测创建损失,但随后您需要调整梯度,使其设置的权重(仅用于其他预测(为零。

在你这样做之前,你宁愿简单地使用一个较小的模型或自己创建一个模型。

更新

你能做的就是至少稍微改进一下。Softmax是一个计算密集的激活函数,因此减少最后一层的权重可能已经稍微提高了速度。因此,使用模型的所有层,除了最后一层,并将其替换为具有5个神经元的softmax层(对于每类1(。这将至少减少输出层中的权重,并可能已经加快的推理速度

最新更新