帶你讀AI論文:基於Transformer的直線段檢測

摘要:本文提出了一種基於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)

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章