簡體   English   中英

具有動態輸入形狀的 CNN

[英]CNN with a dynamic input shape

大家好!

由於我正在嘗試制作一個將灰度圖像轉換為 rgb 圖像的完全卷積神經網絡,我想知道我是否可以在不同大小的圖像(不同像素和比率)上訓練和測試模型。 通常你只會下采樣或上采樣,這是我不想做的。 我聽說如果我使用完全卷積神經網絡可能是可能的,但我仍然不知道代碼會是什么樣子。 你能幫我一些代碼嗎?

為什么這是個問題?

就像我說的,輸入圖像不應該被下采樣,因為我沒有對任何東西進行分類。 我想生成一個與輸入圖像大小相同的新圖像。 所以應該不會有任何損失。

固定輸入形狀的代碼:

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
...

圖片大小為 28*28px

我認為它可能如何工作:

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(None, None, 1)))
model.add(layers.MaxPooling2D((2, 2)))
...

具有不同尺寸的圖像

  • 圖片 1 = 256*300
  • 圖片2 = 1024*800
  • 圖片 3 = 500*400

是一個將灰度圖像轉換為 rgb 圖像的自動編碼器示例,但是這個具有固定的輸入形狀。

在此處輸入圖像描述

*我使用的是 TF 2.0 Alpha

我發現,卷積神經網絡根本不關心輸入形狀。 它關心的是內核大小、步幅和填充。 例如設置 kernel size = 3, stride = 1, padding = 1 不會改變張量的形狀。 說到pooling,一定要保證,加了padding = 1,這叫half/same paddinghttp://deeplearning.net/software/theano/tutorial/conv_arithmetic.html )。 因此,可以制作一個能夠處理不同尺寸圖像的全卷積自編碼器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM