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