空洞卷積 Dilated Convolution

倒地發表於2024-04-08

空洞卷積 Dilated Convolution

通常的卷積操作,除了需要指定輸入輸出通道數,還需要確定卷積核大小 kernei_size、步長 stride、填充大小 padding。

Conv1d(384, 48, kernel_size=3, stride=1, padding=1)

空洞卷積則是在此基礎上增加了 dilation 引數,用於控制卷積核的擴張程度。dilation 值預設為 1,手動將其指定為大於 1 的數會發生很有趣的事。

Conv1d(384, 48, kernel_size=3, stride=1, padding=2, dilation=2)

以上面這個程式碼為例,當 dilation 為 2 時,雖然卷積核大小為 3 不會變,但其元素之間會多出一個空洞,使得卷積核的覆蓋範圍從 3 個元素變為 5 個元素。

顯而易見的,空洞卷積有一大好處:增加摺積核的感受視野。對於那些需要更長上下文資訊的任務,例如音訊處理和語義分割,空洞卷積比常規卷積更有優勢。

通常不要連續使用相同 dilation 的空洞卷積,因為這樣會造成致命的區域性資訊丟失。

參考來源

  • “Dilated Convolution”,https://www.geeksforgeeks.org/dilated-convolution/
  • 玖零猴,“吃透空洞卷積(Dilated Convolutions)”,https://zhuanlan.zhihu.com/p/113285797

相關文章