多示例多标签学习(MIML系列文章总结)
從入學以來就一直調研圖像標注相關文章。調研發現,傳統的監督學習中,一個圖像區域以一個instance(示例)呈現,并僅關聯于一個label(標簽)。很多圖像多標簽標注的方法是通過將圖像進行物體分割(object segmentation)或物體檢測(object detection),然后對每個區域的物體進行標注。而多示例多標簽學習(MIML)方法省去了檢測/分割部分工作。
MIML的問題闡述。給定一個MIML數據集由{(X1, Y1), (X2, Y2), …, (Xn, Yn)}表示,其中有n幅圖像,即n個bags(包),每個bag Xi由z個instance組成即{xi,1, xi,2, …, xi,z};每幅圖像的對應標簽集合由L個標注組成{y1, y2, …, yL}。
下面我將從三篇文章對MIML的算法思想進行解讀。
Fast Multi-Instance Multi-Label Learning
Problem Defination
處理多標簽分類的最簡單的方法是利用訓練多個單標簽分類模型將其分解成多個單標簽問題。然而傳統的這種方法將標簽進行獨立處理忽略了標簽之間的關聯關系。本文將多標簽多示例學習分解為了兩個部分:第一個部分將原始的圖像特征空間進行線性映射到一個低維的共享空間;然后第二部分基于這個共享空間學習標簽特定模型。
給定一個示例x,定義如下的分類模型: fl(x)=wlTW0xf_l(x)=w_l^TW_0xfl?(x)=wlT?W0?x
其中,W0W_0W0?代表將特征空間xxx映射到共享空間的轉換矩陣,wlw_lwl?代表是標簽lll的權重向量,如圖3所示。
此文又提出了利用sub-concept(子概念)的方法來處理復雜文中提到,即使圖4所示的三幅圖像都具有標簽mountain,然而其卻具有不同的子概念:即a mountain of sand, a snow mountain, mountain covered with trees。此處,假設每個標簽具有KKK個子概念,對于具有標簽lll的給定示例,通過檢查KKK個模型的預測值,然后選擇具有最大預測值的子概念所在的標簽作為其預測標簽lil_ili?,公式如下
fl(x)=maxk=1...K(fl,k(x))=maxk=1...K(wlTW0xf_l(x)=max_{k=1...K}(f_{l,k(x)})=max_{k=1...K}(w_l^TW_0xfl?(x)=maxk=1...K?(fl,k(x)?)=maxk=1...K?(wlT?W0?x)
objective:
通過這樣的方式,將MIML分類問題轉換為了標簽排序(label ranking)問題,因此,訓練目標是將相關標簽排序在非相關標簽前面。
定義得分函數R(x,l)=∑I[fj(X)>fi(X)]R(x,l)=\sum I[f_j(X)>f_i(X)]R(x,l)=∑I[fj?(X)>fi?(X)],通過這個函數計算不相關標簽在包XXX中排在相關標簽前面的個數。基于RRR,進一步定義ranking error e(X,l)=∑i=1R(X,l)1/ie(X, l)=\sum_{i=1}^{R(X,l)} 1/ie(X,l)=∑i=1R(X,l)?1/i,顯然如果排序錯誤越大那么得分RRR就會越高。將此得分擴展至所有訓練標簽集YYY中,其表示為
Ψ(X,l)=∑j∈Ye(X,l)\Psi (X, l)=\sum_{j\in Y}e(X,l)Ψ(X,l)=∑j∈Y?e(X,l)
那么,最后的訓練目標函數就是最小化排序損失,如下:
DeepMIML
特點是用深度神經網絡模型進行多示例多標簽學習。利用deep neural network來提取示例特征,并完成示例和標簽的匹配打分。
Approach
單個示例的2D子概念層(2D sub-concept layer for single instance)
在語義豐富的任務中,類別標簽可能帶有復雜的信息,因此,這篇文章延續了上一篇提出的示例子概念的思想,通過構建sub-concept layer完成每個類別標簽在instance和sub-concept之間的匹配打分。具體來說,一個示例特征用xxx表示,一個全連接2D層的大小為K?LK*LK?L。對于一個給定的示例向量xxx,這個子概念層中的(i,j)(i,j)(i,j)結點代表這個示例向量xxx與第jjj個標簽的第iii個子概念的得分。那么,子概念層中第(i,j)(i,j)(i,j)個結點的激勵函數為ci,j=f(wi,jx+bi,j)c_{i,j}=f(w_{i,j}x+b_{i,j})ci,j?=f(wi,j?x+bi,j?)
此處,f(?)f(·)f(?)是激勵函數,權重項鏈wi,jw_{i,j}wi,j?可以被翻譯為第jjj個標簽的第iii個子概念與特征向量匹配模板。
為了預測label,利用column-wise pooling操作在K?LK*LK?L大小的子概念層,最后得到L?1L*1L?1大小的label的分層,意味著示例xxx與輸出標簽的匹配得分,這部分操作如圖5所示。
多個示例的3D子概念層(3D sub-concept layer for multiple instances)
我們都知道,在多示例多標注學習中,一幅圖像被視為裝有多個instacne的一個bag,因此,本文提出了3D子概念層用于建模圖像特征、多個子概念和多個示例的匹配得分。理解了2D子概念層,3D子概念層就很清晰了。即把多個2D子概念層進行堆疊,其深度為示例的數量即標簽的數量。3D子概念層中第(i,j,k)(i,j,k)(i,j,k)個結點的意義代表著第kkk個示例特征與第jjj個標簽的第iii個子概念的匹配得分。
為了得到示例和標簽的關系,進行兩次池化操作。具體來說,第一次在3Dtensor上進行垂直最大池化,得到大小為L?ML*ML?M 的2D得分層,在這層中,位于(i,j)(i,j)(i,j) 的結點代表著instance iii 和label jjj的得分。第二次池化操作后得到大小為L?1L*1L?1的標簽得分層。
DeepMIML
傳統的利用深度神經網絡提取圖像的特征是從CNN的全連接層(FC7)提取的,然而這樣的方法把圖像特征編碼為了整體特征,不能很好的體現instance level的特征。因此,本文提出直接提取conv層得到的三維特征向量(如1414512),這樣,每一個14*14的向量(一共有512個)可以被看做輸入圖像的一個示例特征。通過提取conv層的特征直接得到the representation of instances in one bag。
因此在整個DeepMIML網絡中,有一個基于VGG-16構建的instance generator即上段提到的示例特征生成網絡,一個經過池化得到的Deep instance層,一個3D子概念層,一個經過池化得到的示例得分層。
A Deep Multi-Modal CNN for Multi-Instance Multi-Label Image Classification
這篇文章在MIML上的特點是利用了多模態信息,并且考慮了標簽間的信息。
我們根據這個算法流程來講解一下這個網絡架構。首先,將類別標簽分為zzz組,每一組包含rrr個多模態示例和qiq_{i}qi?個標簽。MMCNN-MIML以一幅圖像III和每組的文本描述為輸入。具體來說,ImI^mIm輸入模塊一然后產生一袋視覺示例,即Xim=VisualInstanceGeneration(θ,Im)X_i^m=Visual_Instance_Generation(\theta, I^m)Xim?=VisualI?nstanceG?eneration(θ,Im);其次,第iii組的文本描述輸入模塊二產生一組語境表現特征tit_iti?(context representation),即ti=GroupContextGeneration(Ti)t_i=Group_Context_Generation(T_i)ti?=GroupC?ontextG?eneration(Ti?);在模塊三中,生成的視覺示例平均分至每個預先分好的組中,之后通過拼接視覺示例特征和語境表現特征得到多模態示例VimV_i^mVim?,即Vim=MultimodalInstanceGeneration(ti,Xim)V_i^m=Multimodal_Instance_Generation(t_i,X_i^m)Vim?=MultimodalI?nstanceG?eneration(ti?,Xim?);最后在模塊四中國,輸出第iii個組的每一個標簽的預測分布pimp_i^mpim?,即pim=MIMLimageclassification(Vim)p_i^m=MIML_image_classification(V_i^m)pim?=MIMLi?magec?lassification(Vim?)。
下面,分別介紹每個模塊的具體情況。
Module I:Visual Instance Generation(VIG)
文中提到,利用現有的CNN網絡并不能很好的進行多標簽圖像分類,其原因主要為兩點:第一,現有的多標簽數據集的訓練數據的量不足以很好地擬合端到端的CNN;第二,以往的CNN將每幅輸入圖像作為一個示例,并通過全連接層將輸入圖像編碼為一個密集的一維向量。這樣的方式難以區分每個示例的representation。
為了解決第一個問題,本文提出利用在ImageNet上預訓練好的CNN模型中的一部分,之后在實驗數據集上進行微調(基本都會這樣做,不細講)。具體的網絡結構安排為,將VGG16網絡的后三個卷積層和相應的池化層及最后的全連接層替換為兩個adaptation layers(結構如圖8所示)。
為了解決第二個問題,本文和DeepMIML一樣,選擇使用卷積層而不是全連接層的特征表示,原因為不同的filter會被不同的語義內容激勵,所以說用卷積層產生的特征圖能更好的代表instance的特征表示。具體來說,最后一個adaptation layer生成大小為d?14?14d*14*14d?14?14的特征集,每一個維度為14?1414*1414?14的特征圖作為一個視覺示例xijmx_{ij}^mxijm?的特征表示。然后將這些生成的視覺示例分至每個標簽組,這樣ddd的值即為z?rz*rz?r(一共有zzz組,且每個標簽組中含有rrr個視覺示例)。
Module II: Group Context Generation
本文的一個特色就是借助多模態數據擬補單模態圖像數據的數量不足的缺點。其采用的做法是結合每一組的文本描述來為相關的視覺示例提供語境信息,而不是傳統的利用圖像描述。在這個模塊中,每組描述首先被編碼至固定長度的向量,然后通過MLP(多層感知機)映射到與視覺示例相同維度的向量表示。具體做法如圖9,即文本利用skip-thought模型進行編碼,然后通過多層感知機得到最終的向量表示。
Module III: Muti-Modal Instance Generation
此部分主要講解了,怎樣將文本描述的向量表示與視覺示例的向量表示進行融合得到多模態示例的向量表示。此操作的對象主要是每個組,因此,在組內本文引入了相似度頁數使得視覺示例與相應的語境表示距離相近。
在上述分好的每個組中,通過拼接視覺示例和相應的語境表示生成多模態示例。這種做法的主要原因是不同模態包含了不同的信息,可以擬補其他模態信息的不足(參見多模態學習→ _→)具體的做法是,對于第iii組,第jjj個示例的多模態信息由vijmv_{ij}^mvijm?表示,通過拼接視覺示例xijmx_{ij}^mxijm?和語境表示tit_iti?,其中∣∣||∣∣表示拼接操作符,α\alphaα是一個權重調節參數。公式為vijm=α?xijm∣∣(1?α)?tiv_{ij}^m=\alpha \cdot x_{ij}^m||(1-\alpha)\cdot t_ivijm?=α?xijm?∣∣(1?α)?ti? 。
并且,由于一個組中的視覺示例的特征表示與這個組的語境表示應具有更高的語義相似度(比其他組的語境表示),因此定義相似度約束:
Hingeloss(Xim,Ti)=∑u≠i,u=1zmax[0;margin?cos(ti,wi)+cos(tu,wi)]Hinge_loss(X_i^m, T_i)=\sum_{u\neq i,u=1}^zmax[0;margin-cos(t_i,w_i)+cos(t_u,w_i)]Hingel?oss(Xim?,Ti?)=∑u??=i,u=1z?max[0;margin?cos(ti?,wi?)+cos(tu?,wi?)]
Module IV: MIML Image Classification
在此模塊中,對于每個圖像,我們首先在每個組中的實例級別上執行標簽預測,然后我們在整個圖像的包級別上進行最終預測。如圖10所示。具體來說,每個組通過三個全連接層得到最終的標簽預測,即FC1,FC2,FC3。其作用是對每一個示例生成一些相關標簽。在第iii組中,FC3層使用sigmoid作為激活函數來產生示例級預測,即每個示例與該組標簽之間的匹配分數。因此,我們可以獲得r?qir*q_ir?qi?大小的2D示例-標簽得分層。
最后,為了進行包級別的預測,我們在示例標簽平分層上進行逐列最大池化操作以產生大小為qiq_iqi?的向量,其中每個條目表示圖像與每個組的一個標簽之間的匹配分數,最后通過連接所有組的得分預測來獲得包級別的得分預測。每組的損失函數定義如下
?λ1?∑k=1qi[ykm?log(pkm)]+λ2?Hingeloss(Xim,Ti)-\lambda_1 \cdot \sum_{k=1}^{q_i} [y_k^m \cdot log(p_k^m)]+\lambda_2 \cdot Hinge_loss(X_i^m,T_i)?λ1??∑k=1qi??[ykm??log(pkm?)]+λ2??Hingel?oss(Xim?,Ti?)
其中,pkmp_k^mpkm?是這個組中圖像ImI^mIm與第kkk個標簽的預測得分,ykmy_k^mykm?為ImI^mIm的真實標簽。λ\lambdaλ為參數。
---------------------------------------------------------------------------------完結-----------------------------------------------------------------------------------------
真的要寫吐了。。
總結
以上是生活随笔為你收集整理的多示例多标签学习(MIML系列文章总结)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 颅脑外伤护理查房PPT模板
- 下一篇: 触觉智能分享-Android ADB工具