3

我試圖複製完全卷積網絡(FCN)的結果使用TensorFlow的語義分割。完全卷積網絡訓練圖像大小

我一直在將訓練圖像輸入到計算圖中。完全卷積網絡使用VOC PASCAL數據集進行訓練。但是,數據集中的訓練圖像大小各不相同。

我只是想問他們是否對訓練圖像進行了預處理,使它們具有相同的尺寸以及如何對圖像進行預處理。如果沒有,他們是否只是將不同大小的圖像批量加入FCN?是否有可能將一批中的不同尺寸的圖像輸入到TensorFlow中的計算圖中?有可能使用隊列輸入而不是佔位符來做到這一點嗎?

+0

喂飼不同尺寸的圖像有什麼問題? – codetiger

+0

如何在張力流中將不同尺寸的圖像放在一個批次中?你的意思是FCN使用不同大小的圖像進行訓練?他們是否使用批次明智的培訓? –

回答

1

將不同大小的圖像輸入到單個輸入批處理中是不可能的。每個批次可以有不定數量的樣品(這通常是批量大小,下面用None表示),但每個樣品必須具有相同的尺寸。

當你訓練一個完全卷積網絡時,你必須訓練它像一個網絡,最後完全連接圖層。 因此,輸入批次中的每個輸入圖像必須具有相同的寬度,高度和深度。調整它們的大小。

唯一的區別是,完全連接的層爲輸入批處理中的每個樣本輸出單個輸出向量(形狀爲[None, num_classes]),完全卷積輸出類的概率圖。

在火車過程中,當輸入圖像的尺寸等於網絡輸入尺寸時,輸出將是形狀爲[None, 1, 1, num_classes]的概率圖。

您可以使用tf.squeeze從輸出張量中移除尺寸1的尺寸,然後像計算完全連接的網絡一樣計算損耗和精度。

在測試時,當您輸入尺寸大於輸入的網絡圖像時,輸出將是尺寸爲[None, n, n, num_classes]的概率圖。

+0

您想詳細說明如何使用tf.squeeze來消除固定圖像大小的限制嗎? – user288609

+0

FCNN輸出具有形狀的地圖(忽略批量大小並考慮輸入一個正方形)[n,n,num_classes]。如果輸入圖像具有網絡預期的空間範圍(寬度和高度)相同的空間範圍(其接受域寬度和高度),則輸出是概率向量,其形狀爲[1,1,num_classes]。 'tf.squeeze'從張量中刪除'1'尺寸,因此你可以從形狀爲[[1,1,num_classes]]的張量變成形狀爲[num_classes]'的張量。這隻有在輸出有1個維度時纔可能,否則你不能移除它們 – nessuno

相關問題