2016-07-22 76 views
0

我正在處理一個項目,該項目將圖像中的對象本地化。我將要採用的方法是基於CS231n-8中的定位算法。如何使用TensorFlow最小化兩個損失?

的網絡結構有兩個優化磁頭,分類頭和迴歸頭。培訓網絡時,我怎樣才能最小化他們?

我有一個想法,總結他們都爲一個損失。但問題是分類損失是softmax損失和迴歸損失是l2損失,這意味着他們有不同的範圍。我不認爲這是最好的方式。

回答

2

這取決於你的網絡狀況。

如果您的網絡只能提取特徵[您正在使用從其他網絡保存的權重],則可以將此權重設置爲常量,然後分別訓練兩個分類頭,因爲梯度不會流動槽常數。

如果你不使用權從預訓練模型,你

  1. 必須培養網絡提取特徵:因此使用分類頭列車網絡,讓從分類梯度流前往第一個卷積濾波器。通過這種方式,您的網絡現在可以組合提取的功能對對象進行分類。
  2. 轉換爲常數張量卷積濾波器的教訓權重和分類頭和訓練迴歸頭。

迴歸頭將學會將從卷積層中提取的特徵進行組合以適應其參數,以便最小化L2損失。

鉈; DR:

  1. 訓練網絡用於分類第一。
  2. 轉換每學參數恆定的張量,使用graph_util.convert_variables_to_constants作爲「freeze_graph`劇本拿給。
  3. 訓練迴歸頭。
+0

太好了!感謝您的回答。我可以再問一個問題:如何在訓練迴歸頭時代表「背景」課?我現在使用零。有沒有更好的辦法? –

+2

你正在訓練迴歸頭:你不需要背景課。你的火車組包含了對象邊界框的位置,所以你將學會迴歸這些座標,而不是其他的。背景是這些座標之外的所有內容。 我只在分類頭中使用背景類,在訓練時未使用(我只顯示包含對象的圖像),但在網絡以本地化模式運行時使用。如果我用迴歸頭預測一些座標,但分類頭告訴我這是背景,我跳過位置 – nessuno

+0

這很有道理。謝謝。 –

相關問題