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

dapan發表於2021-09-11
摘要:本文提出了一種基於Transformer的端到端的線段檢測模型。採用多尺度的Encoder/Decoder演算法,可以得到比較準確的線端點座標。作者直接用預測的線段端點和Ground truth的端點的距離作為目標函式,可以更好的對線段端點座標進行迴歸。

本文分享自華為雲社群《》,作者:cver。

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

1 文章摘要

傳統的形態學線段檢測首先要對影像進行邊緣檢測,然後進行後處理得到線段的檢測結果。一般的深度學習方法,首先要得到線段端點和線的熱力圖特徵,然後進行融合處理得到線的檢測結果。作者提出了一種新的基於Transformer的方法,無需進行邊緣檢測、也無需端點和線的熱力圖特徵,端到端的直接得到線段的檢測結果,也即線段的端點座標。

線段檢測屬於目標檢測的範疇,本文提出的線段檢測模型LETR是在DETR(End-to-End Object Detection with Transformers)的基礎上的擴充套件,區別就是Decoder在最後預測和迴歸的時候,一個是迴歸的box的中心點、寬、高值,一個是迴歸的線的端點座標。

因此,接下來首先介紹一下DETR是如何利用Transformer進行目標檢測的。之後重點介紹一下LETR獨有的一些內容。

2、如何利用Transformer進行目標檢測(DETR)

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

圖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如下:

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

得到最終匹配後,利用這個loss和分類loss更新引數。

3、LETR模型結構

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

圖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。

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

圖3. 線段檢測方法效果對比

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

圖4、線段檢測方法在兩種資料集上的效能指標對比(Table 1);線段檢測方法的PR曲線(Figure 6)

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/758/viewspace-2795911/,如需轉載,請註明出處,否則將追究法律責任。

相關文章