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