摘要:本文提出了一種基於Transformer的端到端的線段檢測模型。采用多尺度的Encoder/Decoder算法,可以得到比較准確的線端點坐標。作者直接用預測的線段端點和Ground truth的端點的距離作為目標函數,可以更好的對線段端點坐標進行回歸。
本文分享自華為雲社區《論文解讀系列十七:基於Transformer的直線段檢測》,作者:cver。
1 文章摘要
傳統的形態學線段檢測首先要對圖像進行邊緣檢測,然后進行后處理得到線段的檢測結果。一般的深度學習方法,首先要得到線段端點和線的熱力圖特征,然后進行融合處理得到線的檢測結果。作者提出了一種新的基於Transformer的方法,無需進行邊緣檢測、也無需端點和線的熱力圖特征,端到端的直接得到線段的檢測結果,也即線段的端點坐標。
線段檢測屬於目標檢測的范疇,本文提出的線段檢測模型LETR是在DETR(End-to-End Object Detection with Transformers)的基礎上的擴展,區別就是Decoder在最后預測和回歸的時候,一個是回歸的box的中心點、寬、高值,一個是回歸的線的端點坐標。
因此,接下來首先介紹一下DETR是如何利用Transformer進行目標檢測的。之后重點介紹一下LETR獨有的一些內容。
2、如何利用Transformer進行目標檢測(DETR)
圖1. DETR模型結構
上圖是DETR的模型結構。DETR首先利用一個CNN 的backbone提取圖像的features,編碼之后輸入Transformer模型得到N個預測的box,然后利用FFN進行分類和坐標回歸,這一部分和傳統的目標檢測類似,之后把N個預測的box和M個真實的box進行二分匹配(N>M,多出的為空類,即沒有物體,坐標值直接設置為0)。利用匹配結果和匹配的loss更新權重參數,得到最終的box的檢測結果和類別。這里有幾個關鍵點:
首先是圖像特征的序列化和編碼。
CNN-backbone輸出的特征的維度為C*H*W,首先用1*1的conv進行降維,將channel從C壓縮到d, 得到d*H*W的特征圖。之后合並H、W兩個維度,特征圖的維度變為d*HW。序列化的特征圖丟失了原圖的位置信息,因此需要再加上position encoding特征,得到最終序列化編碼的特征。
然后是Transformer的Decoder
目標檢測的Transformer的Decoder是一次處理全部的Decoder輸入,也即 object queries,和原始的Transformer從左到右一個一個輸出略有不同。
另外一點Decoder的輸入是隨機初始化的,並且是可以訓練更新的。
二分匹配
Transformer的Decoder輸出了N個object proposal ,我們並不知道它和真實的Ground truth的對應關系,因此需要經二分圖匹配,采用的是匈牙利算法,得到一個使的匹配loss最小的匹配。匹配loss如下:
得到最終匹配后,利用這個loss和分類loss更新參數。
3、LETR模型結構
圖2. LETR模型結構
Transformer的結構主要包括Encoder、Decoder 和 FFN。每個Encoder包含一個self-attention和feed-forward兩個子層。Decoder 除了self-attention和feed-forward還包含cross-attention。注意力機制:注意力機制和原始的Transformer類似,唯一的不同就是Decoder的cross-attention,上文已經做了介紹,就不再贅述。
Coarse-to-Fine 策略
從上圖中可以看出LETR包含了兩個Transformer。作者稱此為a multi-scale Encoder/Decoder strategy,兩個Transformer分別稱之為Coarse Encoder/Decoder,Fine Encoder/Decoder。也就是先用CNN backbone深層的小尺度的feature map(ResNet的conv5,feature map的尺寸為原圖尺寸的1/32,通道數為2048) 訓練一個Transformer,即Coarse Encoder/Decoder,得到粗粒度的線段的特征(訓練的時候固定Fine Encoder/Decoder,只更新Coarse Encoder/Decoder的參數)。然后把Coarse Decoder的輸出作為Fine Decoder的輸入,再訓練一個Transformer,即Fine Encoder/Decoder。Fine Encoder的輸入是CNN backbone淺層的feature map(ResNet的conv4,feature map的尺寸為原圖尺寸的1/16,通道數為1024),比深層的feature map具有更大的維度,可以更好的利用圖像的高分辨率信息。
注:CNN的backbone深層和淺層的feature map特征都需要先通過1*1的卷積把通道數都降到256維,再作為Transformer的輸入
二分匹配
和DETR一樣, 利用fine Decoder的N個輸出進行分類和回歸,得到N個線段的預測結果。但是我們並不知道N個預測結果和M個真實的線段的對應關系,並且N還要大於M。這個時候我們就要進行二分匹配。所謂的二分匹配就是找到一個對應關系,使得匹配loss最小,因此我們需要給出匹配的loss,和上面DERT的表達式一樣,只不過這一項略有不同,一個是GIou一個是線段的端點距離。
4、模型測試結果
模型在Wireframe和YorkUrban數據集上達到了state-of–the-arts。
圖3. 線段檢測方法效果對比
圖4、線段檢測方法在兩種數據集上的性能指標對比(Table 1);線段檢測方法的PR曲線(Figure 6)