簡體   English   中英

Tensorflow nn.conv3d()和max_pool3d

[英]Tensorflow nn.conv3d() and max_pool3d

最近,Tensorflow增加了對3d卷積的支持。 我正在嘗試訓練一些視頻內容。

我有幾個問題:

我的輸入是每幀16幀,3通道.npy文件,所以它們的形狀是: (128, 171, 48) .npy (128, 171, 48)

1) tf.nn.max_pool3d() 文檔 tf.nn.max_pool3d()輸入的形狀應為: Shape [batch, depth, rows, cols, channels] 即使我的npy imgs是48個深度我的頻道維度仍然是3 ,可以這么說嗎?

2)下一個問題與最后一個問題相吻合:我的深度是48還是16?

3) (因為我在這里)批量維度與3d數組相同,對嗎? 圖像就像任何其他圖像一樣,一次處理一個。

需要明確的是:在我的情況下,對於單個圖像批量大小,上面的圖像變暗,我的尺寸為:

[1(batch),16(depth), 171(rows), 128(cols), 3(channels)]

編輯:我把原始輸入大小與池和內核大小混淆了。 也許對這些3D東西的一些一般指導會有所幫助。 我基本上堅持卷積和匯集的維度,正如原始問題中所清楚的那樣。

要回答您的問題,維度應該是(如您所述): [batch_size, depth, H, W, 3]其中depth是您擁有的時間幀數。

例如,具有20幀/秒的5s視頻將具有depth=100


我最好的建議是首先從大約深度學習的視頻CS231n讀幻燈片在這里 (如果你能看到的視頻 ,它甚至更好)。

基本上,3D卷積與2D卷積相同,但具有一個維度。 我們來回顧一下:

1D卷積(例如:文本):

  • 輸入的形狀[batch_size, 10, in_channels]
  • 內核的形狀[3, in_channels, out_channels]
  • 例如:對於文本,這是一個長度為10的句子,其中嵌入了暗淡的in_channels
  • 內核用大小為3的內核遍歷句子(dim 10)

2D卷積(例如:圖像):

  • 輸入的形狀[batch_size, 10, 10, in_channels]
  • 內核的形狀[3, 3, in_channels, out_channels]
  • 例如:大小為10x10的RGB圖像, in_channels=3
  • 內核使用大小為3的內核遍歷圖像(昏暗10x10)
  • 內核是在圖像上滑動的正方形

3D卷積(例如:視頻)

  • 輸入的形狀[batch_size, T, 10, 10, in_channels]
  • 內核的形狀[T_kernel, 3, 3, in_channels, out_channels]
  • 例如: T=100幀的視頻,大小為10x10的圖像, in_channels=3
  • 內核遍歷視頻(昏暗的100x10x10),內核大小為T_kernel (例如: T_kernel=10
  • 內核就像一個立方體,滑過視頻的“立方體”(時間* W * H)

卷積的目標是減少由於數據冗余而導致的參數數量。 對於圖像,您可以在左上角3x3框和右下角3x3框中提取相同的基本功能。

對於視頻,這是相同的。 您可以從圖像的3x3框中提取信息,但是在一個時間范圍內(例如:10幀)。 結果將在圖像維度中具有3x3的感知域,並且在時間維度上具有10幀。

暫無
暫無

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

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