人工神经网络在姿态估计中的适用性

时间:2013-03-19 04:13:19

标签: machine-learning neural-network feature-detection pose-estimation

我正在研究uni的项目,该项目需要无标记的相对姿态估计。为此,我拍摄了两张图像,并在图片的某些位置匹配n个特征。从这些点我可以找到这些点之间的向量,当包含距离时,可以用来估计相机的新位置。

项目必须在移动设备上可以解决,因此算法需要高效。我必须使其更有效的一个想法是将这些向量并将它们放入神经网络中,该神经网络可以获取向量并基于输入输出xyz运动向量的估计。

我的问题是,如果NN适合这种情况,如果训练有素吗?如果是这样,我将如何计算我需要的隐藏单位数以及最佳激活函数?

1 个答案:

答案 0 :(得分:2)

为您的应用程序使用神经网络可以很好地工作,但是,我觉得您需要大量的训练样本以允许网络概括。当然,这也取决于你正在处理的姿势的类型和数量。听起来,通过一些聪明的数学,可以直接从输入向量导出运动向量 - 如果有任何机会你可以提出一种方法(或提供更多信息,以便其他人可以考虑它)这也是首选,因为在这种情况下,您将包含有关任务的先验知识,而不是依靠NN从数据中学习它。

如果您决定采用NN方法,请记住以下几点:

  1. 将您的数据划分为培训和验证集。这样可以确保网络不会过度配合。您使用训练集进行训练,并使用验证集上的错误确定特定网络的质量。培训/验证的比例取决于您拥有的数据量。一个大的验证集(例如,50%的数据)将允许更精确地得出关于受过训练的网络质量的结论,但通常您只有太少的数据无法承受这一点。但是,无论如何,我建议至少使用10%的数据进行验证。
  2. 关于隐藏单元的数量,经验法则是每个自由参数(即每个权重)具有至少10个训练样例。假设你有一个3层网络,4个输入,10个隐藏单元和3个输出单元,其中每个隐藏单元和输出单元还有一个偏置权重,你将有(4 + 1)* 10 +(10+) 1)* 3 = 83个自由参数/权重。通常,您应该尝试隐藏单位的数量以及隐藏图层的数量。根据我的经验,4层网络(即2个隐藏层)比3层网络工作得更好,但这取决于问题。由于您还拥有验证集,因此您可以了解网络架构和大小的工作原理,而不必担心过度拟合。
  3. 对于激活功能,您应该使用一些sigmoid function来允许非线性行为。我喜欢它的对称性的双曲正切,但根据我的经验,你也可以使用逻辑函数。