感知算法论文(九):Towards Accurate One-Stage Object Detection with AP-Loss
文章目錄
- 摘要
- 1. 引言
- 2. 相關工作
- 3. 方法
- 3.1 Ranking Task 和 AP-loss
- 3.1.1 Ranking Task
- 3.1.2 AP-loss
- 3.2 最優化準則
- 3.2.1 誤差驅動更新
- 3.2.2 反向傳播
- 3.3 分析
- 3.4 訓練方法的細節
- 4. 實驗
- 4.1 實驗設置
- 4.2 消融學習
- 4.2.1 不同參數的對比
- 4.2.2 不同 loss 的對比
- 4.2.3 不同優化方法的對比
- 4.3 基準結果
- 5. 結論
摘要
單階段目標檢測器是通過同時優化分類損失和定位損失來訓練的
由于anchor的數量很多,存在前景目標和背景目標不平衡的問題
本文提出了一種新的框架來緩和上述不平衡問題,即使用排序方法來代替分類任務,并且使用 Average-Precision loss(AP-loss)來完成排序問題。
因為 AP-loss 是不可微且非凸的,AP-loss 不能直接被優化,故本文使用一種新的優化方法,可以將感知學習過程的誤差驅動的更新機制和深度網絡中的反向傳播機制進行巧妙的結合。
1. 引言
目標檢測需要從背景中定位并識別出目標,其面臨的挑戰是前景和背景數量極不平衡。
檢測過程是一個多任務機制,需要用不同的損失函數來解決分類任務和定位任務。
分類任務主要是識別b-box中的目標的類別,定位任務主要是預測b-box的位置。
兩階段的檢測器,首先生成確定數量的候選框,所有檢測問題可以從這些候選框中直接解決。
單階段的檢測器,需要直接從大量的預定義的候選框中預測目標類別,大量的b-box會引起前景和背景的極度不平衡,使得分類任務難以進行。
已知,對于一個平凡解(無解),幾乎所有的候選框都被預測為負標簽,分類指標可能很高,而檢測性能較差。如圖1(a)所示。
為了解決單階段目標檢測的這種問題,很多不同的方法引入了新的分類損失,如 balanced loss[23]、Focal loss[15] 和 tailored training 方法(Online Hard Example Mining (OHEM))等。這些 losses 對每個 anchor box 都分別獨立建模,在分類損失中,其嘗試對前景樣本和背景樣本重新賦權值,來適應樣本不平衡的情況,這些方法沒有考慮不同 samples 之間的聯系。設計的平衡權重是手工選取的超參數,并不能很好的適應于不同類型的數據集。
本文認為,分類任務和檢測任務之間的鴻溝阻礙了單階段目標檢測器的性能提升,本文并未從分類損失函數的修正上著手,而是直接使用排序方法(ranking)來代替分類損失。其中,關聯的 ranking loss 顯式地對關系建模,并且對正樣本和負樣本的比例不敏感。
如圖1(b)所示,本文使用 AP 作為本文目標損失,其本質上更符合目標檢測的評價指標。
由于 AP- loss 是不可微且非凸的,所以標準的梯度下降方法無法訓練,下面討論三點:
1)在結構化的 SVM 模型中學習了基于 AP 的 loss,該 SVM 模型是線性模型,所以性能受限。
2)結構化的 hinge loss 用于優化 AP loss的上屆,而不是直接優化 loss 本身
3)近似的梯度方法可以用于優化 AP-loss,但效率不高,且容易陷入局部最優。
綜上,優化 AP-loss 仍然是一個開放性問題。
本文中,我們用 ranking task 來代替單階段檢測器的 classification task,故我們使用基于 ranking 的 loss(AP-loss)來解決類別不平衡的問題。
詳細來講,本文提出了一種新的基于誤差的學習策略,來有效的優化基于 AP 的不可微的目標檢測函數。
也就是說,給單階段檢測器的得分輸出添加了一些額外的變換,來獲得 AP- loss,包括線性變換(將 scores 變換成成對的偏差),之后利用非線性且不可微的“激活函數”將成對偏差變換成 AP-loss 的主要內容,最后就可以通過將原始 term 和 label vector 進行點乘來獲得 AP-loss。
受感知學習方法的啟發,我們使用誤差驅動的學習方式,來直接通過不可微的激活函數傳遞更新的信號。
不同于梯度方法,我們的學習機制給每個變量的誤差一個更新信號的比率,之后使用反向傳播來傳遞權值更新信號。
本文從理論和實際上都證明了提出的優化方法不會出現不可微可非凸的情況,本文主要貢獻如下:
- 提出了新的框架來解決分類樣本正負不均衡的問題
- 提出了誤差驅動的學習機制,可以有效地優化不可微且非凸的基于 AP 的目標函數
- 通過實驗驗證,本文方法相比于使用 classification loss 的方法效果更好
2. 相關工作
單階段檢測器:目標檢測中,單階段方法可以比兩階段方法更簡單且更高效。
眾所周知,單階段目標檢測器的優良效果得益于密集的anchors,但這會導致前景和背景目標的不平衡,為了解決這個問題,OHEM [18, 31] 和 Focal Loss [15] 被用來降低簡單樣本的權重,然而,該問題仍然沒有得到有效的解決。
首先,手選超參數難以泛化到其他數據集
其次,anchors 之間的關系沒有很好的建模
用于目標檢測的 AP loss:
AP 被當做評價指標,但由于其不可微和非凸性,難以用作優化函數,本文的方法有四個特點:
1)本文方法可以被用于任何可微線性或可微非線性模型,如神經網絡,其他的那些方法,如[37,19] 僅僅可以在線性 SVM 模型中起作用。
2)本文方法直接優化 AP- loss,[20]會導致 loss 出現 gap
3)本文方法不是近似的梯度,且不受 [34,9] 中的目標函數非凸性的影響
4)本文方法可以端到端的訓練檢測器
感知學習方法:
本文優化準則的核心是“誤差驅動更新”,是感知學習方法的泛化版本,有助于克服不可微目標函數的困難。
感知器是使用階躍函數作為激活函數的簡單的人工神經元,感知學習方法是由Frank Rosenblatt [26]最初提出的,因為階躍函數是不可微的,其不適合于使用梯度更新準則,但該方法也沒有使用類似于交叉熵損失函數的方法來代替優化函數,而是使用“誤差驅動更新”方法來更新權值。
當訓練數據是線性可分的時,該方法能夠保證在有限次數內收斂。
3. 方法
我們主要是使用基于 ranking task 的 AP-loss 來代替 classification task。
圖2展示了本文方法的兩個主要結構:ranking 過程 + 誤差驅動更新準則
3.1 Ranking Task 和 AP-loss
3.1.1 Ranking Task
傳統單階段檢測器:
給定輸入圖像 III
假設預定義的 anchors 序列是 BBB
每個anchor bi∈Bb_i \in Bbi?∈B
同時給每個 anchor 根據真實值和 IoU 策略都分配一個 label ti∈{?1,0,1,...,K}t_i \in \{-1,0,1,...,K \}ti?∈{?1,0,1,...,K},1~K 表示目標類別 ID,“0” 表示背景,“-1” 表示忽略的 anchor。
訓練和測試階段,檢測器給每個 anchor 都輸出一個得分向量 (si0,...,siK)(s_i^0, ...,s_i^K)(si0?,...,siK?)
本框架中,一個 anchor 不再有 K+1K+1K+1 維的得分預測,將每個 anchor 都復制 K 次來得到 bikb_{ik}bik? ,其中 k=1,...,Kk=1,...,Kk=1,...,K,且第 kkk 個anchor 負責第 kkk 個類別的檢測。
每個 anchor bikb_{ik}bik? 都會依據 IoU 準則(-1 表示未被計入 ranking loss)都會被分配一個 label tik∈{?1,0,1}t_{ik}\in\{-1,0,1\}tik?∈{?1,0,1}。
因此,在訓練和測試階段,對于每個 anchor,檢測器將僅僅預測一個標量得分 siks_{ik}sik?。
圖3展示了本文的標簽分配方法
ranking task 影響,每個正值 anchor 都應該被排到負值 anchor 的前面。
ranking 結果的 AP 是從所有類別的得分中得到的,不同于目標檢測系統的 meanAP。
我們用這種方法計算 AP,因為得分的分布對所有的類別都是一致的,但對每個類別分別排序的話無法達到這個目標。
3.1.2 AP-loss
為了簡單起見,在復制之后我們仍然使用 BBB 來表示 anchor, bib_ibi? 表示第 iii 個沒有復制的 anchor 。
每個 bib_ibi? 對應一個標量得分 sis_isi? 和一個二值label tit_iti?。
一些變化需要表示為如圖2所示的形式。
首先,差分變換將得分 sis_isi? 轉化成不同的形式:
其中,s(bi;θ)s(b_i;\theta)s(bi?;θ) 是基于 CNN 的得分函數,θ\thetaθ 是 bib_ibi? 的權重。
ranking label 變換將labels tit_iti? 轉化成對應的有序形式::
其中,1 是指示函數,當滿足下標條件時,成立,其他情況都為0。
之后,定義一個向量值激活函數 L(?)L(\cdot)L(?) 來得到 AP-loss 的初級形式:
其中,H(?)H(\cdot)H(?)是階躍函數:
當沒有兩個樣本的得分相等時,將該排序定義為 “proper ranking"。
不失一般性,我們將直接打破該聯系,把所有的 ranking 當做 proper ranking 。
此時, AP-loss LAPL_{AP}LAP? 變為下列形式:
rank(i) 和 rank+(i) 定義了得分 sis_isi? 的ranking 位置
P={i∣ti=1}P=\{i|t_i=1\}P={i∣ti?=1},N={i∣ti=0}N=\{i|t_i=0\}N={i∣ti?=0},∣P∣|P|∣P∣ 是序列 PPP 的大小, LLL 和 yyy 是LijL_{ij}Lij? 和 yijy_{ij}yij? 的向量形式,<,><,><,> 表示內積。
最終,待優化的目標函數為:
其中,θ\thetaθ 是權值,激活函數 L(?)L(\cdot)L(?) 是不可微的,故需要一種新的參數更新方法,而非傳統的梯度下降法。
除了 AP 指標,其他的基于 ranking 的方法也可以被用來設計 ranking loss。
一個例子是 AUC-loss[12],使用 ROC 曲線下的面積來進行 ranking,且激活函數有些許的特殊:
由于 AP 和目標檢測任務的評估準則一致的,所以我們認為 AP-loss 直觀上比 AUC-loss 更適合于檢測任務,并將為我們的實驗提供實證研究。
3.2 最優化準則
3.2.1 誤差驅動更新
考慮感知學習準則,輸入變量的更新方法是“誤差驅動”的,也就是說更新是源于期望輸出和現有輸出的差值。
我們使用該方法,并將其擴展到更一般化的情況,即激活函數的輸入和輸出是向量。
假設 xijx_{ij}xij? 是輸入, LijL_{ij}Lij? 是輸出,則 xijx_{ij}xij? 的更新方式如下:
△xij=Lij??Lij\bigtriangleup x_{ij}=L_{ij}^*-L_{ij}△xij?=Lij???Lij?
其中,Lij?L_{ij}^*Lij?? 是真實標簽。
注意到, 當每個項 Lij?yij=0L_{ij} \cdot y_{ij} =0Lij??yij?=0 時,AP-loss 取最小值,且最小值為0。
此時有兩種情況:
- 當 yij=1y_{ij}=1yij?=1 時,可以設定期望標簽 Lij?=0L_{ij}^* =0Lij??=0
- 當 yij=0y_{ij}=0yij?=0 時,不關心更新量,且設置其為0,因為此時不會對 AP- loss 有任何貢獻。
因此,更新機制簡化為:
△xij=?Lij?yij\bigtriangleup x_{ij}=-L_{ij} \cdot y_{ij}△xij?=?Lij??yij?
3.2.2 反向傳播
此時我們有期望更新:△x\bigtriangleup x△x
之后,需要尋找模型權重 △θ\bigtriangleup \theta△θ 的更新方式
我們使用點乘來測量連續移動的大小,且用基于 L2?normL_2-normL2??norm 的懲罰方法來調整權重變化(△θ\bigtriangleup \theta△θ)。
優化問題如下:
其中,θ(n)\theta^{(n)}θ(n) 定義了第 nnn step 的模型權重,第一階的擴張是:
其中,?x(θ(n))/?θ\partial x(\theta^{(n)})/ \partial \theta?x(θ(n))/?θ 是 Jacobian 矩陣。
忽略高階無窮小,可以得到 step-wise 最小化過程:
最優解可以通過尋找固定點來獲得。
之后,最優 △θ\bigtriangleup \theta△θ 的形式是和鏈式導數更新法則一致的,這就意味著可以直接將 xijx_{ij}xij? 的梯度設置為 ?△xij-\bigtriangleup x_{ij}?△xij?(Eq.9),且可以通過反向傳播進行傳遞。
所以得分 sis_isi? 的梯度可以通過反向傳播差值來獲得:
3.3 分析
收斂性:
為了更好的理解 AP- loss 的形狀,首先提供了最優準則收斂性的理論分析,其受啟發于原始的感知學習方法。
命題1:
在滿足以下條件的情況下,能夠保證AP- loss 優化準則在有限次內收斂:
1)學習模型是線性的
2)訓練數據是線性可分的
一致性:
除了收斂性以外,我們也觀察了本文提出的優化準則和 classification-loss 具有內在一致性。
觀察1:
當激活函數 L(?)L(\cdot)L(?) 采用 softmax 形式和 loss-augmented step 函數形式時,本文的優化算法可以分別表示為交叉熵損失和 hinge 損失的梯度下降算法。
3.4 訓練方法的細節
Minibatch 訓練:
minibatch 訓練準則在深度學習框架中應用廣泛,比使用單個樣本訓練的過程更為穩定。
minibatch 訓練有助于優化方法規避 “score-shift” 情況。
AP-loss 可以從一個 batch 中獲得,也可以從具有多個 anchor 的單個圖像中獲得。
假設一個極端情況:我們的檢測器可以同時預測 I1I_1I1? 和 I2I_2I2? 的完美 ranking,但是 I1I_1I1? 的最低得分都比 I2I_2I2? 的最高得分高,這就是兩個圖像的 “score-shift”,所以當單獨計算每個圖像的 AP-loss 時,會出現檢測效果較差的情況。
計算一個 mini-batch 的所有圖像的得分可以避免上述情況,所以 mini-batch 訓練是保證好的收斂性和準確性的重要前提。
分段階躍函數:
訓練初期,得分 sis_isi? 之間非常接近(即幾乎所有的 H(x)輸入都接近于0),所以,輸入的一個微小的改變將會帶來一個大的輸出改變,會改變更新過程。
為了避免該問題,我們使用下面的分段階躍函數來代替 H(x)H(x)H(x) 函數:
不同 δ\deltaδ 情況下的分段階躍函數如圖4所示。
當 δ\deltaδ 為 +0 時,該分段函數是最初的階躍函數,注意,f(?)f(\cdot)f(?) 僅僅在輸入接近于0的時候與 H(?)H(\cdot)H(?) 不同。
另外一個單調且對稱的平滑函數同樣有效,且僅僅在輸入接近于0的時候與 H(?)H(\cdot)H(?) 不同。
δ\deltaδ 的選擇和 CNN 優化過程中的權值衰減有有著很大的聯系。
δ\deltaδ 決定了正樣本和負樣本的決策邊界的寬度,小的 δ\deltaδ 得到較窄的決策邊界,會導致權值相應減小。
差值 AP:
差值 AP 廣泛用于目標檢測基準數據的評估,如 PASCAL VOC 和 MS COCO。
4. 實驗
4.1 實驗設置
本文將提出的方法用于單階段 RetinaNet [15] 上進行實驗。
PASCAL VOC:
在 VOC2007 和 VOC2012 trainval 上進行訓練,在 VOC2007 test 上進行評估
在 VOC2007 和 VOC2012 trainval + VOC2007 test 上進行訓練,在 VOC2012 test 上進行測試。
此處,使用多個 IoU 閾值( 0:50 : 0:05 : 0:95)得到的 AP 的均值作為評估標準。
設置 Eq.14 中的 δ=1\delta=1δ=1
將 RestNet 作為backbone模型,該模型在 ImageNet-1k 分類數據集上進行了預訓練。
在每個層的 FPN,anchors 有 2 sub-ociave 尺度(2k/22^{k/2}2k/2 for k<=1k<=1k<=1),和三個縱橫比 [0.5, 1, 2]。
在訓練階段固定BN層
在 2 個 GPU 上使用 mini-batch 訓練,每個 GPU 上處理8個圖像。
所有模型的訓練都迭代 160次,初始學習率為 0.001,在第110次和第140次分別下降10倍。
我們使用和 [18] 中相同的數據增強方式,在測試階段未使用任何數據增強,訓練階段,輸入圖像大小固定為 512x512,測試階段保持初始的縱橫比,并將圖像 resize ,來保證較短的邊是600 pixels。
對每個類別,使用 NMS ,IoU 閾值為0.5。
MS COCO:
所有模型的訓練都使用 trainval35k 集( 80k 訓練,35k 個驗證集中的數據),在 minival 集或 test-dev 上進行測試。
200個迭代次數,初始學習率 0.001,在第 60 次和第 80 次分別減小 10 倍。
4.2 消融學習
首先研究設置參數的影響:
4.2.1 不同參數的對比
此處研究以 3.4 節中的實驗設置來進行實驗的結果,見表1。
Minibatch Training:
分段階躍函數:
Interpolated AP:
4.2.2 不同 loss 的對比
我們在 RetinaNet 上使用不同的 loss 來進行對比實驗,結果見表2。
4.2.3 不同優化方法的對比
此處同樣對不同的優化方法進行了對比:近似梯度方法 [34,9] 和結構化 hinge loss 方法 [20] 。
[34,9] 分別近似于使用平滑函數和包絡函數的 AP-loss。
基于此,我們使用 sigmoid 函數代替階躍函數,來保證梯度存在(非零且可計算)且不改變原始函數的相對大小。
與 [9] 相同,我們使用 log 域的目標函數,即 log(AP+?)log(AP+\epsilon)log(AP+?),來保證目標函數是有限的。
在 VOC2007 trainval set 上訓練檢測器,不執行 b-box 回歸任務,收斂曲線見圖 5b。
從圖中可見,通過近似梯度方法來優化的 AP-loss 可能不收斂,這很可能由于非凸和非準凸性在直接梯度下降上中失敗了。
同時,AP-loss 是用結構化的 hinge loss 來優化的,收斂緩慢且在近似 0.8 的地方穩定,這明顯比我們的誤差驅動更新方案優化的AP-loss的漸近極限差。我們認為該方法并沒有直接優化AP-loss,而是由判別函數[20]控制AP-loss的一個上界。在排序任務中,這個判別函數是人工選擇的,具有 AUC-like 的形式,這可能會導致優化的可變性。
4.3 基準結果
在消融研究中,我們選擇了三個廣泛使用的基準,對所提出的檢測器與目前最先進的單級檢測器進行了實驗比較,包括 VOC2007 test, VOC2012 test and COCO 和 test-dev sets。
消融實驗中,使用 ResNet-101 作為backbone,而非 ResNet-50,測試圖像大小為 500x500。
表3 是不同的結果。
對比 RetinaNet500[15],在 COCO 數據集上本文的方法提升了 3.0%(37.4% vs. 34.4%)。
圖6 呈現了使用 focal loss 和 AP-loss 訓練 RetinaNet 的結果,本文的方法在這三個基準數據集中的單尺度和多尺度測試中都取得了優于其他方法的效果。
5. 結論
本文中,為了解決單階段目標檢測中的類別不平衡問題,將分類損失函數替換為排序函數,并且使用 AP-loss 來實現 ranking task。
由于 AP-loss 是不可微且非凸的,我們提出了一種新的方法——誤差驅動更新機制,來優化該函數。
我們對所提出的方法進行了理論分析,實驗結果表明,該方法可以顯著提高現有單階段檢測器的性能。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的感知算法论文(九):Towards Accurate One-Stage Object Detection with AP-Loss的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么申请困难补助金 困难补助金怎么申请
- 下一篇: 感知算法论文(十):Towards Un