論文題目: Context-Transformer: Tackling Object Confusion for Few-Shot Detection
論文位址:https://arxiv.org/pdf/2003.07304.pdf
簡介
本文讨論了如何将遷移學習用在小樣本目标檢測任務上。若使用遷移學習,通常的做法是使用target-domain的資料對source-domain的檢測器進行微調。但是由于小樣本任務中,target-domain的資料非常少,會導緻檢測器分類失敗。為了解決這個問題,作者提出了一個Context-Transformer子產品,用以增強分類性能。
動機
作者為什麼要提出Context-Transformer子產品,以及這個子產品是如何增強檢測器分類性能的呢?
作者認為,在小樣本目标檢測任務中,定位是沒太大問題的,隻是分類有困難。為什麼會出現這種情況呢?因為目标檢測采用BBOX用于定位,OBJ+BG用于分類(BBOX指bounding box,OBJ指目标,BG指背景)。其中,BBOX和類别無關,是以直接用source-source BBOX沒有太大問題,但是OBJ+BG是類别相關的,對于新的類别是會被随機初始化,如果标注量不足,會導緻新類别的目标難以區分。
是以應該如何解決目标難以區分這個問題呢?人類識别一個物體,除了觀察物體本身的特征,還會利用周圍的環境作為線索,對物體類别進行推測。比如一張圖上有個動物,通過動物的外觀很難區分是狗還是馬,如果圖上有人騎在動物上,并且還有一大片草地,難麼這個動物是馬的可能性很大。
如果模仿人類的這個思考過程,會不會讓模型的分類性能提高呢?是以作者設計了Context-Transformer子產品來模仿人類的思考過程。首先從周圍環境尋找與待識别目标相關聯的目标作為線索,然後将線索作為附加資訊,用以增強待識别目标的特征,最後和BG一起送入分類器進行分類,使得分類性能提升。
架構
圖1
總體架構如圖,分為上下兩個部分。上半部分是正常的檢測架構(本文用了SSD),下半部分為Context-Transformer子產品。首先将target-domain的image輸入在source-domain上訓練好的SSD,然後将SSD其中一個輸出OBJ輸入Context-Transformer子產品做一個特征增強,然後将增強後的特征和BG一起送入分類器進行分類。
細節
Context-Transformer子產品
圖2
Context-Transformer子產品的輸入有兩部分:Prior Box(所有待分類的proposal)和Contextual Field(周圍環境與Prior Box相關聯的全部proposal)。Contextual Field是如何獲得的呢?文中直接取所有的Prior Box做了pool作為Contextual Field(做pool的原因是作者認為可以不用過多關注細節)。
再來看一下細節。
1.P和Q分别代表一張輸入圖像的k個空間尺度上所有像素點的m個候選區域的集合reshape成的向量。具體表示如下:
P ∈ R D p × C s , Q ∈ R D q × C s P\in R^{{}^{D_{p}\times C_{s}}},Q\in R^{{}^{D_{q}\times C_{s}}} P∈RDp×Cs,Q∈RDq×Cs
其中,
D p = ∑ k = 1 K H k × W k × M k D_{p}\ =\ \sum\nolimits^{K}_{k=1} H_{k}\times W_{k}\times M_{k} Dp = ∑k=1KHk×Wk×Mk
D q = ∑ k = 1 K U k × V k × M k D_{q}\ =\ \sum\nolimits^{K}_{k=1} U_{k}\times V_{k}\times M_{k} Dq = ∑k=1KUk×Vk×Mk
2.Affinity Matrix
矩陣A的每一列代表所有待分類的proposal,每一列代表待分類的proposal和它的Contextual之間的相關度分數。
A = f ( P ) × g ( Q ) ⊤ , A ∈ R D p × D q A\ =\ f\left( P\right) \times g\left( Q\right)^{\top } ,A\in R^{D_{p}\times D_{q}} A = f(P)×g(Q)⊤,A∈RDp×Dq
3.L
有了Affinity Matrix後,對于每一個proposal,都要計算所有proposal對應的Contextual的資訊的權值向量L(講道理,對于每個目标來說,圖像上的任何BBOX都有可能包含它,包含的越多,相關度分數越高,那麼這個BBOX中的其它目标與它相關度越高,我感覺這裡相關度高的邏輯是空間位置上越近越相關),這樣一來,L的每一行都包含了距離這個proposal中待分類目标空間位置比較近的其它目标的資訊。
L ( i , : ) = s o f t m a x ( A ( i , : ) ) × h ( Q ) L\left( i,:\right) =softmax\left( A\left( i,:\right) \right) \times h\left( Q\right) L(i,:)=softmax(A(i,:))×h(Q)
4.對proposal資訊進行增強後送去分類
增強後的資訊:
P ^ = P + ϕ ( L ) \hat{P} \ =\ P+\phi \left( L\right) P^ = P+ϕ(L)
分類:
Y ^ = s o f t m a x ( P ^ × Θ ) \hat{Y} \ =softmax\ \left( \hat{P} \times \Theta \right) Y^ =softmax (P^×Θ)
實驗
資料集
source-domain:COCO中與VOC07+12不重疊的60類所涵蓋的圖檔
target-domain:VOC07+12
Context-Transformer
1.Context-Transformer子產品對模型性能的影響
表1
Baseline表示隻用最原始的fine-tune方法,OBJ(S)代表保留source的OBJ。從表格中可看出,保留source的OBJ可以減輕過拟合,添加Context-Transformer子產品可以減輕目标分類混淆的情況,它們都能提升mAP。作者還在test的時候移除了Context-Transformer子產品,名額僅比在test階段使用Context-Transformer子產品略有下降,說明訓練階段使用的Context-Transformer子產品使得檢測器泛化能力增強。
2.Context-Transformer子產品設計細節
表2
1)是否使用pool?
實驗表明使用pool效果更好,因為找relation不需要過多關注細節,是以使用pool是可行的。而使用pool之後,由于context小了,學習的難度下降,是以性能提升。
2)是否需要使用fc?
實驗表明使用fc效果更好,因為fc增加了學習的靈活度。如果使用residual FC效果更更好,因為residual減少了小樣本場景下初始化的随機性。
3)計算兩個embedding的距離用Euclidean好還是用Cosine好呢?
實驗表明不論選哪種,效果都差不多。
4)要不要利用source的OBJ呢?
實驗表明利用了source的OBJ效果更好
shot數目的影響
表3
從表3可看出,增加shot并沒有提升,shot增加一定量的時候,模型的性能趨于穩定。作者的解釋是shot量足夠的時候,造成目标confusion的原因消失了,這時候Context-Transformer子產品對于減輕confusion的作用已經很小了,是以性能沒有變化。但是總體看,mAP還是比baseline提升了,說明在訓練時使用Context-Transformer子產品确實泛化了檢測模型。
注:我認為Context-Transformer子產品并沒怎麼減輕目标confusion,可以看表1的最後兩行,添加與不添加Context-Transformer子產品僅差了0.4個點,這個作用已經非常小了。
和其它方法對比
1.與SSD架構對比
表4
對比了2個比較早期的基于SSD檢測方法,提升了好幾個點。
2.使用其它few-shot learner替換Context-Transformer
表5
從結果看出,還是Context-Transformer性能最好,說明一般的小樣本分類方法對于提升檢測器比不過本文方法。而其中比Non-local方法要好,說明這個子產品可以減輕目标混淆(因為Non-local沒有用到context資訊)。其實這樣看來,我又有點相信Context-Transformer能減輕目标混淆了,之是以表1看起來這麼不明顯,可能可以了解為相對于檢測器泛化性能提升,減輕混淆這個提升比較小。
Context資訊的作用
1.Context Affinity
學到的Context對識别目标有沒有幫助呢?作者可視化了與目标最相關的proposal:
圖3
從圖中可以看出,Baseline錯誤的把car識别成了train,把hourse識别成了dog。而本文的模型利用了周圍環境,比如說識别hourse的時候,周圍有人,通過人這個線索,沒有把hourse錯誤的識别成了dog,說明context是起到作用的。
2.可視化檢測結果
圖4
看效果,不但類别更正确了,連位置都更準了。比如baseline裡的boat頂部,BBOX就沒能把它全部框住,而本文方法框的更準确了
3.可視化mAP前4的類别定位和分類正誤情況
圖5
從圖中看出,定位和分類都正确的數目比baseline多。正确定位錯誤分類的比baseline少,證明分了性能是改善了,錯誤定位baseline和本文方法的數目都少,說明定位錯誤的情況出現少,問題還是集中在分類上。