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

Tensorflow 通过减少类来提高模型的速度和准确性,tensorflow,machine-learning,computer-vision,Tensorflow,Machine Learning,Computer Vision,我正在Tensorflow Model Zoo的不同预训练模型上进行实验,以解决实时目标检测问题。 我在CPU上运行推理,性能(fps,mAP)低于标准。虽然我理解为什么模型在速度和准确性之间进行权衡,或者反之亦然,但我想知道模型必须检测的类的数量是否与其性能有线性关系。 大多数预先训练过的模型可以检测80多个对象,我只需要这些类的一个子集就可以解决我的问题。基本上,如果我在一个检测到80个对象的模型上进行学习,比如说,只检测到5个对象,那么模型能运行得更快吗?理论上,是的。 实际上,不是。 模

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

理论上,是的。 实际上,不是。 模型的速度(与其他模型一起)由其参数数量决定。理论上,当你只需要预测5个而不是80个类时,你需要的参数就更少了

在实践中,该模型学习了类在其所有参数中的属性。你需要决定,你想用什么重量,不想用什么重量。当然,通过检测哪个权重对最终预测有什么影响,这是可能的。 例如,您可以编写一个自定义损失函数,该函数仅为某些类预测创建损失,但是您需要以这样的方式调整渐变,使其设置的权重(仅用于其他预测)为零

在你这么做之前,你更愿意简单地使用一个更小的模型或者自己创建一个模型

更新

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