于 全,宋金玉,余曉晗
(陸軍工程大學 指揮控制工程學院,江蘇 南京 210007)
Zhou等人[1]提出了一個對抽象標簽的圖像分類問題,如圖1中的圖像,該圖像的標簽不再是傳統的具體標簽,如“巴士”、“人”、“房子”,而是抽象的標簽“城鎮”。“城鎮”不屬于圖像中包含的任何一個內容,而是對多個具體對象的整合。
這類抽象標簽的圖像分類問題在實際應用中不少見,如醫學領域的CT圖像癌癥識別問題、作戰領域的作戰意圖識別問題都涉及了抽象的標簽。以作戰意圖識別為例,作戰意圖具有抽象性,是指揮員根據當前敵方的戰場態勢圖綜合推理出的。利用人工智能技術進行作戰意圖識別,識別模型需要根據戰場態勢圖的輸入信息判斷出敵方的作戰意圖(如進攻或防守),傳統的技術更多的是理解態勢,如敵方兵力和位置,如何在具體的態勢理解基礎上完成抽象的作戰意圖識別,相關的研究工作還不多。
Zhou等認為可以使用多示例學習方法解決這類問題,并提出了多示例學習算法MIML[1],該算法先學習一組子標簽(“巴士”、“人”、“房子”),然后在此基礎上推導出圖像的抽象標簽(“城鎮”),如圖1所示。但是在模型驗證實驗中使用的數據依然是基于老虎、大象、狐貍這類帶有具體標簽的圖像數據,并沒有真正將算法應用于像“城鎮”這類帶有抽象標簽的圖像數據。

圖1 通過開發子標簽推導出“城鎮”這個抽象標簽
多示例學習(multi-instance learning,MIL)最早是由Dietterich等人[2]在研究藥物分子活性預測中提出的,是傳統監督學習的一種變體。在傳統的監督學習中,每個對象都有一個標簽來指導算法模型學習,而在多示例學習中訓練集由若干個具有標簽的包組成,每個包由若干對象組成,這些對象稱為示例,只有包有準確的標簽信息,示例的標簽是未知的。MIL的目的是從給定標簽的包中學習分類器,并對未知標簽的包進行分類。多示例學習自提出以來,廣受學者重視,開發出了各種應對多示例學習的算法,諸如Citation-kNN算法[3]、SMILE算法[4]、MI-NET算法[5]、MInD算法[6]等,已被應用到藥物活性預測[7]、文本分類[8-9]、數據挖掘[10]、圖像識別[11-12]等問題上。
為了實現抽象標簽的圖像分類的目標,該文借助多示例學習方法思路,基于Yolo(you only look once)[13]模型和多層感知機設計并實現了解決帶有抽象標簽的圖像分類問題的算法模型,稱為多示例兩階段模型。首先利用Yolo模型完成圖像中具體對象的提取,然后將提取出的具體對象輸入到多層感知機中完成圖像抽象概念的預測。通過實驗案例表明,多示例兩階段模型能夠快速并準確對帶有抽象標簽的圖像進行分類,體現了多示例兩階段模型的可行性。
對于傳統的監督學習,每個訓練樣本都被標記,而多示例學習[14]是監督學習的一種變體,MIL的標記對象不再是一個樣本,而是一個包(bag)。每個包是若干個樣本組成的集合,這些樣本也稱為示例(instances),并且每個包都有一個訓練標簽(記為正標簽或負標簽),但包中的示例沒有標簽。如果包為負標簽,則包中所有示例都認為是負示例;如果包為正標簽,則包中至少有一個示例被認為是正標簽。MIL的目的是從給定標簽的正包和負包中學習分類器,并將未知標簽的包進行分類,劃分為正包或負包。
假設有N個包{B1,B2,…,BN},第i個包Bi由ai個示例組成{Bi,1,Bi,2,…,Bi,ai},每個示例都是一個k維屬性值向量。例如第i個包的第j個示例為[Bi,j,1,Bi,j,2,…,Bi,j,k]T,其中T表示向量的轉置。N個包對應的標簽集為{yi|yi∈{0,1},i=1,2,…,N},其中1代表包為正標簽,0代表包為負標簽。
模型框架:
在進行MIL的建模時,通常為每類示例構建分類器:
(1)
其中,fij(·)表示用于示例Bij的分類器,θ表示分類器的參數,E(·)表示分類器的誤差函數,N表示樣本數據個數。上述模型為每一類示例構建了一個分類器fij(·),借助取大函數,將每個分類器輸出,整合成包的最終輸出,即公式中的maxj{fij(Bij,θ)},然后將該輸出與對應的標簽值yi比較取誤差。以往解決圖像分類的多示例算法模型都是基于公式(1)構建的,但是使用max函數整合多個示例的輸出過于簡化,不能很好描述復雜情況。為此,該文考慮構建一個新的分類器t(·)替換該max函數,來整合所有示例輸出fi1(Bi1,θ),fi2(Bi2,θ),…,fiai(Biai,θ)。其概率模型如下:

(2)

(3)
(4)
其中,公式(3)和公式(4)分別表示第一、二階段模型,fij(·)和t(·)分別表示分類器1(第一階段模型)和分類器2(第二階段模型),θ1和θ2分別是分類器1和分類器2的參數,E1(·)和E2(·)分別是分類器1和分類器2的誤差函數。在第一階段模型中,輸入N個包到分類器1計算每個示例的輸出fij(Bij,θ1),然后根據這些輸出與對應的標簽值zj的誤差,進而優化參數θ1;在第二階段模型中,將分類器1的輸出fi1(Bi1,θ1),fi2(Bi2,θ1),…,fiai(Biai,θ1)放入分類器2計算包Bi的最終預測結果,即公式中的ti({fij(Bij,θ1)},θ2),通過對比標簽值yi優化參數θ2。
多示例兩階段模型框架如圖2所示,分類器1和分類器2各自訓練、共同預測。基于包中具體包含哪些示例的標簽,訓練分類器1的參數。例如計算機視覺領域已經有比較成熟的方法用于預測一張圖片中的多個對象,可以借助已有方法完成分類器1的訓練。在完成分類器1訓練的基礎上,利用分類器1和包的標簽對分類器2進行訓練。成功訓練后,可用于多示例樣本的預測。

圖2 多示例兩階段模型框架
針對圖像抽象概念分類問題,該文設計了第一階段使用Yolo[13]模型,第二階段使用多層感知機(MLP)的多示例兩階段模型,如圖3所示。

圖3 多示例兩階段模型
Yolo是基于深度神經網絡的對象識別和定位算法,被應用到計算機視覺領域目標檢測與分類中[15-17]。輸入一張圖像,可以輸出圖像中所包含的所有對象,以及每個對象在圖像中對應的位置,具有很高的實用性。使用Yolo作為第一階段模型,可以很好地實現對圖像中各個子對象的識別,并給出子對象的置信度(存在概率)。同時Yolo模型很成熟,可靠性高,可借鑒實例多。非常適合作為圖像抽象概念分類的第一階段模型。

第一階段使用Yolo模型的作用是對包中示例進行初步分類,得到包中所有示例存在的概率,這需要在Yolo模型的基礎上對其輸出方式進行修改。
Yolo模型的輸入圖像被劃分為7×7的網格,其中一個網格的輸出為30維向量,那么一張圖像通過Yolo模型會得到7×7×30的張量。其中,一個網格輸出的30維向量共由三部分組成:一是20個對象的概率(20種不同的對象包括人、鳥、貓、汽車等),所以這20個值分別表示該網格位置存在這20種對象的概率,記作P(Oj|Object),表示該網格存在一個對象Object,且該對象是Oj的概率是P(Oj|Object);二是2個邊框的位置,每個邊框由4個數值表示其位置;三是2個邊框的置信度,一個邊框的置信度表示該邊框是否包含對象且位置準確的程度,第s個邊框的置信度記作Confidences。根據得到的7×7×30的輸出張量,Yolo模型利用非極大值抑制算法(non-maximal suppression,NMS)輸出其中最有可能的那些對象及其所在位置。
下面根據第二階段模型的需要對第一階段Yolo模型的輸出方式進行必要的修改。在Yolo模型輸出的7×7×30張量中,有49組針對J個示例的條件概率數據:
…


(5)


(6)
其中,m表示第m個網格。基于上述方法計算包中包含各示例的概率P(I1),P(I2),…,P(IJ),計算過程如圖4所示。

圖4 第一階段模型的輸出
在設計實現第一階段模型后,完成對包的初步分類得到包中所有示例在該包中存在的概率P(I1),P(I2),…,P(IJ),本節將設計第二階段模型基于第一階段計算出的概率用于包的分類。
第二階段模型由一個三層結構的多層感知機(MLP)構成,最底層是輸入層,輸入層有J個神經元,分別用于輸入J個概率P(I1),P(I2),…,P(IJ)。中間是單隱藏層,其中神經元有K個,最后是輸出層,輸出層只有一個神經元,對應兩階段模型最終輸出y,即圖像的抽象標簽,層與層之間是全連接的。給定訓練數據{(B1,y1),…,(BN,yN)|Bi∈R1×J,yi∈{0,1}},對如式(7)的第二階段模型進行訓練:
(7)
其中,矩陣W(1)∈RJ×K和W(2)∈RK×1分別表示輸入層與隱藏層之間和隱藏層與輸出層之間的權重參數,b(1)∈R1×K和b(2)∈R1×1分別表示添加到隱藏層和輸出層的偏置,gi(·)為激活函數。因為第二階段模型屬于一個二分類的分類器,所以gh(·)使用logistic函數f(x)=1/(1+e-x)獲得0到1之間的輸出值,在進行預測時設置閾值0.5,將大于或等于0.5的輸出包的預測結果為1,否則為0。分類損失函數定義為:

(8)

本節通過實驗說明利用多示例兩階段模型解決抽象標簽的圖像分類問題的過程。
對于帶有抽象標簽的圖像分類問題,目前還沒有一個標準測試集,該文基于圖像數據集VOC 2012,引入抽象標簽設計圖像分類實驗。
首先看一下VOC 2012數據集,該數據集中訓練集中有2 501張圖像用于模型訓練,測試集中有4 952張圖像用于模型測試,數據集中圖像的標簽一共分為20類(人、鳥、貓、汽車等),其中每張圖像標簽不只有一個。但是這20類標簽都屬于圖像中包含的具體標簽,無法直接作為抽象標簽用于實驗。所以該文根據數據集特點利用專家的知識和經驗構造出規則庫生成圖像的抽象標簽“室內/室外”,其中“室內”作為多示例數據的正包,“室外”作為多示例數據的負包,同時將20類標簽則作為包中的20個示例,用于實驗。數據集標注結果如下:在VOC 2012訓練集的2 501張圖像中,得到330張標簽為“室內”的圖像,2 171張標簽為“室外”的圖像,用于多示例兩階段模型的訓練,VOC 2012測試集的4 952張圖像中,得到651張標簽為“室內”的圖像,4 301張標簽為“室外”的圖像,用于多示例兩階段模型的測試。
下面根據得到的標注數據結合多示例兩階段模型進行圖像分類的實驗。
實驗分為訓練和測試兩個階段,在訓練階段中將提出的第一階段模型和第二階段模型分開進行訓練,其中第一階段模型使用Yolo模型在VOC 2012訓練集上集訓練好的模型[13],第二階段模型中多層感知機的超參數通過調試最終設置如下:輸入層的單元數為20、隱藏層的單元數為4、輸出層單元數為1、迭代次數為100、學習率為0.05、輸出的閾值為0.5。在測試階段,使用訓練好的第一階段模型和第二階段模型共同測試。
實驗結果從兩部分給出:一是在實驗數據集上的分析;二是通過一個實驗案例進行展示。
3.3.1 實驗數據分析
在訓練集上,利用python對多示例兩階段模型進行仿真,并在測試集上對訓練好的多示例兩階段模型進行測試,選擇損失值和準確率分別對訓練過程和測試過程進行分析,其中損失值Loss通過公式(8)計算得到,準確率Acc通過下式計算得到。
(9)


圖5 多示例兩階段模型在訓練集上的 損失隨迭代次數的變化

圖6 多示例兩階段模型在測試集上的 準確率隨迭代次數的變化
圖5和圖6分別顯示了多示例兩階段模型在訓練集上的損失和測試集上的準確率隨迭代次數的變化曲線,表1顯示了多示例兩階段模型迭代結束后在訓練集上的損失和測試集上的準確率以及測試集上平均運行時間。
表1 多示例兩階段模型迭代結束后在訓練集上的損失、測試集上的準確率和測試集上的平均運行時間

指標值訓練集上的損失0.024測試集上的準確率0.935測試集上的平均運行時間1.1 s
從圖5和表1可以看出,隨著迭代次數的增加,模型不斷向著損失函數減小方向不斷進化在80代左右,損失函數逐漸收斂至最小值0.024,說明設計實現的兩階段模型能夠在訓練集上成功進行訓練。從圖6和表1中可以看出,在80代左右模型在測試集上的準確率收斂至0.935,且對一張圖像分類平均需要1.1 s,說明提出的多示例兩階段模型能夠以較好的預測效果和較快速度解決抽象標簽的圖像分類問題。
3.3.2 實驗案例
為了體現多示例兩階段模型的可行性,給出一張圖像的分類案例,如下:首先從測試集中選擇一張標簽為“室內”的圖像。將該圖像作為輸入,通過訓練好的第一階段模型計算得到輸出,如表2和圖7所示。

表2 第一階段模型的輸出

圖7 第一階段模型的輸出
表2得到了圖像(包)中包含的20個對象(示例)的概率,其中,該圖像包含椅子的概率為0.386、包含沙發的概率為0.128、包含電視/顯示器的概率為0.664,其余17個對象都不足0.1。然后將這20個概率通過訓練好的第二階段模型計算,輸出為1,也就是說將該圖像分類為“室內”(正包),即與該圖像的標簽“室內”一樣,對該圖像完成正確分類。
基于多示例學習利用Yolo模型和多層感知機創新性地設計并實現了多示例兩階段模型,解決了抽象標簽的圖像分類問題。第一階段模型繼承了Yolo對圖像識別方面快速、準確的優勢,引入max函數設計多示例學習算法完成對包的初步分類,得到包中所有示例在該包中存在的概率。第二階段模型則借助成本低、效率高的多層感知機來完成包中示例到包抽象類別的推導。最后,通過將多示例兩階段模型應用于圖像分類領域的一個帶有抽象標簽的實驗案例,驗證了該模型在解決更復雜的圖像分類問題時具有一定的可行性,成功拓展了多示例學習的應用領域。
目前,提出的多示例兩階段模型還存在不足,一是第二階段中使用的是比較簡單的多層感知機對于圖像抽象標簽的推導不具有可解釋性;二是多示例兩階段模型只是在圖像數據集上進行驗證,還沒有應用于實際場景中。下一步的目標是利用模糊樹、模糊決策引入專家知識來設計第二階段模型,使模型具有可解釋性,同時將多示例兩階段模型應用于作戰意圖識別這樣的實際應用場景中。