1

我正在開發一個uni項目,它需要無標記的相對姿態估計。爲此,我拍攝兩張圖像,並在圖片的某些位置匹配n個要素。從這些點我可以找到這些點之間的矢量,當與距離一起被包括時,可以用來估計相機的新定位。姿態估計中人工神經網絡的適用性

該項目需要在移動設備上進行deplyoable,因此算法需要高效。一個想法,我不得不使它更有效率,將採取這些向量,並將它們放入一個神經網絡,它可以採取向量,並輸出基於輸入的xyz運動向量的估計。

我的問題是如果一個神經網絡適合這種情況,如果充分訓練?如果是這樣,我將如何計算我需要的隱藏單位的數量以及最佳激活函數是什麼?

回答

2

使用神經網絡爲您的應用程序可以很好地工作,但是,我覺得您將需要大量的訓練樣本,以允許網絡推廣。當然,這也取決於你正在處理的姿勢的類型和數量。這聽起來對於我來說,用一些聰明的數學可以直接從輸入向量中導出運動向量 - 如果有機會,你可以想出一種方法來做到這一點(或提供更多的信息,以便其他人可以考慮它),那將是非常受歡迎的,因爲在那種情況下,您將包括關於該任務的先前知識,而不是依靠NN來從數據中學習它。

如果你決定繼續與NN方法,請記住以下幾點:

  1. 將您的數據轉化爲訓練和驗證集。這可以讓你確保網絡不會過度使用。您使用訓練集進行訓練,並使用驗證集上的錯誤確定特定網絡的質量。培訓/驗證的比例取決於您擁有的數據量。一個大的驗證集(例如,50%的數據)將允許關於訓練網絡質量的更精確的結論,但通常您的數據太少而無法承擔。但是,無論如何,我會建議使用至少10%的數據進行驗證。
  2. 至於隱藏單位的數量,經驗法則是每個自由參數,即每個重量,至少有10個訓練樣例。所以假設你有一個有4個輸入,10個隱藏單元和3個輸出單元的3層網絡,其中每個隱藏單元和輸出單元都有額外的偏置權重,你應該有(4 + 1)* 10 +(10+ 1)* 3 = 83個自由參數/權重。一般來說,您應該嘗試隱藏單位的數量以及隱藏層的數量。根據我的經驗,4層網絡(即2個隱藏層)比3層網絡工作得更好,但這取決於問題。由於您還擁有驗證集,因此您可以瞭解哪些網絡體系結構和大小可行,而不必擔心過度配合。
  3. 對於激活功能,您應該使用一些sigmoid function以允許非線性行爲。我喜歡雙曲正切的對稱性,但根據我的經驗,您還可以使用邏輯函數。
+0

感謝這是一個寫得很好的答案。我認爲NN有用的原因是因爲在數據可能出現異常值的情況下,它應該能夠很好地推廣。也只是想知道,在培訓/驗證集方面你考慮多少? – 2013-03-19 11:11:37

+0

正如我所說,這取決於你的問題的難度,即你正在處理什麼樣的姿勢等等。一般來說,你有更多的樣本需要輸入尺寸,但很難給出具體的數字,沒有有關您的問題的更多信息。再次閱讀你的描述,這聽起來像你在靜態場景中移動攝像機,並想要推導攝像機的移動。在那種情況下,直接推導運動的方法將更爲合適,例如來自運動方法的結構。 – ahans 2013-03-19 11:54:50

+0

對,非常感謝。這非常有幫助,並且讓我有很多想法和玩法。 – 2013-03-19 22:37:35