2016-10-02 184 views
14

Keras可以處理不同大小的輸入圖像嗎?例如,在完全卷積神經網絡中,輸入圖像可以具有任何大小。但是,當我們通過Keras創建網絡時,我們需要指定輸入形狀。因此,如何在不將輸入圖像調整爲相同尺寸的情況下使用Keras處理不同的輸入尺寸?謝謝你的幫助。Can Keras可以處理不同大小的輸入圖像嗎?

回答

9

使用相同的計算內核實現任意大小的輸入數組可能會帶來許多挑戰 - 例如,在GPU上,您需要知道需要預留多大的緩衝區,並且更加弱化展開循環的次數等。這是Keras需要不斷輸入形狀的主要原因,可變大小的輸入太難處理。

在NLP中處理可變長度的序列(如句子)時更常出現這種情況。常用的方法是在上設置大小上限(和作物長度較長的序列),然後用填充這個序列的零到這個大小。

(也可以包括屏蔽零個值跳過的填充區域計算,除了在Keras卷積層可能仍然不支持蒙面的投入......)

我不知道如果3D數據結構,填充的開銷並不高 - 如果你開始出現內存錯誤,最簡單的解決方法是減少批量大小。讓我們知道您在圖像上應用這個技巧的經驗吧!

16

是的。 只需將您的輸入形狀更改爲shape =(n_channels,,)。 其中,n_channels是輸入圖像中通道的數量。

我使用Theano後端雖然如此,如果你正在使用tensorflow您可能需要將其更改爲(無,無,n_channels)

你應該使用:

input_shape = (1,無,無)

形狀中沒有一個表示可變維度。請注意,並非所有圖層 都可以使用這種可變尺寸,因爲某些圖層需要 形狀信息(例如拼合)。 https://github.com/fchollet/keras/issues/1920

例如,使用keras的功能API您輸入層將是:

對於RGB數據集

inp = Input(shape=(3,None,None)) 

對於灰色數據集

inp = Input(shape=(1,None,None)) 
+0

嗨MAZ,我我有完全相同的問題。根據你的建議,這是否意味着我可以使用不同大小的圖像進行訓練,同樣,我可以預測不同大小圖像的分割。 – user288609

+0

從未嘗試過使用不同圖像尺寸的訓練,但理想情況下它應該可以工作。不過,在預測中,我已經嘗試過它,它的工作原理(當然是ymmv)。最糟糕的情況下,您將不得不以批量大小相同的圖像進行提供。 – maz

相關問題