張海波,李曉玲
(1.北京服裝學(xué)院 服裝材料研究開發(fā)與評價北京市重點實驗室,北京 100029; 2.北京服裝學(xué)院 圖書館, 北京 100029)
隨著網(wǎng)絡(luò)信息技術(shù)和多媒體技術(shù)的發(fā)展,在服裝數(shù)字圖書館中,建立面料圖像數(shù)據(jù)庫系統(tǒng)以實現(xiàn)對面料及其圖像的管理、開發(fā)和應(yīng)用具有重要的意義,并且已經(jīng)成為一種必然趨勢。在面料圖像數(shù)據(jù)庫系統(tǒng)中,一般對面料屬性的描述有:織物原料、紗線形態(tài)、紗線細(xì)度、織造方式、組織結(jié)構(gòu)、顏色、產(chǎn)地等[1]。用戶(設(shè)計師、讀者等)在瀏覽或挑選面料時,可以通過面料圖像的描述在面料圖像數(shù)據(jù)庫中進(jìn)行查找或檢索。
目前,大多面料網(wǎng)站或數(shù)據(jù)庫系統(tǒng)提供文本的檢索以方便用戶的瀏覽或挑選,也有少部分系統(tǒng)提供“以圖搜圖”的功能。在滿足文本搜索或“以圖搜圖”需求的同時,卻忽略了用戶的主觀情感需求[2],也即讓用戶通過情感語義對面料進(jìn)行檢索。而對圖像的信息描述、組織、存儲及檢索一直是業(yè)內(nèi)研究的熱點之一[3]。為了實現(xiàn)基于內(nèi)容的圖像情感語義檢索,輔助人們對圖像內(nèi)容的情感語義進(jìn)行理解,需要計算機(jī)對圖像的情感語義內(nèi)容進(jìn)行感知,并進(jìn)行有效標(biāo)注[4]。本文針對面料圖像本身表述的情感語義進(jìn)一步研究,以實現(xiàn)在面料圖像數(shù)據(jù)庫系統(tǒng)中讓計算機(jī)對面料圖像的情感語義自動感知和標(biāo)注,進(jìn)而實現(xiàn)基于情感語義的圖像檢索。雖然目前國內(nèi)外在計算機(jī)圖像的情感語義識別和檢索方面的研究還處于初級階段,但隨著人們生活水平的提高,人們對服裝、裝飾等蘊含的感性需求也越來越強(qiáng)烈,而面料作為服裝設(shè)計時主要考慮的因素之一,其本身的情感語義對服裝的情感表述具有重要的影響。該研究可幫助用戶對面料圖像數(shù)據(jù)庫中圖像的情感語義進(jìn)行輔助判斷,也便于用戶對面料圖像進(jìn)行查找和搜索。
為了實現(xiàn)面料圖像情感語義的感知和識別,現(xiàn)有方法是建立面料圖像底層特征和情感語義描述之間的映射關(guān)系。首先根據(jù)面料圖像的特殊性,結(jié)合面料領(lǐng)域知識,通過對面料的情感描述詞進(jìn)行篩選、投票、相關(guān)分析、因子分析等研究,得出最能表述面料圖像情感的形容詞有7對,分別是:“強(qiáng)烈的—柔和的”“溫暖的—涼爽的”“華麗的—簡約的”“高雅的—樸素的”“張揚的—文靜的”“厚重的—輕薄的”“豐富的—純凈的”,并設(shè)置情感詞對的數(shù)值范圍為[-3,+3],比如對于“強(qiáng)烈的—柔和的”詞對,如果數(shù)值越接近于“-3”,那么面料的情感語義越“強(qiáng)烈”。由此建立7維的面料圖像的情感語義心理空間[5],并進(jìn)行降維得到3維的情感因子空間[6];利用模式識別的理論和方法,通過編程對面料圖像的情感因子空間和圖像底層特征之間的關(guān)系進(jìn)行分析,得出2個空間之間的關(guān)聯(lián)關(guān)系[7];利用支持向量機(jī)(SVM)等技術(shù)通過C++編程建立2個空間之間的映射關(guān)系模型,并實現(xiàn)了面料圖像的情感語義識別[8]。
張海波等[8]利用Visual Studio 2008的C++編程對面料圖像的低層特征進(jìn)行了提取和計算,然后用SVM回歸進(jìn)行機(jī)器學(xué)習(xí)訓(xùn)練和實驗。訓(xùn)練樣本是已經(jīng)經(jīng)過主觀測試的60張面料圖像樣本。對這些面料圖像樣本提取圖像的底層特征作為向量輸入到SVM中,利用SVM的回歸方法對樣本進(jìn)行回歸分析。對實驗結(jié)果進(jìn)行分析,最終得出了實現(xiàn)面料圖像情感語義識別的映射關(guān)系模型。根據(jù)該模型,可以對任一面料圖像按照相應(yīng)的方法提取特征并進(jìn)行3個因子值的預(yù)測,從而實現(xiàn)了讓計算機(jī)對面料圖像情感語義的自動識別[8]。這些研究為本文基于情感感知的面料圖像數(shù)據(jù)庫系統(tǒng)的設(shè)計和開發(fā)打下了基礎(chǔ)。
為了在面料數(shù)據(jù)庫系統(tǒng)中實現(xiàn)基于情感感知的面料圖像自動感知計算和展示,對該系統(tǒng)的功能首先要進(jìn)行設(shè)計,以下是基本功能的設(shè)計。文中的“前臺”指面料數(shù)據(jù)庫系統(tǒng)中普通用戶可以使用的系統(tǒng)功能,“后臺”指管理員可以使用的系統(tǒng)功能。
①可按面料種類進(jìn)行顯示。由于面料種類眾多,所以需要對面料進(jìn)行分類管理,前臺顯示可以按種類進(jìn)行查看。
②實現(xiàn)基于文本的檢索功能。當(dāng)用戶輸入情感詞或面料屬性的相關(guān)描述,可以搜索到相關(guān)的圖像,方便用戶搜索和查詢。
③類別展示頁面可按描述進(jìn)行分類檢索。比如按“圖案”的“植物花卉”就可以搜索到帶有“植物花卉”圖案的所有面料圖像。
④可展示每款面料圖像的基本屬性描述,其中包括情感描述。情感描述分為2部分:一是由計算機(jī)自動識別和標(biāo)注的數(shù)據(jù),二是用戶利用面料顯示頁面進(jìn)行打分,后臺計算機(jī)對打分?jǐn)?shù)據(jù)進(jìn)行統(tǒng)計的數(shù)據(jù)平均值。
⑤可對面料圖像的情感語義描述進(jìn)行打分,用戶通過頁面對面料圖像進(jìn)行情感語義描述的打分。
⑥前臺具有新聞或通知顯示功能。主要是新聞或通知的列表以及詳細(xì)頁面的展示。
⑦用戶在前臺頁面可以注冊成網(wǎng)站會員。
①后臺可對面料圖像進(jìn)行管理。主要是上傳、刪除和修改。上傳時可輸入屬性描述,并自動計算情感語義描述值,一般每款面料可能有幾種圖像,比如正面的、折疊時的圖像,把其中一張正面的圖像設(shè)置成“主圖”,計算機(jī)自動感知主圖的情感語義描述并計算出情感語義描述值,其他附圖可不予計算。
②后臺可對前臺面料圖像的投票打分進(jìn)行統(tǒng)計,并提供統(tǒng)計報表。
③后臺可對新聞或通知管理的類別、內(nèi)容等進(jìn)行管理,包括增加、刪除和修改。
④后臺可對會員進(jìn)行管理,包括審核、刪除、增加、修改、權(quán)限分配等功能。
后臺還有訪問統(tǒng)計、數(shù)據(jù)維護(hù)等其他功能。
動態(tài)鏈接庫(Dynamic Link Library)技術(shù)是重要的代碼重用技術(shù)之一,是微軟公司為Windows和OS/2操作系統(tǒng)設(shè)計的供應(yīng)用程序調(diào)用的共享函數(shù)庫,簡稱DLL。動態(tài)鏈接庫是應(yīng)用程序的一種擴(kuò)展,它包含了可以由多個程序同時使用的代碼和庫資源,可提供給其他進(jìn)程進(jìn)行調(diào)用,是軟件共享和重用的重要技術(shù)之一。
在Visual C++中,動態(tài)鏈接庫主要分為3類:非MFC的DLL、MFC規(guī)則DLL和MFC擴(kuò)展DLL。本文采用第1種DLL。非MFC的DLL(Non-MFC DLL)使用SDK API進(jìn)行編程,能被所有編程語言調(diào)用,體積相對較小,也稱為Win 32動態(tài)鏈接庫。這種DLL不使用MFC類庫,直接用C語言編寫,導(dǎo)出函數(shù)的接口一般為標(biāo)準(zhǔn)的C接口,既能被非MFC程序調(diào)用,也可以被MFC編寫的程序調(diào)用[9]。
一般有2種調(diào)用動態(tài)鏈接庫的方式:動態(tài)調(diào)用和靜態(tài)調(diào)用[10],本文采用的是動態(tài)調(diào)用。動態(tài)調(diào)用就是在程序中使用LoadLibrary()/FreeLibrary()動態(tài)地獲得DLL函數(shù)及類成員變量的指針。然后通過指針調(diào)用函數(shù)/成員函數(shù)。這種方法比較適合在大型項目中使用,用戶在要使用動態(tài)鏈接庫時才去加載,使用后就釋放掉,可有效的提高內(nèi)存的利用效率[11]。
動態(tài)調(diào)用的主要步驟:首先定義一種存放函數(shù)地址的變量類型,和該類型的變量,再定義1個FARPROC類型的變量用來存放GetProcAddress()的指針,1個HINSTANCE類型的變量,用來存放DLL的句柄。調(diào)用LoadLibrary()函數(shù),將返回值賦給HINSTANCE類型的變量;調(diào)用GetProcAddress()函數(shù),將返回值賦給FARPROC類型的變量;將FARPROC類型的變量強(qiáng)制轉(zhuǎn)換成存放函數(shù)地址的變量,然后調(diào)用動態(tài)鏈接庫中的函數(shù)。
在C++編程和SVM進(jìn)行機(jī)器學(xué)習(xí)實現(xiàn)面料圖像情感語義識別的基礎(chǔ)上,利用動態(tài)鏈接庫技術(shù),把C++和SVM的識別程序進(jìn)行打包生成DLL文件,然后再通過編程在面料圖像數(shù)據(jù)庫系統(tǒng)中調(diào)用,從而在面料圖像數(shù)據(jù)庫中可以自動的對面料圖像的情感語義進(jìn)行感知和識別,并進(jìn)行數(shù)值標(biāo)注。這時,計算機(jī)可對數(shù)據(jù)庫中每張面料圖像自動提取其底層特征,并自動計算出其7對情感語義描述值。
根據(jù)以上思路,經(jīng)過編程和數(shù)據(jù)庫設(shè)計,通過net framework 4.0架構(gòu)實現(xiàn)了基于情感感知的功能。數(shù)據(jù)庫管理系統(tǒng)采用MS SQL Server 2015。
圖1為面料數(shù)據(jù)庫系統(tǒng)中面料圖像上傳界面,一款面料可能由幾張圖像來展示,本文只計算主圖的情感語義描述值,主圖一般為該面料的正面圖像。當(dāng)設(shè)置好“主圖”后,圖1的右邊區(qū)域自動會計算顯示出的該“主圖”的7對情感語義描述值。
圖1 面料圖像上傳界面(局部)
面料圖像的情感語義分類和檢索界面見圖2,在面料數(shù)據(jù)庫系統(tǒng)前臺點擊1個類別,就顯示這類下面面料圖像的縮略圖,不但可以按“織造方式”“圖案”等類別來查看,而且還可以按情感語義來查看。比如“溫暖的—涼爽的”,點擊“涼爽的”就把這個類別最“涼爽的”圖像排在前面展示,同樣,點擊其他情感詞,也把該情感詞描述值絕對值最大的圖像排在前面展示,并按絕對值從大到小依次排序。
圖2 面料圖像的情感語義分類和檢索界面(局部)
面料圖像數(shù)據(jù)庫中每張面料圖像的前臺顯示界面見圖3,可以看出,不僅有面料的一些常規(guī)屬性展示,還有情感語義的展示,將對情感的投票數(shù)據(jù)和識別數(shù)據(jù)的展示放在一起,不僅可以看到計算機(jī)識別出的情感描述值,還可以在圖3界面實現(xiàn)網(wǎng)上投票,并看到投票后的該圖的情感語義描述平均值。
圖3 單張面料圖像顯示界面
本文結(jié)合面料圖像數(shù)據(jù)庫系統(tǒng)的實際情況,在前期利用VC++實現(xiàn)基于內(nèi)容的面料圖像情感語義識別和檢索的基礎(chǔ)上通過動態(tài)鏈接庫和編程對基于情感感知的面料圖像數(shù)據(jù)庫系統(tǒng)進(jìn)行軟件開發(fā),從而在面料圖像數(shù)據(jù)庫系統(tǒng)中實現(xiàn)了基于內(nèi)容的面料圖像情感語義自動感知和識別,并進(jìn)行數(shù)值標(biāo)注。實際應(yīng)用中,在后臺系統(tǒng)上傳面料圖像時,只需在上傳界面點擊“主圖”二字,計算機(jī)就會自動計算該圖像的7對情感語義描述值;前臺面料類別展示中可以實現(xiàn)面料圖像按情感語義分類和檢索,前臺面料詳情展示頁面可對識別出的面料圖像的情感語義值進(jìn)行顯示。從而實現(xiàn)幫助用戶對面料圖像的情感語義描述進(jìn)行判斷,豐富了面料圖像數(shù)據(jù)庫系統(tǒng)的內(nèi)容,獲得了較好的感知和應(yīng)用效果。