1. 程式人生 > >Deep Mixture of Diverse Experts for Large-Scale Visual Recognition 閱讀及相關疑問

Deep Mixture of Diverse Experts for Large-Scale Visual Recognition 閱讀及相關疑問

1. 背景

大規模視覺識別有三大方向:
1)對網路結構改造,加深網路,增加每層網路的神經元數量。

2)做遷移學習:例如學習到的1000類分類器用在500類(大用在小)。

3)多個CNN結合:多個1000類分類器來識別10000類(小用在大)。——本文的方向

Deep Mixture :深度混合,對多個CNNFC8層的輸出進行融合。

Diverse experts:多個專家,有多個CNN,每個CNN負責不同的任務空間。

兩層本體的構造

(1) 估計類間的的語義關係,產生關係矩陣Ψ

(2) 根據語義資訊將原子類(不可再分)劃分到不同的大類

對於兩個原子類cicj它們的語義關係定義如下

;

 

在這個語義關係矩陣上進行譜聚類,矩陣Ψ被分成一些小塊,每個塊對應一個大類節點。

 

2.核心內容

A劃分任務組

 

M個類別劃分到一組,根據重疊率將上一組右邊一部分類別也放入到當前組中。

每個任務組都包含M個原子目標類別,外加一個“不在此組”的類別

(1)建立 組間相關,使得不同組之間的資訊可以進行傳遞(deep CNNs

(2)可以避免在當前任務組裡不相關的目標預測值太均衡以至於無法區分

B.每個任務組中的多工學習。

單個deep CNN聯合目標函式如下

 

 

R為每個原子類的訓練影象數,

L是視覺相似矩陣S的拉普拉斯矩陣;(S相當於鄰接矩陣)

 

AlexNet的深度特徵先用來初始化矩陣S,我們的基礎CNN獲得的特徵再進一步更新視覺相似矩陣S

 

 

類間的視覺相似度是用來估計任務間(inter-task)的相關性,正則項Tr(WLWT

用來使相關性高的兩個類別的模型引數W有很大部分是相同的。

區分同任務下語義相似的原子類別。

(1)將相同的預測部分提取出來Wj=W0+Vj

(2)聯合優化模型引數W=(W1,…,WM)

(3)使用類別‘專屬’成分Vj來區分同任務下的類別。

 

C.合併多個CNN預測的函式(Stacking Function for Fusing Diverse Predictions

)

 

 

Stacking函式使用不同的CNN得到7756個類別的預測得分來生成影象語義表徵的高階特徵。7756維的特徵再放入softmax得到7756個輸出。

關於stacking函式3個因素:
1)預測得分:
給定一張圖,對應的類別可能是不存在的或者只在其中一個CNN裡(只在一個task中,任務無重疊),或在個別幾個CNN裡,其他不相關的CNN還是可以提供預測,如下式表示第jCNN中第i個輸出(原文:pj(ci) is the ith output (for the ith atomic object class ci) in

the jth base deep CNN)

 

 

2)組間衝突:
當一張圖得到來自不同CNN的預測發生衝突時,就需要用stacking函式

3)組間的重疊率 :

任務組的重疊百分比越大,每個原子類別就分配到更多的任務組。

 

 

任務組的個數.

第一部分:ci類別在第j個任務組裡的話,值為1;反之,為lambda。

 

測試的時候怎麼做呢?又不知道是什麼類別,怎麼判斷是不是在這個任務組裡呢?

第二部分:第jCNN中第i個輸出。

第三部分:為該影象不在第j個任務組裡的概率,在任務組的話,這個值就會很小,使這個項很大。

 

7756維的Softmax目標函式如下所示

 

這個梯度反向傳播進而優化17756softmax的模型引數;

2)任務組裡的softmax

3)Deep CNNS的節點權值。

 

3.實驗部分

資料集:ImageNet10K10184,7756個原子類別)

(1) 是否Deep CNNs的個數和任務重疊的百分比;

(2) 是否多工學習演算法能用類間視覺相似度學習到顯著的CNN 和更能區分同任務下類別多工softmax

a深度混合演算法的有效性。

AlexNet Extension:直接擴充套件,將1000個輸出的softmax層換成7756個輸出的softmax

Random assignment:不考慮類別相關性隨機選取M個別組成一個任務組;

 

b)多工學習的有效性

 

橫軸為類別的序號,下面的圖都是,而不是隨類別數增加,精度增加(不再解釋)

 

c不同的重疊率的對比:

通過實驗,發現重疊率在50%的時候,模型表現是最好的。

 

 

 

 

d)不同樹結構對任務分配的影響

目前任務分配有兩種方法:兩層本體和標籤樹視覺樹,

 

 

實驗對比後可以發現本體思想效果更好,原因可能如下 1)預訓練的1000CNN不足以7756類別顯著的表徵資訊,學習視覺相似度也比較困難。(2)不夠精確的視覺相似度也就讓學習的視覺樹不夠準確。(3)使用不準確的視覺樹也就可能讓相似的類別分配到不同組。

e)不同的stacking函式:

Stack1:是本文所採用的方法。

Stack2:修改了第一小部分指示函式和第三部分,如下兩個公式

 

第一部分:指示函式如下

 

感覺有點像 NMSsoft-NMS的思想,但第三部分直接用‘不在此組’的概率,若在第j個任務組裡,第三部分的值按理趨近於0,整個值不就很小嗎?

 

(f)早融合和後融合

Late fusion:在FC8層融合,本文所使用的。

Early fusion:在FC7層結合。每個CNNFC7層的4096維特徵無縫合併為32768維特徵(8CNN),作為softmax的輸入。兩種方法的效果對比如表4所示:

 

 

(1) 後融合能有效限制每個CNN的錯誤的負面影響。

(2) 能充分利用重疊部分和‘不在此組’標籤,在CNN之間傳遞重要的資訊。是不同的CNN的預測可以進行比較。

(g) 困難的目標類別: 

有哪些是難識別的;為什麼這些類別難識別;有什麼潛在的方法可以加強這些類別的區分度。

(1)難識別的類別通常是細粒的,彼此間很難區分;

2

 

 

h)級聯的CNN

一些難識別的類別可能是因為有更高的學習複雜性,只用一個CNN來識別困難類別和簡單類別可能不是最優的方法,簡單的類別識別精度高,但困難的類別精度很低。

級聯是廣泛使用的方法來學習更好的分類器,訓練兩個CNN:第一個用來提高在簡單的目標類別上的精確度,第二用來提高困難類別上的精確度。對應的stacking函式變為如下:

 

第一部分:

 

第二部分:

第三部分:兩個CNN對‘不在此組’的輸出取平均。

 

i)使用不同型別的深度網路作為基礎CNN

分別使用了VGGGoogleNets,ResNet,可以看出ResNet的效果最好。

 

 

j)與兩個基準的對比:

與使用標籤關係圖的學習演算法比較如下

 

MixDCNN比較如下

 

ImageNet10K每個原子類別沒有大量的訓練影象,無法使MixDCNN方法產生多個有充足影象的子集。

最後對比網路引數的數量,提出的深度混合多專家演算法使用n個深度CNNN,因此網路,引數比率為n,(n是任務組的個數)。