原文連結
代碼與資料集github網址
Poma, X. S., Riba, E., & Sappa, A. (2020). Dense extreme inception network: Towards a robust cnn model for edge detection. In Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (pp. 1923-1932).
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL61EROVTRE1keRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1MDO3ETN0YTMyEzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
文章目錄
- 1. 摘要
- 2. 模型
-
- 2.1 DexiNed Architecture
- 2.2 Upsampling Block
- 2.3 損失函數
- 3. 實驗準備步驟
-
- 3.1 資料集:Barcelona Images for Perceptual Edge Detection (BIPED)
- 3.2 實驗細節
- 3.3 評價名額
- 4. 實驗結果
-
- 4.1 三種不同的上采樣方法:
- 4.2 融合 (DexiNed-f) 和平均 (DexiNed-a) 邊緣圖定量比較
- 4.3 在其它資料集上的比較
- 5. 代碼
1. 摘要
-
貢獻1:受HED (Holistically-Nested Edge Detection) 和
Xception的啟發,提出一個用于生成人眼可能看到的薄邊緣圖的模型DexiNed: Dense Extreme
Inception Network for Edge Detection,用于任何邊緣檢測任務,無需經過長時間訓練或微調,從 DexiNed 預測的邊緣在大多數情況下都比最先進的結果要好,
-
貢獻2:貢獻了一個資料集BIPED:Barcelona Images for Perceptual Edge
Detection,精心标注,相關SOTA模型在此資料集上測試對比。
【論文閱讀】Dense Extreme Inception Network: Towards a Robust CNN Model for Edge Detection(2020)1. 摘要2. 模型3. 實驗準備步驟4. 實驗結果5. 代碼
2. 模型
DexiNed 可以看作是兩個子網絡:
- 密集極端初始網絡(Dexi)
- 上采樣塊(UB)
Dexi 的輸入的是 RGB 圖像,而 UB 則使用 Dexi每個塊輸出的特征圖作為輸入。
2.1 DexiNed Architecture
DexiNed它由一個編碼器組成,該編碼器具有 6 個受 xception 網絡啟發的輸出塊。
網絡在每個主要塊上輸出特征圖,然後使用第 2.2 節中定義的上采樣塊生成中間邊緣圖,由上采樣塊産生的所有邊緣圖都被連接配接起來,送到網絡最末端的學習濾波器堆棧,并産生融合邊緣圖。所有的上采樣子產品沒有共享參數。
藍色塊由兩個卷積層的堆棧組成,核心大小為 3 × 3,然後是批量歸一化和 ReLU 作為激活函數(隻有最後一個子塊中的最後一個卷積沒有這樣的激活)。最大池由 3 × 3 核心和步長 2 設定。由于架構遵循多尺度學習,就像在 HED 中一樣,遵循上采樣過程(灰色的水準塊)
盡管 DexiNed 的靈感來自 xception,但相似之處僅在于主要塊和連接配接的結構。 主要差別詳述如下:
- 在 xception 中使用可分離卷積,而 DexiNed 使用标準卷積。
- 由于輸出是 2D 邊緣圖,是以存在“非出口流”,而是在塊 5 的末尾添加了另一個塊。 該塊有 256 個過濾器,并且在塊 5 中沒有 maxpooling 運算符。
- 在塊 4 和塊 5 中,設定了 512 個過濾器而不是 728 個過濾器。 主要塊的分離是通過圖頂部繪制的塊連接配接(綠色矩形)完成的。
- 關于跳躍連接配接,在 xception 中有一種連接配接,而在 DexiNed 中有兩種類型的連接配接,參見圖頂部和底部的綠色矩形。
由于執行了許多卷積,每個深度塊都會丢失重要的邊緣特征,而隻有一個主連接配接是不夠的,從第四個卷積層開始,邊緣特征損失更加混亂。 是以,從塊 3 開始,每個子塊的輸出都使用邊連接配接(圖中的橙色方塊)進行平均。
- i) 如圖所示,在最大池化操作之後,與主連接配接求和之前,邊連接配接為設定為平均每個子塊輸出(見綠色矩形,底部);
- ii) 從最大池,塊 2,邊緣連接配接饋送塊 3、4 和 5 中的子塊,但是,6 中的子塊僅從塊 5 輸出饋送。
2.2 Upsampling Block
DexiNed 旨在産生細邊緣,以增強預測邊緣圖的可視化。 DexiNed 用于邊緣細化的關鍵元件之一是上采樣塊,如圖所示,來自 Dexi 塊的每個輸出都饋送到 UB。
UB 由條件堆疊子塊組成。 每個子塊有 2 層,一層是卷積層,另一層是反卷積層;有兩種類型的子塊:
- 第一個子塊(sub-block1)是從Dexi子產品或子塊2饋入的; 它僅在特征圖和真值圖之間的比例差等于 2 時使用。sub-block1設定如下:卷積層的核大小1×1; 後跟一個 ReLU 激活函數; deconv 層或轉置卷積的核心大小 s × s,其中 s 是輸入特征圖的尺度級别; 兩層都傳回一個過濾器,最後一層給出與 GT 大小相同的特征圖。 最後一個 conv 層沒有激活函數。
- 當差異大于 2 時,考慮另一個子塊(子塊 2)。疊代該子塊,直到特征圖比例相對于 GT 達到 2。subblock2 的設定與 sub-block1 類似,隻是過濾器的數量有一個不同,即 16 而不是 subblock1 中的 1。 例如,Dexi 中塊 6 的輸出特征圖的尺度為 16,在饋入子塊 1 之前,子塊 2 中将進行 3 次疊代。 子塊的第二層上采樣過程可以通過雙線性插值、子像素卷積和轉置卷積進行,下文第三部分将讨論該細節。
基于pytorch的實作其實用的是條件判斷與循環一并實作了上述的兩個子產品:
class UpConvBlock(nn.Module):
def __init__(self, in_features, up_scale):
super(UpConvBlock, self).__init__()
self.up_factor = 2
self.constant_features = 16
layers = self.make_deconv_layers(in_features, up_scale)
assert layers is not None, layers
self.features = nn.Sequential(*layers)
def make_deconv_layers(self, in_features, up_scale):
layers = []
for i in range(up_scale): #循環上采樣2倍,前幾次卷積的channel都是16;最後一次為1
kernel_size = 2 ** up_scale
pad = kernel_size-1
out_features = self.compute_out_features(i, up_scale)
layers.append(nn.Conv2d(in_features, out_features, 1))
layers.append(nn.ReLU(inplace=True))
layers.append(nn.ConvTranspose2d(
out_features, out_features, kernel_size, stride=2, padding=pad))
in_features = out_features
return layers
def compute_out_features(self, idx, up_scale):
# 最後一個上采樣channel為1,否則為16
# 即論文裡說的sublock1和subblock2
return 1 if idx == up_scale - 1 else self.constant_features
def forward(self, x):
return self.features(x)
2.3 損失函數
3. 實驗準備步驟
3.1 資料集:Barcelona Images for Perceptual Edge Detection (BIPED)
- 250張1280×720的戶外圖檔
- 随機抽取50張作為測試集,其餘200張作為訓練集和驗證集
- 資料增強:1)由于 BIPED 資料是高分辨率的,它們被分成圖像寬度大小的一半;2)與 HED 類似,每個生成的圖像都旋轉了 15 個不同的角度,并通過内部定向矩形進行裁剪;3)圖像水準翻轉; 4) 應用了兩次伽馬校正 (0.3030, 0.6060)。這個增強過程導緻每 200 張圖像有 288 張增強圖像
3.2 實驗細節
該實作在 TensorFlow中執行。 該模型在 150k 次疊代後收斂,使用 Adam 優化器的批量大小為 8,學習率為 10−4。訓練過程在 TITAN X GPU 中花費大約 2 天時間,輸入大小為 400x400 的彩色圖像。 融合層的權重初始化為:1/(N-1)。經過超參數搜尋以減少參數量後,在 Dixe 和 UB 的不同卷積層上使用 3×3、1×1 和 s×s 的核心大小獲得了最佳性能。
3.3 評價名額
- 評價資料集:BIPED(自制,250張1280x720 pixels),MDBD,CID,BSDS,PASCAL,NYUD
- 評價名額:ODS、OIS、AP
4. 實驗結果
4.1 三種不同的上采樣方法:
DexiNed-bdc 是指由用雙線性核心初始化的轉置卷積執行的上采樣; DexiNed-dc 使用帶有可訓練核心的轉置卷積; 而 DexiNed-sp 使用亞像素卷積。
根據 F-measure,DexiNed 的三個版本得到了相似的結果,但是,在分析圖 6(a) 中的曲線時,DexiNed-dc 的性能出現了微小的差異。 作為結論,選擇了 DexiNed-dc 上采樣政策; 從現在開始,對本節執行的所有評估均使用 DexiNed-dc 上采樣獲得; 為簡單起見,僅使用術語 DexiNed 而不是 DexiNed-dc。
4.2 融合 (DexiNed-f) 和平均 (DexiNed-a) 邊緣圖定量比較
定性地,來自 DexiNed-f 的結果比來自 DexiNed-a 的結果要好得多
定量的,所有預測的平均值 (DexiNed-a) 在三個評估名額中獲得最佳結果,其次是融合層中生成的預測。即DexiNed-a 産生的定量結果略好于 DexiNed-f。
作為結論,兩種方法(融合和平均)都達到了相似的結果;以後将使用 DexiNed-f版本。
4.3 在其它資料集上的比較
每個模型的訓練過程都采用大約兩天。從表 (b) 可以看出,在BIPED資料集上,DexiNed-a 在所有評估名額中都達到了最好的結果。
DexiNed 的主要目标是從每個資料集(RGB 或灰階)中獲得精确的邊緣圖。是以,分為兩類進行公平分析;一個用于邊緣檢測,另一個用于輪廓/邊界檢測/分割。用最先進的方法獲得的邊緣圖的結果如表 2 所示。 應該注意的是,對于每個資料集,與 DexiNed 相比的方法已經使用來自該資料集的圖像進行了訓練,而 DexiNed 隻在BIPED訓練了一次。
可以看出,DexiNed 在 MDBD 資料集中獲得了最好的性能。應該注意的是,DexiNed 在 CID 和 BSDS300 中進行了評估,即使這些資料集包含少量圖像,不足以訓練其他方法(例如,HED、RCF、CED)。
關于 BSDS500、NYUD 和 PASCAL,DexiNed 沒有達到最好的結果,因為這些資料集沒有用于邊緣檢測,是以評估名額會懲罰 DexiNed 檢測到的邊緣。為了突出這種情況,下圖描述了上表中的結果。考慮了每個資料集的兩個樣本。它們是根據最佳和最差 F 度量來選擇的。是以,如下圖所示,當圖像被完全标注時,得分達到 100% 左右,否則達到不到 50%。
5. 代碼
參考這個