如何解决通过减少类来提高模型的速度和准确性
我正在尝试使用Tensorflow Model Zoo中的不同预训练模型来解决实时对象检测问题。 我在CPU上运行推理,性能(fps,mAP)低于标准水平。虽然我了解了为什么要在速度和速度之间权衡模型的准确性,反之亦然,但我想知道模型必须检测的类数是否与其性能成线性关系。 大多数经过预训练的模型可以检测80多个对象,而对于我的问题,我只需要这些类的子集即可。基本上,如果我在一个模型上进行转移学习,该模型可以检测到80个对象,可以说只有5个对象,那么该模型可以运行得更快吗?
解决方法
从理论上讲,是的。 实际上,不是。 模型的速度(与其他模型一样)由其参数数量确定。从理论上讲,当您只需要预测5个类别而不是80个类别时,就需要较少的参数。
实际上,该模型学习了所有参数中类的属性。您需要确定要使用的权重,而不是要使用的权重。可以肯定的是,通过检测哪个权重对最终预测有影响,这是有可能的。 例如,您可以编写一个自定义损失函数,该函数仅对某些类别的预测产生损失,但随后您需要以这种方式调整梯度,即仅将其用于其他预测的权重设置为零。
在执行此操作之前,您希望只使用一个较小的模型或自己创建一个模型。
更新
您可以做的是至少对其进行一点改进。 Softmax是一个计算密集型激活函数,因此减少最后一层的权重可能已经可以稍微提高速度。因此,使用模型的所有层(最后一层除外),并用5个神经元的softmax层替换(对于每个类别1)。这将至少减轻输出层的权重,并可能已经加快了推理速度
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。