目前一些目標檢測論文中所提到的一些模型的作用

FPN(Feature Pyramid Network)算法:

      特徵金字塔網絡(FPN)是目標檢測中生成金字塔形狀特徵表示的代表性模型架構之一。它採用通常爲圖像分類設計的骨幹模型,然後通過自上而下和橫向連接,並組合不同的特徵層來構建特徵金字塔。FPN 取代了檢測器(如 Faster R-CNN)中的特徵提取器,並生成更高質量的金字塔特徵圖【1】。

                              

                                                            圖注:特徵金字塔網絡,選自 arXiv: 1612.03144。

      FPN 由自下而上和自上而下路徑組成。其中自下而上的路徑採用下采樣,是用於提取特徵的常用卷積網絡,空間分辨率自下而上地下降。當空間分辨率下降,且檢測到更高層的結構時,每層的語義值增加。

      原來多數的object detection算法都是隻採用頂層特徵做預測,但我們知道低層的特徵語義信息比較少,但是目標位置準確;高層的特徵語義信息比較豐富,但是目標位置比較粗略。另外雖然也有些算法採用多尺度特徵融合的方式,但是一般是採用融合後的特徵做預測,而本文不一樣的地方在於預測是在不同特徵層獨立進行的【2】。 

      同時利用低層特徵高分辨率和高層特徵的高語義信息,通過融合這些不同層的特徵達到預測的效果。並且預測是在每個融合後的特徵層上單獨進行的,這和常規的特徵融合方式不同。 

【1】谷歌大腦提出NAS-FPN:一種學會自動架構搜索的特徵金字塔網絡:http://www.360kuai.com/pc/9f5779082a933626a?cota=4&sign=360_57c3bbd1&refer_scene=so_1

 

【2】FPN(feature pyramid networks)算法講解:https://blog.csdn.net/u014380165/article/details/72890275

【3】FPN(特徵圖金字塔網絡)理論基礎與具體實現:https://blog.csdn.net/qq_17550379/article/details/80375874


RetinaNet:

paper:Focal Loss for Dense Object Detection
linkRetinaNet

      該方法是一種對one stage系的改進。衆所周知,detector主要分爲以下兩大門派:

                        
這種魚(speed)與熊掌(accuracy)不可兼得的局面一直成爲Detection的瓶頸。

      目前精度最高的目標檢測器都是基於R-CNN結構衍生出來的two-stage目標檢測方法,相反one-stage的探測器應用於目標可能位置的密集採樣中,具有更快更簡單的特點但是精度落後two-stage的檢測器【2】;

究其原因,就是因爲one-stage的密集檢測器在訓練過程中會遇到foreground和background受制於萬惡的 “類別不平衡”的問題【1】 。

      1、什麼是“類別不平衡”呢?

      詳細來說,檢測算法在早期會生成一大波的bbox。而一幅常規的圖片中,頂多就那麼幾個object。這意味着,絕大多數的bbox屬於background。

        2、“類別不平衡”又如何會導致檢測精度低呢?

        因爲bbox數量爆炸。 

正是因爲bbox中屬於background的bbox太多了,所以如果分類器無腦地把所有bbox統一歸類爲background,accuracy也可以刷得很高。於是乎,分類器的訓練就失敗了。分類器訓練失敗,檢測精度自然就低了。

3、那爲什麼two-stage系就可以避免這個問題呢?

因爲two-stage繫有RPN罩着。 

第一個stage的RPN會對anchor進行簡單的二分類(只是簡單地區分是前景還是背景,並不區別究竟屬於哪個細類)。經過該輪初篩,屬於background的bbox被大幅砍削。雖然其數量依然遠大於前景類bbox,但是至少數量差距已經不像最初生成的anchor那樣誇張了。就等於是 從 “類別 極 不平衡” 變成了 “類別 較 不平衡” 。 

不過,其實two-stage系的detector也不能完全避免這個問題,只能說是在很大程度上減輕了“類別不平衡”對檢測精度所造成的影響。 

接着到了第二個stage時,分類器登場,在初篩過後的bbox上進行難度小得多的第二波分類(這次是細分類)。這樣一來,分類器得到了較好的訓練,最終的檢測精度自然就高啦。但是經過這麼兩個stage一倒騰,操作複雜,檢測速度就被嚴重拖慢了。

4、那爲什麼one-stage系無法避免該問題呢?

因爲one stage系的detector直接在首波生成的“類別極不平衡”的bbox中就進行難度極大的細分類,意圖直接輸出bbox和標籤(分類結果)。而原有交叉熵損失(CE)作爲分類任務的損失函數,無法抗衡“類別極不平衡”,容易導致分類器訓練失敗。因此,one-stage detector雖然保住了檢測速度,卻喪失了檢測精度。

          

      也就是說,一旦乘上了該權重,量大的類別所貢獻的loss被大幅砍削,量少的類別所貢獻的loss幾乎沒有多少降低。雖然整體的loss總量減少了,但是訓練過程中量少的類別擁有了更大的話語權,更加被model所關心了。

      爲此,FAIR還專門寫了一個簡單的one-stage detector來驗證focal loss的強大。並將該網絡結構起名RetinaNet: 

文章的兩大貢獻:

           

 

【1】論文閱讀: RetinaNet:https://blog.csdn.net/JNingWei/article/details/80038594

【2】RetinaNet論文理解:https://blog.csdn.net/wwwhp/article/details/83317738


NAS(網絡架構搜索):

        機器學習算法的效果好壞不僅取決於參數,而且很大程度上取決於各種超參數。有些paper的結果很難重現原因之一就是獲得最優超參值往往需要花很大的力氣。超參數的自動搜索優化是一個古老的話題了。深度學習興起前它主要針對傳統機器學習算法中的模型超參數,比較經典的方法有隨機搜索(Random search), 網格搜索(Grid search),貝葉斯優化(Bayesian optimization),強化學習(Reinforcement learning), 進化算法(Evolutionary Algorithm)等,統稱爲Hyperparameter optimization(HO)。像Auto-sklearn和Auto-WEKA都是比較有名的HO框架。對於深度學習說,超參數主要可爲兩類:一類是訓練參數(如learning rate,batch size,weight decay等);另一類是定義網絡結構的參數(比如有幾層,每層是啥算子,卷積中的filter size等),它具有維度高,離散且相互依賴等特點前者的自動調優仍是HO的範疇,而後者的自動調優一般稱爲網絡架構搜索(Neural Architecture Search,NAS)。這些年來大熱的深度神經網絡,雖然將以前很另人頭疼的特徵提取自動化了,但網絡結構的設計很大程度上還是需要人肉,且依賴經驗。每年各AI頂會上一大批論文就是在提出各種新的更優的網絡子結構。一個自然的訴求就是這個工作能否交給機器來做。

      網絡架構搜索主要包括以下三個方面: 

  • 搜索空間:定義了優化問題的變量,網絡結構和超參數的變量定義有所不同,不同的變量規模對於算法的難度來說也不盡相同。
  • 搜索策略:搜索策略定義了使用怎樣的算法可以快速、準確找到最優的網絡結構參數配置。常見的搜索方法包括:隨機搜索、貝葉斯優化、進化算法、強化學習、基於梯度的算法。其中,2017 年穀歌大腦的那篇強化學習搜索方法將這一研究帶成了研究熱點,後來 Uber、Sentient、OpenAI、Deepmind 等公司和研究機構用進化算法對這一問題進行了研究,這個 task 算是進化算法一大熱點應用。
  • 評價預估:類似於工程優化中的代理模型(surrogate model),因爲深度學習模型的效果非常依賴於訓練數據的規模,大規模數據上的模型訓練會非常耗時,對優化結果的評價將會非常耗時,所以需要一些手段去做近似的評估

具體描述見:神經網絡架構搜索(NAS)綜述 

《Neural Architecture Search with Reinforcement Learning》(神經結構搜索與強化學習)
網站鏈接(開源代碼):https://github.com/tensorflow/models

      此篇論文中的核心是:利用Reinforcement Learning(強化學習)機制訓練一個RNN(循環神經網路)controller(控制器)去自動產生一個神經網絡,無需人爲手動設計網絡,設計出的網絡在相關有權威的數據集上都取得了很好的成績。看完論文後發現沒有硬件資源根本是無法使得訓練跑起來的,有錢就是任性,論文用了800個GPU跑起來的。

摘自:網絡結構搜索(1)—— NAS(Neural architecture search with reinforcement learning)論文筆記

      本質上網絡架構搜索,和圍棋類似,是個高維空間的最優參數搜索問題。既然圍棋上AlphaGo可以戰勝人類,那在網絡架構搜索上機器最後也很有可能可以取代人類。我們知道,AlphaGo主要是基於強化學習。2016年,MIT和Google的學者們差不多在同一時間發表論文,將強化學習引入到深度神經網絡結構的搜索中,取得了不俗的成果。在幾個小型的經典數據集上擊敗同時代同級別的手工設計網絡。但這個方法有個缺點是消耗計算資源巨大,基本就不是一般人玩得起的。這個坑也是後面一大波工作改進的重點。比如下面的這種方法:

進階篇:《Learning Transferable Architectures for Scalable Image Recognition》提出NASNet

源碼鏈接:https://github.com/tensorflow/models/tree/master/research/slim/nets/nasnet

      它假設整體網絡是由cell重複構建的,那搜索空間就縮小到對兩類cell(normal cell和reduction cell)結構的搜索上,從而大大減小了搜索空間。在CIFAR數據集上達到了比同期SOTA網絡更高的精度,同時這樣的分解也有助於知識的遷移,學習到的cell結構可以幫助在更大的圖片分類數據集以及在物體檢測數據集上得到SOTA的結果。注意在這個方法中,雖然cell結構是學習得到的,但如何重複和組合這些cell的元網絡結構是預定義的。更拓展地,CMU和Google發表的論文《Hierarchical Representations for Efficient Architecture Search》中定義了一種層次化的網絡結構:最底層爲像卷積和池化等基本組件;中間層爲這些組件所構成的圖;最高層就是由這些圖層疊而成的整體網絡。

摘自:

神經網絡架構搜索(Neural Architecture Search)雜談:https://blog.csdn.net/jinzhuojun/article/details/84698471 


NAS-FPN:(Neural architecture search-Feature Pyramid Network)

        設計特徵金字塔架構的挑戰在於其巨大的設計空間。組合不同尺度的可能連接數量隨着網絡層數的增加呈指數級增長。本文算法的目標是爲 RetinaNet 框架發現更好的 特徵金字塔網絡(FPN 架構。

本文的主要貢獻是設計搜索空間,覆蓋所有可能的跨尺度連接,已生成多尺度特徵表示。在搜索過程中,研究者的目標是發現具有相同輸入和輸出特徵級別並且可以被重複應用的微粒架構。模塊化搜索空間使得搜索金字塔架構變得易於管理。模塊化金字塔架構的另一個好處是可以隨時檢測目標(即「early exit」),雖然這種「early exit」方法已經被嘗試過,但手動設計這種架構依舊相當困難【1】。

      研究者構建的架構,即 NAS-FPN,在構建目標檢測架構方面具有很大的靈活性。NAS-FPN 與各種骨幹模型配合得很好,如 MobileNet、ResNet、AmoebaNet。它爲移動端模型和高準確率模型在速度和準確率方面提供了更好的權衡。

      在相同的推理時間下,與 RetinaNet 框架中的 MobileNetV2 骨幹模型相結合,它的性能超過當前最佳的移動檢測模型(與 MobilenetV2 結合的 SSDLite)2 個 AP。與強大的 AmoebaNet-D 骨幹模型結合,NAS-FPN 在單個測試規模中達到了 48.3 的 AP 單模型準確率。其檢測準確率超過了 Mask RCNN,同時使用的推理時間更少。幾種模型的具體結果如圖 1 所示。

                                   

圖 1:移動設備上準確型模型(上)和快速型模型(下)的平均精度與推斷時間關係。綠色折線是 NASFPN 與 RetinaNet 相結合的結果。詳情請看圖 9。

      本文中的方法基於 RetinaNet 框架 [23],因爲該框架簡單、高效。RetinaNet 框架有兩個主要的組成部分:一個骨架網絡(通常是當前最優的圖像分類網絡)和一個特徵金字塔網絡(FPN)。本文算法的目標是爲 RetinaNet 框架發現更好的 FPN 架構。圖 2 所示爲 RetinaNet 架構。

                       

圖 2:帶有 NAS-FPN 的 RetinaNet。在本文中,特徵金字塔網絡將由神經架構搜索算法來搜索。骨幹網絡和用於類和框預測的子網絡遵循 RetinaNet [23] 中的原始設計。

       爲了找到更好的 FPN,研究者利用 Quoc Le 等人在「Neural architecture search with reinforcement learning」中提出的神經架構搜索(NAS)框架NAS 利用強化學習訓練控制器在給定的搜索空間中選擇最優的模型架構。控制器利用子模型在搜索空間中的準確度作爲獎勵信號來更新其參數。因此,通過反覆試驗,控制器逐漸學會了如何生成更好的架構。

      研究者還爲 FPN 設計了一個搜索空間來生成特徵金字塔表徵。爲了實現 FPN 的可擴展性,研究者強制 FPN 在搜索過程中重複 N 次,然後連接到一個大型架構中。他們將這一特徵金字塔架構命名爲 NAS-FPN

【1】谷歌大腦提出NAS-FPN:一種學會自動架構搜索的特徵金字塔網絡:http://www.360kuai.com/pc/9f5779082a933626a?cota=4&sign=360_57c3bbd1&refer_scene=so_1

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