孫藝航 潘欣



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