BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition(理解)


原文鏈接

掃碼關注下方公眾號:"Python編程與深度學習",領取配套學習資源,並有不定時深度學習相關文章及代碼分享。


今天分享一篇發表在CVPR 2020上的論文:BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition (原文鏈接:[1])。

1 研究背景

如上圖所示,計算機視覺識別任務中經常面臨長尾數據分布的挑戰,即少數類占有多數樣本,多數類只有少數樣本。解決這個問題主要有兩類方法:重采樣(Re-Sampling, RS)和重新分配損失權重 (Re-Weighting, RW)。具體地,重采樣可以對少數樣本類進行過采樣或者對多數樣本類進行降采樣,還可以通過一些合成方法合成新的樣本,其目的是通過采樣方法使得類間樣本數分布趨於平衡。重新分配權重是根據不同類別的不同樣本數決定其損失值的懲罰系數大小,比如對於少數樣本類,其損失懲罰應該更大,通常的做法是為交叉熵損失加上各個類別的權重系數,該系數通常定義為類別樣本數的倒數。

如上圖(Figure 2)所示,這篇文章先將分類學習任務解耦成兩部分:表征學習和分類器學習。並且通過對比實驗討論分析了RW和RS分別對於表征學習和分類器學習的影響。如下圖(Figure 2)所示,以左邊圖為例,先看第1列,即固定表征學習部分的參數(采用交叉熵CE訓練得到的),從上往下3行分別表示采用RS、RW、CE訓練得到的分類器,其中RS得到的模型效果最好,RS和RW有利於分類器的學習。再看第1行,即固定分類器部分的參數(采用RS訓練得到的),從左往右分別是采用CE、RW、RS訓練的表征學習部分,可以看到CE反而是性能最好的,RW和RS實際上會對表征學習產生一些負面影響。其它行和列分析同上。因此文中認為,表征學習部分應該在數據原有的分布上進行訓練,RS和RW這些改進方法只需要加在分類器學習上即可,從而提出了Bilateral-Branch Network (BBN)以提高模型在長尾分布數據上的性能。

2 方法

2.1 整體流程

如上圖(Figure 3)所示,文中提出的BBN框架包含了三個主要部分:卷積學習分支(conventional learning branch)、重平衡分支(re-balancing branch)和累計學習策略(cumulative learning)。其中卷積學習分支和重平衡分支共享網絡參數(除了最后一個residual block)。假設一對訓練樣本描述為$x,y\in\{1,2,\cdots,C\}$,其中$C$表示類別的數量。卷積學習分支和重平衡分支分別采用均勻采樣和逆采樣(具體可見下一節分析),采樣的樣本分別表示為$(x_c, y_c)$和$(x_r,y_r)$,兩類樣本分別喂入各自的分支產生特征向量$\mathbf{f}_c\in\mathbb{R}^D$和$\mathbf{f}_r\in\mathbb{R}^D$。而后通過累計學習策略綜合兩個分支的輸出。具體地,定義權衡參數$\alpha$,將$\alpha\mathbf{f}_c$和$(1-\alpha)\mathbf{f}_r$分別作為分類器$\mathbf{W}_c\in\mathbb{R}^{D\times C}$和$\mathbf{W}_r\in\mathbb{R}^{D\times C}$的輸入,而后兩個分類器的輸出做元素相加,這個過程可以用如下公式表示,
$$\mathbf{z}=\alpha\mathbf{W}_c^T\mathbf{f}_c+(1-\alpha)\mathbf{W}_r^T\mathbf{f}_r,$$
其中$\mathbf{z}\in\mathbb{R}^C$為對每個類別的預測,例如對於每一個類別$i\in\{1,2,\cdots,C\}$的預測表示為$\left [z_1,z_2,\cdots,z_C\right ]^T$,再通過softmax函數可以得到每一個類別的預測概率,
$$\hat{p}_i=\frac{e^{z_i}}{\sum_{j=1}^Ce^{z_j}},$$
然后通過交叉熵損失函數$E(\cdot,\cdot)$計算對於預測概率$\hat{\mathbf{p}}=\left [\hat{p}_1,\hat{p}_2,\cdots,\hat{p}_C\right ]^T$的損失值。最終的損失函數可以表示為,
$$\mathcal{L}=\alpha E(\hat{\mathbf{p}},y_c)+(1-\alpha)E(\hat{\mathbf{p}},y_r).$$

2.2 卷積學習分支和重平衡分支

2.2.1 數據采樣

上一節提到卷積學習分支和重平衡分支的輸入分別采用均勻采樣和逆采樣。其中均勻采樣是指對於每一個樣本在每一個epoch中都有等概率被采樣一次,這種采樣方法能夠反映數據的原始分布,因此有利於表征學習。逆采樣中將每個類的抽樣概率設置為與其樣本數量的倒數成正比,類別中樣本數越多,采樣概率越小,假設第$i$個類別的樣本數為$N_i$,最多的類別樣本數為$N_{max}$,那么逆采樣過程分為以下三步:
1. 計算第$i$個類別的采樣概率$P_i=\frac{w_i}{\sum_{j=1}^C w_j},w_i=\frac{N_{max}}{N_i}$
2. 按照概率$P_i$選擇一個類別
3. 從該類別中等概率選擇一個樣本

重復上述過程即可得到一個mini-batch的數據。

2.2.2 權重共享

文中采用ResNets(ResNet-32和ResNet-50)作為骨干網絡,卷積學習分支和重平衡分支共享除了最后一個residual block的骨干網絡。文中認為兩個分支共享權重具有兩個優勢:
1. 卷積學習分支學習到的好的表征能夠幫助重平衡分支更好的學習
2. 共享特征能夠在推理時大量地減少計算復雜度

2.3 累積學習策略

提出累計學習策略是為了權衡卷積學習分支和重平衡分支對於最后分類損失$\mathcal{L}$的貢獻程度。其設計目的是先學習通用的特征表達模式,而后逐漸關注尾部數據。上述的過程通過控制2.1節提到的$\alpha$權衡參數實現,該參數定義為,
$$\alpha=1-\left (\frac{T}{T_{max}}\right )^2,$$
$\alpha$隨着訓練的進行越來越小,即一開始更加關注卷積學習分支中的表征學習,而后慢慢將注意力放在重平衡分支的分類器學習上。

2.4 推理過程

在推理過程中,測試樣本將同時作為卷積學習分支和重平衡分支的輸入,分別產生輸出$\mathbf{f}_c'$和$\mathbf{f}_r'$,並且固定$\alpha$為0.5,以保證兩個分支是同等重要的。而后兩個輸出分別送入相應的分類器$\mathbf{W}_c$和$\mathbf{W}_r$產生兩個概率預測,將這兩個概率預測逐元素相加得到最終分類器的輸出。

3 實驗結果

這里我只給出論文中的部分實驗結果,具體的實驗結果分析以及實驗和參數的設置請看原文。

4 參考資料

[1] https://arxiv.org/abs/1912.02413


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM