孫藝航 潘欣
摘要:當(dāng)前利用機器學(xué)習(xí)技術(shù)識別影像中的場景和語義信息在很多領(lǐng)域得到了廣泛應(yīng)用,實現(xiàn)智能識別的基礎(chǔ)是海量的圖片樣本數(shù)據(jù),在實際應(yīng)用中,這些圖片樣本往往分辨率和存儲格式不一致,需要經(jīng)過多種不同的幾何變換和抽取過程。為此,設(shè)計了一種海量圖片樣本數(shù)據(jù)的存儲與抽取系統(tǒng),建立了一種可定制的腳本化的數(shù)據(jù)存儲與抽取執(zhí)行機制,將圖片樣本的存儲、變換和抽取轉(zhuǎn)換為腳本并自動執(zhí)行。實驗表明,該系統(tǒng)可以顯著提高海量圖片樣本數(shù)據(jù)的存儲和抽取效率。
關(guān)鍵詞:樣本;抽取;存儲;腳本化;機器學(xué)習(xí)
0 引言
當(dāng)前利用機器學(xué)習(xí)技術(shù)識別影像中的場景和語義信息在很多領(lǐng)域得到了廣泛應(yīng)用[1]。機器學(xué)習(xí)的基礎(chǔ)是海量的樣本數(shù)據(jù),這些數(shù)據(jù)是訓(xùn)練智能模型的基礎(chǔ)[2]。在機器學(xué)習(xí)技術(shù)的實際應(yīng)用中,通常需要引入較多的樣本來提高識別質(zhì)量[3],這些樣本可能來源于固有的機器學(xué)習(xí)庫、自主收集的圖片信息以及實驗過程中的過程影像數(shù)據(jù),這些樣本數(shù)據(jù)通常存在分辨率和存儲格式不一致的問題,需要經(jīng)過幾何變換或特定的抽取過程[4],工作量較大,限制了機器學(xué)習(xí)影像識別的應(yīng)用,因此需要引入新的技術(shù)來提高該過程的工作效率。
機械性復(fù)雜工作可以通過腳本化方式執(zhí)行完成,并可以顯著提高工作效率[5]。因此,本文提出了一種海量圖片樣本數(shù)據(jù)的存儲與抽取系統(tǒng)(A storage and extraction system for massive image sample data,SES-Sample),建立了一種可定制的腳本化的數(shù)據(jù)存儲與抽取執(zhí)行機制,將圖片樣本的存儲、變換和抽取轉(zhuǎn)換為腳本并自動執(zhí)行。實驗表明,該系統(tǒng)可以顯著提高海量圖片樣本數(shù)據(jù)的存儲和抽取效率,促進機器學(xué)習(xí)影像識別的應(yīng)用。
1 系統(tǒng)設(shè)計
1.1 ? ?系統(tǒng)總體架構(gòu)
海量圖片樣本數(shù)據(jù)的存儲與抽取系統(tǒng)采用多主機分布式處理的總體架構(gòu),其結(jié)構(gòu)如圖1所示。
在SES-Sample系統(tǒng)中包含如下組成部分:
1.1.1 ? ?客戶端
客戶端負(fù)責(zé)與用戶進行交互,負(fù)責(zé)接收用戶輸入的數(shù)據(jù)并上傳到服務(wù)器端,也可以從服務(wù)器端下載數(shù)據(jù)。對于數(shù)據(jù)傳輸通過FTP數(shù)據(jù)傳輸協(xié)議封裝,對于服務(wù)器功能的訪問以網(wǎng)絡(luò)服務(wù)的形式進行封裝。
1.1.2 ? ?服務(wù)器端
服務(wù)器端負(fù)責(zé)接收客戶端需求,可以處理圖片格式變化、幾何變換以及抽取標(biāo)簽任務(wù)。服務(wù)器開放了2個服務(wù),一是間接數(shù)據(jù)存儲服務(wù),當(dāng)客戶端請求數(shù)據(jù)訪問功能的時候,以服務(wù)器作為中轉(zhuǎn)站,將Hadoop存儲的數(shù)據(jù)轉(zhuǎn)發(fā)給客戶;二是功能范圍服務(wù),所有開放功能均以網(wǎng)絡(luò)服務(wù)形式開放。
1.1.3 ? ?存儲端
存儲端為基于Hadoop的存儲云環(huán)境,負(fù)責(zé)存儲所有服務(wù)器構(gòu)建的樣本數(shù)據(jù)。在分布式文件系統(tǒng)上,所有的圖片數(shù)據(jù)均以分布式系統(tǒng)上的獨立文件形式存在。系統(tǒng)封裝了存儲、抽樣算法,使用者可以利用客戶端對圖片樣本直接進行訪問控制,降低了此類操作復(fù)雜性。
1.2 ? ?圖片存儲模式
與傳統(tǒng)的單一文件存儲模式不同,本系統(tǒng)采用多文件、多文件標(biāo)簽的模式存儲圖片樣本,圖片樣本的存儲方式如圖2所示。
如圖2所示,當(dāng)一個圖片要存儲到SES-Sample系統(tǒng)中時,首先需要將圖片轉(zhuǎn)換為對應(yīng)的公共存儲結(jié)構(gòu),本系統(tǒng)采用的公共存儲結(jié)構(gòu)格式:每個像元3個字節(jié)(RGB格式),并以二維矩陣的形式存儲所有像元;在轉(zhuǎn)換為公共存儲結(jié)構(gòu)之后,繼續(xù)執(zhí)行多個相關(guān)的變換腳本,生成在系統(tǒng)中的真正樣本,這些樣本由公共存儲結(jié)構(gòu)+XML元數(shù)據(jù)構(gòu)成。在SES-Sample系統(tǒng)中,每個樣本是公共存儲結(jié)構(gòu)+XML元數(shù)據(jù)雙重結(jié)構(gòu),其中元數(shù)據(jù)包含著對應(yīng)樣本的關(guān)鍵信息,具體包括如下內(nèi)容:
(1)ID:在執(zhí)行第1次圖片轉(zhuǎn)換時所獲得的唯一標(biāo)識。
(2)SubID:經(jīng)歷第n次腳本變換所獲得的序號,ID和SubID聯(lián)合確定一個樣本的主鍵。
(3)TransformArray:經(jīng)歷變換的名稱和步驟,標(biāo)識該樣本經(jīng)歷了哪些幾何或者矩陣變換。
(4)Label:圖片對應(yīng)的標(biāo)簽信息。
在此基礎(chǔ)上,SES-Sample系統(tǒng)的圖片存儲算法如下:
SamplesSaveing Algorithm圖片存儲算法
Input:一個樣本sample和對應(yīng)的標(biāo)簽label,樣本變換腳本集scriptlist
Output:轉(zhuǎn)換后的存儲集合S
Begin
matrix=將sample轉(zhuǎn)換為公共存儲結(jié)構(gòu);
id=Create a UUID; S←?準(zhǔn);
for i in len(scriptlist)
subid=i;
TransformArray=獲取scriptlist[i]的名稱列表;
image=ScriptTransform(matrix, scriptlist[i]);
S←(image,(id,subid, TransformArray,label));
return S;
End
通過SamplesSaveing算法,SES-Sample系統(tǒng)完成了從輸入的初始圖片到多重變換存儲結(jié)果的轉(zhuǎn)換,每個樣本除了中立的存儲結(jié)構(gòu)之外,還帶有XML結(jié)構(gòu)的元數(shù)據(jù)。
1.3 ? ?腳本的執(zhí)行模式
本文為了實現(xiàn)多種腳本靈活運行的機制,設(shè)計了腳本的類結(jié)構(gòu)。如圖3所示,在SES-Sample系統(tǒng)中腳本處理的類結(jié)構(gòu)包含如下內(nèi)容:
(1)腳本原子父類OrigianlAlgNodeClass:OrigianlNodeClass為一個abstract類,該類封裝了進行一次變換所必須的輸入、輸出。
(2)腳本原子類ChileAlgNodeClass:該類繼承于OrigianlAlg
NodeClass類,每一個子類均具體實現(xiàn)了某一個變換的具體算法。
(3)腳本類ScriptClass:腳本類Script接收OrigianlAlgNodeClass構(gòu)成的列表,該列表可以引入多種腳本子類的實例,來描述一個樣本所經(jīng)歷的變換歷程。
(4)腳本執(zhí)行類ParsingClass:該類執(zhí)行Script中的內(nèi)容,并完成整個存儲過程。
基于以上4個類,腳本的執(zhí)行和變換算法如下:
ScriptTransform Algorithm腳本的執(zhí)行與變換
Input:一個樣本存貯結(jié)構(gòu)matrix,腳本類本實例script
Output:轉(zhuǎn)換后的結(jié)果image
Begin
foreach s in script
OrigianlAlgNodeClass itf=( OrigianlAlgNodeClass) s;
matrix=利用itf對matrix進行變換
image= matrix;
return image;
End
本系統(tǒng)通過ScriptTransform算法,實現(xiàn)了逐一進行腳本中的變換并獲得結(jié)果的目標(biāo)。
1.4 ? ?樣本的抽取模式
與傳統(tǒng)算法在使用樣本時才進行變換不同,SES-Sample系統(tǒng)存儲了大量變換用腳本,每個腳本對應(yīng)一個特定的編號。SES-Sample中的服務(wù)器端包含守護進程,在服務(wù)器處于空閑狀態(tài)時,可以自動運行腳本并存儲到云服務(wù)器中。系統(tǒng)在使用過程中,基于樣本對應(yīng)的XML描述文件,直接提取云服務(wù)中已經(jīng)存儲好的內(nèi)容,抽取算法如下:
SamplesExtraction Algorithm樣本抽取算法
Input:樣本類目標(biāo)簽label和變換類型transform,訓(xùn)練數(shù)據(jù)量trainp,測試數(shù)據(jù)量testp
Output:訓(xùn)練數(shù)據(jù)集train,測試數(shù)據(jù)集test
Begin
文件名列表list=基于樣本類目標(biāo)簽label和變換類型transform在云存儲中查詢XML文件;
list=隨機打亂list的順序;
train←?準(zhǔn); test←?準(zhǔn);
while len(train)< trainp
train←取出list中下一個XML文件,并讀取對應(yīng)圖像數(shù)據(jù);
while len(test)< testp
train←取出list中下一個XML文件,并讀取對應(yīng)圖像數(shù)據(jù);
return train,test;
End
本系統(tǒng)利用SamplesExtraction算法,可以快速實現(xiàn)特定標(biāo)簽、特定變換結(jié)果樣本的抽取。
2 對比實驗
本系統(tǒng)的客戶端部分采用C#4.0編寫,服務(wù)器端部分采用Anaconda集成開發(fā)環(huán)境下的Python 3.6編寫,圖形變換調(diào)用的是scikit-image開發(fā)包;服務(wù)器端算法程序均在Intel i9 9900K、64G的計算機上運行并測試。本系統(tǒng)客戶端界面如圖4所示,客戶端可以訪問服務(wù)器端的資源數(shù)據(jù)。
為了對比傳統(tǒng)算法和SES-Sample的應(yīng)用效果,本文引入了大型的測試數(shù)據(jù)集進行速度測試,對比結(jié)果如表1所示。
由表1可知,SES-Sample抽取樣本的速度明顯優(yōu)于傳統(tǒng)算法。
3 結(jié)語
有關(guān)人員在采用機器學(xué)習(xí)技術(shù)進行模型訓(xùn)練的時候,管理海量樣本是一個非常耗費時間的工作,相關(guān)的圖片數(shù)據(jù)變換和存儲需要花費大量的計算時間,嚴(yán)重限制了相關(guān)領(lǐng)域的工作效率。為此,本文提出了一種海量圖片樣本數(shù)據(jù)的存儲與抽取系統(tǒng),通過以圖片樣本的存儲、變換和抽取轉(zhuǎn)換為腳本并自動執(zhí)行,可以顯著提高海量圖片樣本的管理效率。
[參考文獻]
[1] 李曉理,張博,王康,等.人工智能的發(fā)展及應(yīng)用[J].北京工業(yè)大學(xué)學(xué)報,2020,46(6):583-590.
[2] 徐浩智.人工智能在模式識別中的關(guān)鍵技術(shù)[J].電子技術(shù)與軟件工程,2018(2):247.
[3] 趙永強,饒元,董世鵬,等.深度學(xué)習(xí)目標(biāo)檢測方法綜述[J].中國圖象圖形學(xué)報,2020,25(4):629-654.
[4] 張蕊,李錦濤.基于深度學(xué)習(xí)的場景分割算法研究綜述[J].計算機研究與發(fā)展,2020,57(4):859-875.
[5] 白文秀,吳瑞苗.基于Django的運維自動化系統(tǒng)設(shè)計[J].智能計算機與應(yīng)用,2016,6(3):95-97.
收稿日期:2020-08-12
作者簡介:孫藝航(1999—),女,吉林長春人,研究方向:智能信息處理、大數(shù)據(jù)分析。
潘欣(1978—),男,吉林長春人,博士,研究方向:地理信息系統(tǒng)、大數(shù)據(jù)、互聯(lián)網(wǎng)軟件技術(shù)。