我有一个 ML 模型,它采用 X
秒来检测训练它的图像中的对象。这是否意味着至少需要 X
或 X+Y
训练期间每个图像的秒数? 您能提供详细的见解吗?
例如,假设SSD512模型在硬件平台上的训练速度为每秒30张图像,这是否意味着我将能够实现至少(如果不是更多)每秒30张图像的推理速度?
问题并不局限于神经网络模型。通用的见解值得赞赏。在我的例子中,我正在处理级联分类器。我正在加载cascade.xml 训练模型来检测对象。我想知道训练图像所需的时间与加载训练模型后检测对象所需的时间之间的关系。
最佳答案
由于未说明,我假设您指的是神经网络 ML 模型。 训练过程可以看作两个步骤:运行网络来检测对象并更新权重以最小化损失函数。
- 运行网络:在训练时,反向传播部分本质上是运行网络,就像使用当前网络权重检测对象一样,正如您所说,这需要 X 时间。它应该与训练后使用时相同,例如在测试数据集上(为了简单起见,我忽略了通常使用的小批量学习,这可能会改变事情)。
- 更新权重:训练中的这一部分是通过完成反向传播算法来完成的,该算法告诉您更改权重将如何影响您的检测性能(即降低当前图像的损失函数),然后通常是随机梯度下降迭代完成,更新权重。这就是你所说的Y,实际上它可能比X更大。
这两个部分是针对训练过程中的每个图像(更常见的是每个小批量)完成的。
更新:您在回复中表示您正在寻找通用算法的答案。这是一个有趣的问题!当查看训练任务时,你总是需要学习某种权重W,它是训练过程的结果,也是所学内容的本质。更新需要使学习的函数变得更好,这听起来比简单地运行该函数更难。我真的不知道有什么算法(当然不是常用的算法)可以比每个图像的运行时间更少的训练时间,但这在理论上是可能的。
关于machine-learning - 检测图像中的对象所需的时间与训练图像之间有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47843476/