DETR與Deformable DETR小結
DETR與deformable DETR小結
DETR
論文地址https://arxiv.org/abs/2005.12872
論文解讀
DETR將檢測視為集合預測問題,簡化了目標檢測的整體流程。它沒有現在主流的目標檢測器中的anchor、label assign、nms等操作,做到了真正的end-to-end。它主要採用了Transformer的編解碼結構,它在序列預測任務上大獲成功。Transformer中的自注意力機制顯示地界定了序列中元素間的相互作用,因此可以用於約束集合的預測結果。
如上圖是DETR的檢測流程,它一次性預測多個目標,並通過損失函式唯一地匹配預測結果和標註資訊。DETR不需要新增其他的特殊層,整個結構僅由Transformer和ResNet組成。同時,在最後的二分匹配過程我們可以看到,產生的預測結果中不包含感興趣目標類別時,它與空匹配。
與其他的集合預測問題相比,DETR的一大優勢是將解碼器同二分匹配(匈牙利演算法)損失函式結合,從而可以並行處理。該損失函式將預測結果唯一地與標註資訊匹配,因而可以實現並行預測。
DETR的兩個關鍵是:利用損失函式完成預測內容和標註資訊的唯一匹配以及預測一組目標及其之間的關係。如下圖:
DETR transformer架構:
Pytorch程式碼:
很容易擴充套件,可以擴充套件為全景分割模型,通過新增一個mask分支,在box模型的基礎上訓練25輪,就可以達到SO他的結果。
論文貢獻:
(一)提出將Transformer引用於目標檢測的方法,並且得到了預期的結果,相當於為以後的目標檢測提供一種新的方法論;
(二)論文使用的模型結構非常簡潔,不新增任何額外的Tricks就能獲得與Faster-RCNN相當的結果;
(三)主要為我們提供了一種思路,提出一種將深度學習兩大領域(NLP和CV)進行結合的有效方法。
Deformable DETR
論文地址:DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION;
論文翻譯;
DETR將檢測視為集合預測問題,簡化了目標檢測的整體流程。它沒有現在主流的目標檢測器中的anchor、label assign、nms等操作,做到了真正的end-to-end。
儘管DETR有著有趣的設計和好的表現,但是DETR也有著他自己的問題:
- 相比於現存的檢測器,他需要更長的訓練時間來收斂,在coco資料集上,他需要500輪來收斂,是faster r-cnn的10到20倍;
- DETR在小物體檢測上效能較差,現存的檢測器通常帶有多尺度的特徵,小物體目標通常在高解析度特徵圖上檢測,而DETR沒有采用多尺度特徵來檢測,主要是高解析度的特徵圖會對DETR增加不可接受的計算複雜度。
以上缺點也主要來自於transformer處理特徵圖時的缺陷;
在初始化的時候,attention模組在特徵圖上每一個畫素的attention權重都幾乎一樣,所以需要更多的訓練輪次來讓注意力集中在稀疏的有意義的位置;
另一方面,在transformer編碼器中,注意權值計算是基於畫素數的二次計算,因此,處理高解析度特徵圖的計算和記憶體複雜度非常高;
在影像領域,可變形卷積是一種處理稀疏空間位置的強大而高效的機制。它很自然的避免了上述提到的問題,而它缺少元素關係建模機制,這是DETR成功的關鍵。
論文提出的deformable DETR,結合了deformable的稀疏空間取樣的優點和transformer的關係建模能力。它考慮到在所有特徵影像素一個小的取樣位置集作為一個預先過濾器突出關鍵元素;
該模組可以自然地擴充套件到聚合多尺度特徵,而無需FPN的幫助;
在deformable DETR中,使用(多尺度)可變形注意模組替換處理特徵圖的transformer注意模組,如下圖所示:
Deformable DETR由於其快速收斂、計算和記憶體效率,為我們開發端到端物件檢測器的變體提供了可能性;
論文中探索了一種簡單有效的迭代邊界框細化機制來提高檢測效能,也嘗試了two-stage Deformable DETR;
two-stage Deformable DETR:通過Deformable DETR生成region proposals,再送入decoder進行迭代邊界框細化;
與DETR相比,Deformable DETR可以在少10個訓練週期的情況下取得更好的效能(特別是在小物體上)。提出的two-stage Deformable DETR的改進可以進一步提高效能。
相關文章
- ICCV2021 | PnP-DETR:用Transformer進行高效的視覺分析ORM視覺
- 論文閱讀——Deformable Convolutional NetworksORM
- pytorch實現 | Deformable Convolutional Networks | CVPR | 2017PyTorchORM
- 小程式與Vue對比·class與style繫結Vue
- electron打包更新與整合sqlite小總結SQLite
- Flutter UI 1.0.2落地與優化小結FlutterUI優化
- 小程式與Vue對比·資料繫結Vue
- 微信小程式開發總結與心得微信小程式
- 使用setInterval與clearInterval踩的小坑總結
- (一):小程式與伺服器的連結伺服器
- TCP KeepAlive機制理解與實踐小結TCP
- 互斥鎖與條件變數學習與應用小結變數
- 影像處理論文詳解 | Deformable Convolutional Networks | CVPR | 2017ORM
- 如何理解Hadoop-Hbase原理與應用小結Hadoop
- Python中的一些陷阱與技巧小結Python
- 探索支付寶小程式:如何與前端工程結合?前端
- Beyond Fixed Grid: Learning Geometric Image Representation with a Deformable Grid——論文閱讀ORM
- INBOUND_CONNECT_TIMEOUT與SQLNET.INBOUND_CONNECT_TIMEOUT小結SQL
- 二叉樹遍歷順序與方法小結二叉樹
- Django——小結Django
- Runtime小結
- MiniUI小結UI
- mysql小結MySql
- RPA小結
- BootStrap小結boot
- Jquery小結jQuery
- canvas小結Canvas
- 小程式實踐小坑小結(一)
- CSS 小結筆記之元素的隱藏與顯示CSS筆記
- CSS 小結筆記之變形、過渡與動畫CSS筆記動畫
- 小程式開發總結一:mpvue框架及與小程式原生的混搭開發Vue框架
- javascript 詞法結構小結JavaScript
- CocoaPods使用小結
- SVN小總結
- docker小結(nginx)DockerNginx
- 分塊小結
- 函式小結函式
- Git使用小結Git