[ICCV 2019] Few-Shot Learning with Global Class Representations
簡單描述一下方法的流程,雖然我覺得論文摘要說得還挺清楚的:
首先利用base類和novel類的樣本初始化所有類的均值。以5-way 1-shot問題為例,meta-train的階段,每一個episode,我們都可以計算這5個類的episode類中心,然后將所有類的全局類中心和5個episode類中心都輸入到注冊模塊,得到這5個類的注冊后的類中心。然后,將query set的樣本和注冊后的5個類中心計算相似度,得到loss更新網(wǎng)絡(luò)。經(jīng)過不斷地訓(xùn)練來更新所有類的全局類中心。在meta-test階段,輸入support set的樣本,得到5個注冊后的全局類中心,用這個類中心對query set中的樣本進(jìn)行分類,得到最終的精度。
論文地址
code
問題清單
思考從問題出發(fā)。昨天老師說,有一個思路是先接受,再去找漏洞。
D \mathcal D Dmeta-train和 D \mathcal D Dmeta-test是如何構(gòu)建的?
參考4.2.1第一段的倒數(shù)第二句,few learning在構(gòu)建時分兩步:
1) 類別拆分:比如miniImageNet默認(rèn)是訓(xùn)練/驗證/測試:64/16/20。
?? D \mathcal D Dmeta-train由64+20類組成,64×600+20×nfew個樣本;
?? D \mathcal D Dmeta-test由20類組成,20×600。[見3.3第一段]
?? 此時,初始化每個類的類別表示。
2) 任務(wù)采樣:
??meta-training階段:
????1) 采樣類別,從84個類中采樣5個類
????2) 采樣樣本,novel類數(shù)據(jù)合成,由nfew個樣本得到ns+nq個樣本;
????采樣n個任務(wù)訓(xùn)練meta-learner;
??meta-testing階段,從 D \mathcal D Dmeta-test采樣600次任務(wù)計算模型性能。
全局類表示的初始化是在數(shù)據(jù)增強(qiáng)之前還是之后?
之前,見[見3.3第一段]。
全局類表示在訓(xùn)練時,是如何更新的?
數(shù)據(jù)構(gòu)建好之后,用特征均值初始化每個類的全局類表示。
在meat-training階段,模型見過多少novel類的樣本?
每個novel類只見過 n f e w n_few nf?ew個樣本。
在meta-test階段,episode的support set如何采樣?
support set用訓(xùn)練集中的ntest個類別的nfew個樣本。
[見3.3 第2段] We use the labeled images of the ntest novel classes in the training set as the support set (i.e., the few shots).
問題:類別采樣充分,樣本采樣不充分,不能測試出meta-learner的泛化性!
這個方法的局限性:不能處理增量模式。訓(xùn)練階段模型需要知道novel類的樣本。
Algorithm 1下面第二段Finally開頭,用選定的全局類中心可以識別novel類樣本。但是,這個過程不可微?怎么理解?
GCR
- 問題清單
- motivation
- method
- Registration Module 注冊模塊
- Sample Synthesis Module 樣本合成模塊
- Few Shot Learning By Registration通過注冊實現(xiàn)小樣本學(xué)習(xí)
- experiment
- FSL精度
- GFSL
- 消融實驗
motivation
在fsl中,基于元學(xué)習(xí)的方法存在一個缺陷:這些模型是在源數(shù)據(jù)( D m e t a ? t r a i n D_{meta-train} Dmeta?train?)上學(xué)到的。不能夠保證模型能夠很好地泛化到目標(biāo)數(shù)據(jù)( D m e t a ? t r a i n D_{meta-train} Dmeta?train?)上。因此,論文將novel類的support樣本也引入到訓(xùn)練過程當(dāng)中。由于novel類的support set中樣本很少,所以論文提出一種樣本合成方案來彌補(bǔ)新類樣本不足的問題。
論文有兩個重要模塊:
以下是論文所要達(dá)到的效果:
method
Registration Module 注冊模塊
計算樣本特征和類別全局表示的相似性分?jǐn)?shù):
注冊模塊的loss
Sample Synthesis Module 樣本合成模塊
真實圖片通過裁剪、翻轉(zhuǎn)和幻想技術(shù),一共得到 k t k_t kt?張圖片。采樣 k r k_r kr?張( k r k_r kr?采樣自[0, k t k_t kt?]分布并向上取整),從對應(yīng)的特征表示集合 f 1 , . . , f k r {f_1, .., f_{k_r}} f1?,..,fkr??的子空間合成一個新的樣本 r c j r_{c_j} rcj??( c j c_j cj?類)。具體做法如下:
從[0,1]均勻分布中采樣 k r k_r kr?個數(shù) { ν 1 , … , ν k r } \{ \nu_1, \dots, \nu_{k_r} \} {ν1?,…,νkr??},然后對 k r k_r kr?個特征加權(quán)平均得到新的樣本 r c j r_{c_j} rcj??。
Few Shot Learning By Registration通過注冊實現(xiàn)小樣本學(xué)習(xí)
流程如下:
初始化類別表示:取每類的所有樣本視覺特征的平均值作為初始化類別表示;(模型的目的就是基于該初始化學(xué)習(xí)novel類的全局類別表示);
each training iteration,一個episode/mini-batch通過以下三個步驟獲得:
1)從所有類別 C t o t a l = C b a s e + C n o v e l C_{total}=C_{base}+C_{novel} Ctotal?=Cbase?+Cnovel?中采樣 n t r a i n n_{train} ntrain?個類作為 C t r a i n C_{train} Ctrain?;
2)從training set里為 C t r a i n C_{train} Ctrain?中的每個類隨機(jī)選取 n s n_s ns?個樣本組成support set S = { ( x i , y i ) , i = 1 , … , n s × n t r a i n } S=\{(x_i, y_i), i=1,\dots,n_s \times n_{train} \} S={(xi?,yi?),i=1,…,ns?×ntrain?};
3) 從training set里為 C t r a i n C_{train} Ctrain?中的每個類選取 n q n_q nq?個樣本組成query set Q = { ( x k , y k ) , k = 1 , … , n q × n t r a i n } Q = \{ (x_k, y_k), k=1,\dots,n_q \times n_{train} \} Q={(xk?,yk?),k=1,…,nq?×ntrain?}
注意: 每個novel類只有 n f e w n_{few} nfew?個標(biāo)注樣本,所以先增廣到 n s + n q n_s+n_q ns?+nq?個樣本。
each testing iteration, 一個episode和training episode在三個方面不同:
1)從novel類別集合 C n o v e l C_{novel} Cnovel?中采樣 n t e s t n_{test} ntest?個類作為 C t e s t C_{test} Ctest?;
2)從training set里為 C t e s t C_{test} Ctest?中的每個類選取 n f e w n_{few} nfew?個樣本組成support set S = { ( x i , y i ) , i = 1 , … , n f e w × n t e s t } S=\{(x_i, y_i), i=1,\dots,n_{few} \times n_{test} \} S={(xi?,yi?),i=1,…,nfew?×ntest?};
3)從 D t e s t D_{test} Dtest?里選取query set。
訓(xùn)練階段:
得到每個類的局部類別表示,計算注冊損失:
V i = [ v i 1 , . . . , v i N ] T V_i = [v_i^1, ..., v_i^N]^T Vi?=[vi1?,...,viN?]T表示局部類別表示和全局類別表示的相似度分?jǐn)?shù),過一個softmax得到,概率分布 P i = [ p i 1 , . . . , p i N ] T P_i = [p_i^1, ..., p_i^N]^T Pi?=[pi1?,...,piN?]T,利用加權(quán)求和得到support set中所有類別的估計類別表示,即, ξ i = P i G ξ_i = P_iG ξi?=Pi?G,根據(jù)得到的“全局類別表示”計算query set上的分類損失:
訓(xùn)練階段的總loss如下:
測試階段:
測試階段,先將support set中的樣本輸入到特征提取網(wǎng)絡(luò)得到所有樣本的特征,然后計算每個類的局部類別表示,將這些局部類別表示和全局類別表示輸入到注冊模塊,得到估計的全局類別表示。用 ξ i ξ_i ξi?進(jìn)行分類。
experiment
FSL精度
GFSL
消融實驗
B ?- 視覺特征均值作為類別表示
S1 - 用真實樣本生成新樣本
S2 - 用S1中的樣本生成一個新的樣本
R ?- 注冊模塊
總結(jié)
以上是生活随笔為你收集整理的[ICCV 2019] Few-Shot Learning with Global Class Representations的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逆向初学者做题记录3.28
- 下一篇: 【高级软件工程课后作业】