目标检测算法随笔
最近在學習有關目標檢測方向的內容,所以對最近閱讀的論文進行一定的總結與記錄,如有理解錯誤歡迎大家批評指正,也很希望和大家進行交流~
文章目錄
- 傳統opencv類
- 一、DETR
- 二、Swin Transformer
- 三、Dynamic Head
- 四、Soft Teacher
- 五、Florence
- 六、Swin Transformer V2
- 總結
- 參考文獻:
傳統opencv類
目標檢測任務是指利用計算機技術及算法來實現對目標進行分類和定位的計算機視覺任務[1],該任務的目標是為每個檢測到的對象預測一組邊界框及類別標簽,針對目標檢測任務存在較多以opencv為代表的傳統目標檢測方法的工作,例如徐曉明,王雪梅[2]提出的Subsense 檢測算法,該算法基于 Color-LBSP 算子原理,能根據局部環境變化自動化調整模型參數;胡昭華[3]等提出超像素特征的運動目標檢測算法,對ViBe算法進行了改進并引入了超像素特征, 提出了基于超像素特征的運動目標檢測算法。這類算法一般是先對背景進行建模然后進行前景和背景的分離,而后實現對運動目標的檢測,算法需要手工提取特征,并針對特定的任務特定的檢測目標設計或訓練分類器,受噪聲影響較大故魯棒性較弱。相比之下基于深度學習的目標檢測則無需人工提取特征,而是通過神經網絡提取及學習目標的多層次特征,接著將其輸入分類器中預測識別目標的位置及類別,故有較高的準確性與魯棒性,這類算法已經在相關領域均取得實用性進展。
一、DETR
目前基于Transformer模型的深度學習方法在目標檢測領域占據了極大的地位,DETR[4]就是其中具有代表性的經典工作,其不同于R-CNN等經典模型在檢測時會生成錨點或候選區域,DETR將目標檢測問題視為集合預測問題,即給定圖片后模型預測出包含檢測目標的無序集合,可以將DETR視為一個從圖像序列到一個集合序列的轉換過程。DETR根據給出的可學習對象查詢集,結合對象查詢間的關系及全局化的圖像信息來輸出最后的預測集合,之后在預測集合和真實集合間進行二分匹配強制模型實現預測和真實對象之間的唯一匹配。在實現時DETR使用了Transformer的編碼器解碼器架構并進行了一些調整,在輸出的分支上DETR利用FFN引出了兩個分支,一個做類別的分類另一個用作BBox的回歸,另外Decoder的輸入數據包括Encoder的輸出、可學習的object queries以及一些mask信息,這里的object queries的作用相當于位置嵌入信息,可以理解為每個object query對不同的事物感興趣,包括不同的類別信息和不同的區域,其通過self-attention層建模事物實例與其他事物實例之間的關系又通過attention層從編碼器輸出的序列中對全局化的圖像上下文特征做聚合,在訓練過程中會強制模型根據損失矩陣對預測集合與真實標簽集合進行最佳二分匹配。這些新穎的方法極大地簡化了目標檢測的流程,消除了手動設計組件的需求,工程實現簡單且有較少需要調的超參數并提高了檢測模型的性能。
二、Swin Transformer
Swin Transformer[5]憑借在一系列視覺任務上的強大表現被評為ICCV21的最佳論文,它也進一步證明了Transformer有能力在視覺領域得到廣泛應用,因為Transformer在NLP領域取得了卓越的成果,把它應用到視覺時會有較大的挑戰,因為文字沒有類似圖像這種多尺度的特點,另外對高像素圖像進行全局自注意力計算也會帶來較高的計算成本,所以Swin Transformer提出了一種以移動窗口進行計算的分層Transformer,它模仿CNN的特點,通過從小尺寸的圖像patch開始,在更深的層中逐漸合并相鄰的patch來獲取分層特征,所以能夠得到不同尺度的圖像特征,并且由于它只在每個局部窗口內進行自注意力計算,所以具有根據輸入圖像大小的線性計算復雜度。在處理時,首先Swin Transformer會把輸入圖像進行patch操作,然后經過一個embedding層將向量的維度轉化為預先設定的值,之后進行展平操作,這時序列的長度可能是比較大的一個值,所以它就使用了基于窗口的自注意力計算,將一定數量的向量放置于窗口中進行計算,這使得每次計算的序列長度是一個可接受的定值,增加的只是窗口數量,也就是說需要對多個窗口的自注意力進行計算。為了讓它具備多尺度的信息,需要構建一個層級式的結構,這里用到了一個patch merging層也就相當于CNN中的pooling層,在得到每個窗口的結果后將其按長寬減半的方式patch后堆疊之后再經過一個1*1的卷積層實現將通道數變為之前的2倍,通過多層的這種結構后就可以實現CNN多尺度的效果。他們提出的移動窗口機制是在Swin Transformer Block中實現的,這里先將圖像進行窗口級的自注意力計算,然后將窗口進行移動后得到不同的窗口布局,再進行一次自注意力計算,這樣做就可以實現窗口間的交互,進而可以提高模型的特征提取能力。
三、Dynamic Head
Dynamic Head[6]在當時是第一個單模型在COCO數據集上能達到60%以上AP的工作,因為目標檢測有許多工作,在解決時主要是先通過backbone網絡提取特征,然后再將特征輸入到目標檢測頭來實現指定的目標檢測任務,不同的檢測頭分別關注不同的特點,比如有些工作主要解決目標尺度(scale)不同帶來的問題,也有一些工作主要解決目標不同空間角度(spatial)帶來的問題,另外也有一些工作會根據任務(task)不同進行一定的特定化制訂目標檢測頭,Dynamic Head這個工作就想將這些工作進行統一來實現更好的普適性特征表達,因此提出了一個動態的目標檢測頭,它將骨干網絡提取到的特征視為level×space ×channel這種具有語義信息的3D張量,工作中發現這些問題可以統一于一個有效的注意力學習的問題,為了簡化計算它在這三個維度分別進行獨立的注意力計算但它們的性能可以實現相互補充,level維度用來解決scale所帶來的問題,以期學習各種尺度的對象特征;space維度用來解決spatial所帶來的問題,學習便于分辯的空間位置特征;channel維度用來解決task所帶來的問題,認為不同的通道可能會注重不同的任務。在實現時通過backbone得到圖像的特征金字塔,這樣就可以得到L×H×W×C的特征向量,然后將W×C進行合并,得到一個三維的張量,分別對應上述的level、space和channel維度,之后將在這三個維度上的注意力機制進行順序級聯,通過級聯可以提高模型特征表達的能力。Dynamic Head顯著提高了目標檢測頭的特征表征能力,它可作為一個插件靈活地集成到現有的目標檢測框架中以提高其效率。
四、Soft Teacher
Mengde Xu[7]等人提出了一種端到端的基于偽標簽的半監督目標檢測框架,他們認為對于半監督學習來說目標檢測的模型性能取決于偽標簽的質量,該框架對未標注的圖像進行偽標簽生成的同時會在每次迭代中使用這些偽標簽和一些有標簽的數據來訓練目標檢測模型,最后該工作得到的模型在多個數據集上均達到了較好的性能。在實現時未標注的圖像和標注的圖像按一定比例進行隨機抽樣構成batch,在每個訓練迭代中soft teacher和student都會被訓練,前者會對強數據增強的圖像進行boxes預測,后者被應用于對弱數據增強的圖像進行偽標簽生成,首先要對它生成的大量預測結果進行NMS操作,然后根據score過濾得到一組boxes結果,另外根據回歸過濾得到一組boxes,soft teacher得到的兩組boxes作為偽標簽計算得到無監督的分類和回歸loss,student對有標簽數據進行預測得到對應的有監督分類和回歸loss。整個訓練過程的損失函數是有監督預測損失與無監督預測損失的和,student通過該損失利用梯度下降對其進行訓練,soft teacher模型由student模型通過指數平均(EMA)方式更新,其通過訓練可以提高生成偽標簽的質量,而這精準的標簽又會利于student目標檢測模型的訓練。當score的閾值很高時soft teacher在無標簽圖像上生成的偽標簽準確率高而召回率低,這會使student將一些前景boxes誤判為背景,這里的解決方法是使用soft teacher機制,也就是為student產生的每個box賦予一個屬于背景的可能性得分。另外該工作發現在回歸過程中將前景得分高的boxes作為偽標簽不合適,所以該工作提出利用框抖動策略來得到反應偽框可信度的可靠性指標,實現時先將前景score大于一定值的boxes進行隨機抖動,然后利用soft teacher對這些抖動boxes進行回歸預測,然后選擇回歸方差小于閾值的boxes作為偽標簽。
五、Florence
Lu Yuan[8]等人想要得到一個更普適可以應用于所有視覺任務的基礎模型進而提出了Florence,相較于之前模型大多注重于文本和圖像的融合表征,該模型將現有表征能力進行了拓展,不但從粗略的場景表征擴展到精細的對象表征,從靜態圖像表征擴展到動態視頻表征,同時還從RGB圖像表征擴展到多模態的文字或深度信息表征,得到的模型更通用具有更好的泛化性和特征提取能力,在44個計算機視覺任務上都取得了當時最好的結果。他們認為計算機視覺任務可劃分為映射到空間-時間-模態空間中,這種想法和他們提出Dynamic Head時是相似的,計算機視覺的基礎模型包括在多樣大規模數據集上訓練得到的預訓練模型和僅需少量樣本即可解決特定下游任務的適配器,為了得到較好的計算機視覺基礎模型,他們提出了模型訓練的新范式。首先是數據集的收集,他們在網絡上收集了大量圖像文本對數據,并對其進行了清洗;在模型預訓練時在文本和圖像端均使用了單獨Encoder,考慮到多個圖像會有同一個文本對,所以使用到了UniCL這一對比學習算法,即給定一個圖像文本對后,通過文本哈希表會生成(x,t,y),其中x為圖像,t為文本也叫哈希值,y是標簽也叫哈希鍵,具有相同y的圖像文本對均為正樣本,模型訓練時的損失函數包括image2language和language2image這兩個對比損失;最后是對預訓練模型加入一個針對特定下游任務的適配器進行finetune以解決不同的視覺任務,而結果也證明了他們提出的Florence可以在不同類的視覺任務上均可表現得很好,也就可以說是這個基礎模型的表征能力實現了較大的擴展。
六、Swin Transformer V2
Ze Liu[9]等人提出的Swin Transformer V2解決了大型視覺模型訓練兩個主要問題,包括訓練不穩定和預訓練與應用到下游任務時存在分辨率差異,他們將Swin Transformer擴展到了30億個參數并使其能夠訓練分辨率高達1,536×1,536的圖像,其訓練出的大型視覺模型在目標檢測任務中的COCO數據集上達到了63.1%的box mAP。他們發現在訓練大型視覺模型時各層的激活幅度是存在差異的,由于殘差結構致使較深層的幅度要大于前面層的值,為了解決這個問題他們使用了后歸一化技術代替前歸一化,也就是將LN層放到了殘差單元的后面,每個殘差塊的輸出在合并回主分支之前被歸一化,另外還使用到了縮放余弦注意力代替之前的點積注意力,這使得訓練過程更加穩定且模型性能也有所提升。同時為了解決下游任務和預訓練時所采用的圖像分辨率不同,比如目標檢測和語義分割任務會使用到更高分辨率的圖像作為輸出或者需要更大的注意力窗口,所以他們提出了一種對數間隔的連續位置偏置技術,對數間隔是指將坐標轉換成對數空間,使其可以減少窗口變大后相對位置范圍的變化,另外它不是直接優化相對位置偏置參數而是通過應用一個小的元網絡(2L-MLP)來為任意的坐標范圍產生偏置,這個元網絡可以接受任何坐標,預訓練模型將能夠通過共享元網絡的權重在不同窗口大小之間自由轉換。最后為了解決大模型計算時內存消耗過大又不影響訓練速度,他們采用了一些重要技術,包括ZeRO優化器、Activation check-pointing并且不對自注意力進行batch運算,而是序列地逐個執行。
總結
通過這些文獻的閱讀,我發現當前性能較為突出的模型都是使用到圖像文本對作為訓練數據并使用對比學習的方法來進行訓練,我想這可能是未來的一種趨勢,因為Transformer已被證明它可以很好的提取文本和圖像的特征,如果在訓練時所使用的數據包含多種模態的特征,這樣模型可能就可以更精準地提取到關鍵性的特征而避免一些噪聲的影響,這和我們人類感知世界的方式也是類似的,通過聽、看、讀、觸等多種方式相結合是要比單一感覺獲取的信息更準確也更利于理解。另外現在的模型訓練所需要的數據集是非常龐大的,訓練所花費的算力也是普通研究者難以觸及的,很多工作可能思想不是很新穎只是在前人工作的基礎上擴大了訓練數據規模以及參數配置,這就極大地限制了研究人員創新的積極性,所以我還是很期待今后的模型能夠在保證性能的基礎上降低模型的規模以及訓練的成本,相信隨著技術的發展,這一定會實現的!
參考文獻:
[1] 蔣弘毅,王永娟,康錦煜. 目標檢測模型及其優化方法綜述. 自動化學報. 2021年6月第47卷.
[2] 徐曉明,王雪梅. 基于Subsense運動目標檢測算法. 電子測試. 2021年19卷.
[3] 胡昭華, 張維新, 邵曉雯. 超像素特征的運動目標檢測算法. 控制理論與應用. 2017年34 卷.
[4] Nicolas Carion, Francisco Massa, Gabriel Synnaeve, et al. End-to-End Object Detection with Transformers. 28 May 2020.
[5] Ze Liu, Yutong Lin, Yue Cao, et al. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows. 17 Aug 2021
[6] Xiyang Dai, Yinpeng Chen, Bin Xiao, et al. Dynamic Head: Unifying Object Detection Heads with Attentions. 15 Jun 2021.
[7] Mengde Xu, Zheng Zhang, Han Hu, et al. End-to-End Semi-Supervised Object Detection with Soft Teacher. 6 Aug 2021.
[8] Lu Yuan, Dongdong Chen, Yi-Ling Chen, et al. Florence: A New Foundation Model for Computer Vision. 22 Nov 2021
[9] Ze Liu, Han Hu, Yutong Lin, Zhuliang Yao, et al. Swin Transformer V2: Scaling Up Capacity and Resolution. 18 Nov 2021.
總結
- 上一篇: 快速傅里叶变换学习及C语言实现
- 下一篇: 目标检测经典论文——Fast R-CNN