龔學堯,趙逢禹
(上海理工大學 光電信息與計算機工程學院,上海 200093)
圖像語義理解以圖像為對象,知識為核心,研究圖像中的目標、目標場景之間的相互關系,進而構建圖像的語義。圖像語義理解對自動駕駛、兒童教育、圖像檢索等領域的發(fā)展都有促進作用,在人工智能的研究中具有重大的現(xiàn)實意義[1]。
早期的圖像語義理解方法主要是基于模板的方法,該方法先對圖像中的物體、動作、場景等信息進行檢測,然后將對應的詞匯填入格式固定的句子模板中,從而將圖像轉換成自然語言描述[2]。Farhadi等人采用檢測的方法推理出一個三元場景元素,通過模板將其轉化成文本,從而用自然語句輸出描述內容[3]。KulKarni等人提出了由兩步組成的圖像描述生成系統(tǒng),他們首先通過計算機視覺技術確定描述內容的最佳詞匯,然后通過自然語言統(tǒng)計的方法來構造描述文本[4]。
隨著深度學習的發(fā)展,人們提出了基于編碼-解碼的圖像語義理解模型[5-7],這種模型將圖像語義理解的任務拆成兩部分,用卷積神經網(wǎng)絡(CNN)提取圖像特征,用循環(huán)神經網(wǎng)絡(RNN)作為解碼器生成語言文字。這類方法不依賴于單一的語言模板,但不足之處是不能很好地解釋生成的單詞與圖像中對象的位置關系[8]。為了解決這個問題,Xu等人提出將注意力機制引入圖像語義理解模型,提出了soft-attention和hard-attention,有效提高了模型的性能,為后續(xù)注意力機制的發(fā)展奠定了基礎[9]。Qu等人使用CNN提取了更加豐富的特征,如顏色、輪廓等,并且將這些視覺特征加入到注意力機制中,使生成的描述更加準確[10]。Marcella等人提出了一種結合顯著圖(saliency map)和上下文的注意力機制,并且通過實驗驗證出顯著圖能在文本生成中起到重要作用[11]。
在上述方法中,基于模板的圖像語義理解方法雖能保證圖像語義中語法的準確,但完全固定的模板過于死板,會使最終的描述語言缺少多樣性?;谏疃葘W習的圖像理解方法是端到端的訓練方法,生成的描述語句不依賴于單一的語言模板,結構清晰易被理解,但仍存在著一些問題:
(1)由于生成描述依賴于視覺特征的選擇與提取,部分圖像場景目標及關系易被忽略,導致描述的文本信息不完整;
(2)文本描述的泛化能力較低,對于同一圖像數(shù)據(jù)集的圖片進行測試時可以較為準確,但對于隨機圖片進行測試時效果較差[12]。
針對一幅圖像語義理解,人們通常先根據(jù)頭腦中掌握的領域知識,識別圖像中的物體及背景,結合圖像內的信息組建出圖像的場景,綜合構建出圖像語義。而對于超出其領域知識的圖像,通常借助搜索引擎搜索對圖像的文字解釋。基于這一思想,該文提出一種基于搜索與合成的圖像語義理解方法。首先通過搜索獲取原圖像的相似圖像對應的描述文本,然后根據(jù)圖像識別獲得的目標對象以及圖像相似度對描述文本進行分析,提取最契合原圖像的描述文本作為語義合成的基礎,最后提出了一個基本的圖像語義合成方法。
為了獲得一幅圖像的語義,首先可以使用互聯(lián)網(wǎng)上的圖搜索引擎搜索相似圖像并獲得圖像的文字描述,然后對文字進行分析,構建圖像的語義信息;若搜索到的圖像對比原圖像有缺失的內容,則可對原圖像內的物體進行識別,利用圖像識別所得的目標對象進行搜索,最后將目標對象搜索到的圖像描述與原圖像搜索到的圖像描述進行語義合成,生成描述所有目標對象的圖像語義?;趫D像目標識別與搜索的圖像語義理解的處理流程如圖1所示,該流程主要包括以下四步:
圖1 基于搜索的圖像語義理解流程
(1)搜索相似圖像描述文本與圖相似計算。
將原圖像輸入圖搜索引擎,獲得原圖像對應的相似圖片及描述文本的集合。利用圖相似算法,對原圖像與原圖像搜索所得圖像進行相似度計算,并依據(jù)相似度由高到低對所得圖像進行排序。構建相似圖像與描述文本集合Similartext={(相似圖像,相似圖像對應描述文本,相似度)}。
(2)獲取目標詞與目標框圖像的描述文本。
通過目標檢測算法對原圖像內的目標對象進行識別,在原圖像中檢測目標對象的位置信息并獲取目標物的類別信息。利用目標對象的類別信息構建目標詞集合Twords={(目標詞,位置信息)}。
利用目標對象的位置信息獲取目標框圖像,將目標框圖像輸入搜索引擎以獲得目標對象的相關描述文本。構建圖像的目標對象的描述文本集合Targettext={(目標詞,目標框圖像,目標框圖像對應描述文本)}。
(3)提取圖像語義的基礎文本。
選取原圖像的相似圖像對應描述文本與圖像目標詞集合進行差異分析,若目標詞出現(xiàn)在描述文本中就認為是共有目標詞,對比計算兩者的共有目標詞數(shù)量。取每幅相似圖像的共有目標詞數(shù)量乘以其與原圖像的相似度作為選取圖像語義的度量標準,獲得乘積最大的圖像描述文本,該文本作為語義合成處理的基礎文本。
(4)語義的合成處理。
獲得基礎文本后,將該文本的共有目標詞與目標詞集合進行對比分析,如果該描述文本包含所有目標詞則直接作為圖像語義輸出,如果該描述文本中包含的目標詞不全,則提取缺失目標詞對應的目標框搜索所得的圖像描述文本,然后將基礎文本與缺失目標詞的描述文本相拼接,使最終文本擁有全部目標詞,得到完整描述。最后清除搜索所得大部分描述文本中無意義的前綴或后綴,輸出純凈的圖像語義。
為了實現(xiàn)圖1中各部分的任務,必須解決一些技術問題:在搜索相似圖像描述與獲取目標框圖像描述的過程中須調用搜索引擎搜索并獲取描述文本;另一方面由于搜索引擎獲得的圖像雖然有序但沒有具體的相似值,為了通過計算選取用于合成的基礎描述文本,須使用圖相似度計算算法來獲取相似度的值;在獲取目標詞與目標框圖像的步驟中須使用目標檢測算法來識別目標對象以獲取信息;在獲得圖像相似度與目標詞后須選取最契合原圖像的描述文本作為語義合成的基礎;最后將基礎文本與其缺失目標詞的描述文本進行拼接。下面就這些主要技術進行介紹。
使用原圖像及目標識別所得的目標框圖像分別作為圖片搜索的輸入,調用Google API搜索互聯(lián)網(wǎng)上的相似圖像及圖像自身攜帶的文本描述信息,獲得大量對應相似圖像及文本語義描述。分別將原圖像和目標框的搜索結果放置于兩個集合中,用于后續(xù)的圖相似計算及語義合成。算法1給出相似圖像與對應文本描述的搜索算法,原圖像與目標框圖像的搜索均使用該算法。
算法1:相似圖像與對應文本描述的搜索算法。
輸入:原圖像Oimage。
輸出:相似圖像與描述文本集合Similartext={(imag,txt,sim)}。
處理:
(1)初始化Similartext=Φ。
(2)GoogleSearchResult Result= GoogleSearch.doSearch(Oimage);//進行原圖像搜索并取結果。
(3)For each r in Result{
imag=r.getImage(); txt=r.getText();
//從搜索結果中提取相似圖像以及描述文本。
sim=similarity(Oimage,imag);
//調用圖相似度計算算法對原圖像與相似圖像計算獲取相似值。
Similartext=Similartext∪{(imag,txt,sim)};
}
(4)輸出處理后集合Similartext,結束算法。
由于搜索獲得的相似圖像雖然有序但沒有具體的相似度,為了獲取圖像相似度的具體值,該文使用均值哈希算法對搜索所得圖像與原圖像進行相似度計算。均值哈希算法是哈希算法的一類,哈希算法對每張圖像生成一個“指紋”字符串,然后比較不同圖像的指紋,獲取圖相似值。算法2給出圖相似度計算算法。
算法2:圖相似度計算算法。
輸入:圖像Image1,圖像Image2。
輸出:圖像相似值sim。
處理:
(1)preprocessing(Image1);preprocessing(Image2);//對圖像進行預處理,縮小尺寸,簡化色彩。
(2)Avg1=average(Image1);Avg2=average(Image2);//計算圖像像素的灰度平均值。
(3)Num1=getfingerprint(Avg1,Image1);Num2=getfingerprint(Avg2,Image2);//調用指紋計算算法獲取兩幅圖像的指紋。
(4)sim=simcalculation(Num1,Num2);//比較計算兩幅圖像指紋獲得圖相似值。
(5)輸出圖像相似值sim,結束算法。
在算法2中指紋計算算法將圖像中每個像素的灰度與其灰度平均值作比較,若灰度大于或等于其平均值則記為1,小于其平均值的記為0,隨后將比較結果按固定順序組合在一起構成圖像指紋。
圖像目標識別的目的是獲得圖像中重要目標對象對應的目標框圖像。通過目標框圖像識別其中的目標對象、目標詞與對應的描述文本。
在目標識別中,該文使用基于目標檢測任務的YOLO[13]對圖像中的目標進行識別。針對沒有在訓練集中的目標對象,無法給出目標詞的情況,利用搜索引擎和人工標注的方法對圖像中不在已有類別中的新物體進行標注,在目標檢測階段得到新物體的目標框后,將其輸入搜索引擎獲取相似圖像,根據(jù)相似圖像的標注對新物體的目標類別進行劃分,最后取結果輸入訓練集。
YOLO是一種基于深度神經網(wǎng)絡的對象識別算法。YOLO算法利用整張圖作為網(wǎng)絡的輸入,將一幅圖像分成S×S個網(wǎng)格,每個網(wǎng)格負責檢測中心落入該格子的物體,最后在輸出層回歸目標框的位置及類別概率。YOLO算法的網(wǎng)絡全貌如圖2所示,網(wǎng)絡中包含24個卷積層和2個全連接層,其中卷積層用于抽取圖像特征,全連接層用于預測物體的類別概率和坐標定位[13]。
圖2 YOLO算法目標識別網(wǎng)絡
識別得到對象的目標框及目標詞之后,將全部目標詞放入Twords構建目標詞集合。并根據(jù)目標框采用算法1搜索目標框圖像對應的描述文本,利用搜索結果構建出圖像目標對象的描述文本集合Targettext={(目標詞,目標框圖像,目標框圖像對應描述文本)}。
通過搜索得到的相似圖像的文本描述往往不夠完整,難以涵蓋原圖像中的所有目標,直接作為輸出會缺漏原圖像的部分語義。因此需要對搜索所得的文本描述進行語義處理。
文中語義處理主要分為兩步:提取圖像語義的基礎文本;合成處理基礎文本。提取圖像語義的基礎文本的具體操作為:首先利用目標詞集合與相似圖像的文本描述作差異分析,獲得兩者的共有目標詞,然后使用共有目標詞數(shù)量與圖相似度相乘,取乘積最大的文本描述作為語義合成的基礎文本。合成處理基礎文本的具體操作為:利用目標詞集合查找基礎文本中缺失的目標詞,通過圖像目標對象的描述文本集合獲取缺失目標詞對應的描述文本,將基礎文本和缺失目標詞對應的描述文本進行拼接,形成圖像語義,如算法3所示。
算法3:語義合成處理算法。
輸入:基礎文本Basictext,圖像目標對象的描述文本集合Targettext。
輸出:Stext={statement}。
處理:
(1)初始化Stext=Φ;初始化Statement=Φ;
(2)提取Targettext中的目標詞,構建目標詞集合Twords。
(3)For each tword in Twords{
if(tword不在基礎文本Basictext中){
Lackstatement=getstatement(tword,Targettext);//取缺失目標詞對應描述文本。
Statement={Basictext}∪{Lackstatement};//合成基礎文本與缺失目標詞對應描述文本。
}
}
(4)Stext=Stext∪{filtertext(Statement)};//對描述文本中可能含有的無意義前后綴做過濾處理后輸出。
(5)輸出描述Stext,結束算法。
為了測試各類圖像的語義,采用在圖像語義任務中具有代表性的MSCOCO(Microsoft Common Objects in Context)數(shù)據(jù)集[14]進行實驗。MSCOCO數(shù)據(jù)集可用于圖像識別、圖像描述生成等任務,其中包含了圖像內物體的類別、物體的輪廓坐標、邊界框坐標以及對該圖像內容的描述。圖像內容描述可用于對比文中方法獲得的圖像語義。
為了衡量生成的圖像語義的好壞,需要對圖像語義進行評估。文獻[15]通過對測試獲得的圖像描述生成四個評價等級(“極好”,“好”,“差”,“極差”)來評價圖像語義[15]。其中“極好”說明圖像描述涵蓋了圖像中所有細節(jié);“好”說明圖像描述中有詞語替代了其他一個或多個詞語,且描述均正確;“差”意味著產生的描述中出現(xiàn)錯誤的語義或者遺漏圖像中的要點;“極差”說明圖像描述的語義完全錯誤,在實驗分析中,引入了這一人工評價的準則。
STEP1:識別圖像中的目標。
使用經過預訓練的YOLOv3對COCO數(shù)據(jù)集中圖像進行識別,提取目標對象的位置信息與類別概率形成目標詞與目標框圖像。
STEP2:搜索相似圖像描述文本。
調用谷歌搜索引擎對原圖像與目標框圖像進行搜索,將搜索結果存于本地并提取圖像文本信息,構成相似圖像與描述文本集合以及圖像目標對象的描述文本集合。
STEP3:提取圖像語義的基礎文本。
使用圖相似度計算算法獲取原圖像與搜索結果圖像的相似度,使用目標詞對比搜索結果圖像的對應文本獲取共有目標詞,提取圖像相似度與共有目標詞數(shù)量的乘積的圖像的文本描述作為基礎文本。
STEP4:語義合成處理。
使用目標詞集合對比基礎文本,獲取基礎文本中缺失的目標詞,在圖像目標對象的描述文本集合中提取缺失目標詞對應的描述文本,將各缺失目標詞描述文本與基礎文本進行拼接,清理合成文本中無意義的內容。
實驗生成圖像語義后,在結果中選取了部分圖像以展示語義描述效果,表1給出了5幅圖像的語義描述。文中方法可以做到比較精準且細致地描述場景及其人物,如在表1(a)、表1(e)中,可以獲得“senior male player”以及“handsome young man”的解釋而非“man”。在實驗結果中,大部分語義在一定程度上能給出原圖的內涵、原意,如表1(b)的語義中顯示出圖像在網(wǎng)絡上的出處,表1(d)的語義中顯示出圖像所處地點;另一方面在表1(e)中,可以看出在“l(fā)ooking over shoulder”的用詞上與圖像所顯示的略有差異,這是因為在相似圖像的搜索中,圖像場景及目標大部分相似的情況下,對于方向、位置的語義判斷可能會與原圖有所差別,這也是文中方法進一步完善的地方。
表1 圖像語義描述效果
實驗隨機選取COCO數(shù)據(jù)集中814幅圖像,采用了人工評測的方法,由5名圖像語義領域的研究者根據(jù)圖像中的信息對產生的圖像語義給出評價等級。實驗結果如表2所示。
表2 COCO數(shù)據(jù)集實驗結果 %
表2中統(tǒng)計了“極好”“好”“差”“極差”四種評價等級在實驗中的占比情況,文中算法抽取的隨機圖像中77.1%的圖像語義是“好”與“極好”,而在使用相同語義評價方法的文獻[15]實驗結果中,“好”與“極好”的占比為73.4%,可以看出文中算法產生錯誤的圖像語義的概率更低,能更準確地反映圖像語義。在結果中值得一提的是,由于使用網(wǎng)絡搜索獲取文字描述加以合成,文中算法輸出的語義結果不僅單純地描述圖像內容,而且語義的多樣性和豐富程度相當充分,貼近人們對圖像的理解,這一點在“極好”的評價等級中體現(xiàn)更加明顯;另一方面,在面對復雜圖像時,針對缺失目標詞的語義合成也能使圖像中要點部分遺漏的更少。
為了研究圖像語義,提出了一種基于圖像目標識別與搜索的方法,不同于圖像理解早期基于模板的及基于編碼-解法的方法,識別圖像內目標后,采用搜索引擎獲得互聯(lián)網(wǎng)上繁多的相似圖像標注數(shù)據(jù),借助這些數(shù)據(jù),通過圖像相似度算法,提取并合成描述文本從而得到最終的圖像語義。實驗結果表明,該方法能夠較好地解決語義語法多樣性的問題,得到更為人性化的語義。其中77.1%的圖像語義能較為準確地闡述圖像內容,但部分圖像對于方向和位置的語義判斷出現(xiàn)了錯誤。在未來的研究中,可以對場景及目標位置進行分析以改善這一弊端,生成更準確的圖像語義。