End-to-End Object Detection with Transformers

論文下載地址:  https://arxiv.org/abs/2005.12872

代碼下載地址: https://github.com/facebookresearch/detr

摘要:該算法簡化了目標檢測算法的流程,同時將那些需要手動設計的技巧nms(極大值抑制)和anchor成功的刪除掉,實現端到端自動訓練和學習。DETR算法使基於集合的全局損失函數,通過二部圖匹配和編碼解碼網絡結構來強制進行唯一的預測。 給定一小組固定的經過學習的object queries(後面會講到什麼是object queries),DETR根據對象和全局圖像上下文的關係,直接並行輸出最終的預測集。 與許多其他檢測算法不同,新模型在概念上很簡單,不需要專門的庫。經過COCO數據集測試,新算法在速度和精度上都比Faster-RCNN高。

網絡整體流程:

如上圖一所示,是該算法的整體計算流程。首先將圖片傳到CNN裏面來提取特徵信息,然後將提取到的特徵降維展開傳到Transfoemer裏面,通過Transformer編碼和解碼的網絡結構輸出固定個數的預測結果。最後將得到的檢測結果和GroundTruth進行二部圖匹配計算loss。

Transformer網絡結構:

如圖2所示,是Transformer的整體網絡結構,主要是由編碼器和解碼器兩部分組成。如圖3是編碼器和解碼器的詳細網絡結構,編碼器由兩部分組成自注意力和前饋神經網絡層,解碼器在編碼器的基礎上增加了編碼-解碼注意力層。這個是Transformer的整體結構上的理解,還想了解具體的細節可以去 https://zhuanlan.zhihu.com/p/48508221 大佬講解的很詳細。

 

二部圖匹配:

二部圖匹配就是將預測結果和Groundtruth進行匹配。本論文中網絡輸出的結果是固定爲100個預測目標,並非這100個都會有預測結果,對於沒有目標的預測值會輸出爲空標記,如圖4左邊。Groundtruth也會使用空標記來進行補齊,達到100個,如圖4右邊。然後這兩個就會進行二部匹配。

如下圖 4所示,左邊表示的是網絡預測結果,右邊表示groundtruth結果。得到結果之後再通過貪心算法來進行二部圖匹配得到匹配結果之後計算二部圖loss。

網絡結構詳細介紹:

如下圖5所示算法的詳細網絡結構,首先圖片經過CNN提取特徵,然後降維操作之後和位置編碼信息進行sum操作,傳到encoder裏面,然後encoder將處理的結果傳到decoder裏面,同時將object queries也傳到deconder裏面進行處理,最後將decoder處理的結果通過FFN輸出最後的檢測結果。

Position encoding:

transformer模型的attention機制並沒有包含位置信息,即一句話中詞語在不同的位置時在transformer中是沒有區別的,這當然是不符合實際的。因此,在transformer中引入位置信息相比CNN, RNN等模型有更加重要的作用。作者添加位置編碼的方法是:構造一個跟輸入embedding維度一樣的矩陣,然後跟輸入embedding相加得到multi-head attention 的輸入。PE矩陣的計算方法如下圖所示:pos表示詞語在句子中的位置,d-model表示詞向量的維度,i表示詞向量的位置。

什麼是object queries:

下圖6就是表示的object queries。他表示的就是有N各不同的人從N個角度來向模型進行提問,當前位置是否有目標。在網絡中的作用就是類似於給網絡畫重點,讓網絡着重關注這幾個部分。

FFN網絡結構:

FFN網絡結構有三層FC層加RELU激活函數和線性函數組成。通過FFN網絡結構輸出目標的中心點的位置,boxes的長和寬通過線性函數輸出預測的類別。

網絡loss:

下圖是二部圖的匹配loss

下圖表示的是檢測框的iou-loss和L1-loss

下公式表示的是網絡結構的loss,左邊部分是二部圖的匹配loss,右邊部分表示的是檢測框的loss。

檢測結果:

從下圖可以看出該算法在AP,AP50,APM和APl上取得了和那後的檢測結果。但是該算法針對小目標檢測效果並不理想,也是後續改進的一個方向。