本發(fā)明涉及如何提取圖像隱藏信息完成大型圖像庫的分類后進行高效識別,并將結(jié)果輸出以供使用的方法,特別是一種基于圖像特征的圖像主體的識別方法。
在提高檢索效率方面做出了非常大的進步提升,故應用前景廣泛。
背景技術:
基于圖像特征的圖像主體的識別方法是指僅需消費者提供所需物品的圖片,便可通過本方法獲得改物品的特征信息。隨著www的急劇增長以及多媒體技術的飛速發(fā)展,快速有效地進行互聯(lián)網(wǎng)圖片信息檢索、查詢和瀏覽,成為人們的迫切需求。目前,一些現(xiàn)存的方法的圖片搜索方法,大多是采用基于文本關鍵字和鏈接信息來進行圖片的搜索和檢索,并沒有利用圖片本身的視覺內(nèi)容信息,其檢索精確度受到一定的限制。而一些基于內(nèi)容的圖片檢索系統(tǒng)則僅僅利用圖片的內(nèi)容信息來進行圖片檢索,難于解決語義鴻溝的問題。如果用戶手上有一張圖片,用以上方法查詢這張圖片的內(nèi)部信息顯然很不方便,因為一般來說,圖片搜索只是分析同關鍵詞有關的網(wǎng)絡圖片,而圖片的內(nèi)容因為多種原因不會被納入到搜索的范疇里,例如在搜圖網(wǎng)站上搜索一個用戶感興趣的物品,用戶手上有它的照片,但是不知道它的具體信息如圖片所描述的對象的種類,那就無從下手進行搜索,所以此時傳統(tǒng)的搜索方式已無法滿足消費者的要求。而通過簡單的文字搜索再對搜索結(jié)果進行瀏覽的方式,會因關鍵字的不準確而極大地限制用戶的選擇空間,所以本發(fā)明基于圖像特征的圖像主體的識別是目前最有效的可以滿足高精度檢索的方法。
現(xiàn)有的以圖搜圖技術即googlesearchbyimage,lvanheerden,siduminy,njluwes三位學者在googlesearchbyimage:asystemevaluationofadjustedimagesforthedetectionofvisualplagiarismv中提到了google現(xiàn)有的圖像搜索算法進行了概括,基本包括三個步驟:首先將目標圖片進行特征提取,描述的算法有很多,可以根據(jù)不同的圖像,設計不同的算法,比如圖像局部n階矩的方法提取圖像特征;然后將圖像特征信息進行編碼,并將海量圖像編碼做查找表,最后進行相似度匹配運算:利用目標圖像的編碼值,在圖像搜索引擎中的圖像數(shù)據(jù)庫進行全局或是局部的相似度計算;根據(jù)所需要的魯棒性,設定閾值,然后將相似度高的圖片預保留下來;最后應該還有一步篩選最佳匹配圖片。該方法對圖像特征信息進行編碼后做成查找表,特征標注越多,雖然可以提高搜索精度,但是無法避免查找時間會受到的限制;在相似度匹配計算時,閾值的確定雖然依據(jù)所需要的魯棒性確定,但是在選擇時還是需要多次試驗才能最終確認。該方法在圖片語義的分析上仍停留在較為基礎的階段,致使一些特殊輸入圖片得不到正確的匹配結(jié)果,而且大多時候會受到網(wǎng)絡限制,真正應用于國內(nèi)會不太容易實現(xiàn)。
技術實現(xiàn)要素:
本發(fā)明的目的在于可以在用戶搜索時手中僅有物品圖片其他相關信息較少的的情況下,提供一種能夠有效地根據(jù)用戶提供的圖片分析,得到正確的物體種類特征繼而進行高效搜索的工具。
實現(xiàn)本發(fā)明目的的技術解決方案為:一種基于圖像特征的圖像主體的識別方法,步驟如下:
第一步,標注選取好的訓練集的特征,首先判斷圖片中物品的所屬物種,根據(jù)不同的物種細化特征,如動物則標記具體所屬科族,全身顏色,眼睛,鼻子的特性等;詳細標注后作為訓練集待用;
第二步,選取n萬張圖片,對這n萬張圖像進行裁剪,達到統(tǒng)一的長寬規(guī)格,裁剪過程中若產(chǎn)生物體形變則替換為其他圖片,繼而利用高斯函數(shù)完成圖像平滑,去除圖像噪聲排除干擾項;循環(huán)平滑過程直到處理結(jié)果不再改變,完成圖像預處理過程,送至第三步;
第三步,形態(tài)學處理即圖像增強,利用直方圖均衡化將原始圖像的直方圖通過積分概率密度函數(shù)轉(zhuǎn)化為概率密度為1的圖像,凸顯圖像邊緣點,然后利用圖像分割,將圖像劃分為目標對象和其他部分;特征提取過程將前面提取出來的目標對象利用opencv中的格式轉(zhuǎn)換算法轉(zhuǎn)換為適合計算機后續(xù)處理的數(shù)值形式,最終形成能夠直接供神經(jīng)網(wǎng)絡分辨的特征值,此時測試集的處理完成,等待第五步神經(jīng)網(wǎng)絡訓練好后使用;
第四步,分布式環(huán)境的搭建,首先在虛擬器中開三臺ubuntu的虛擬機,將下載好的輔助軟件完成安裝,為每一臺搭建好java環(huán)境,正常安裝hadoop,繼而完成偽分布式配置;然后將上述實驗過程轉(zhuǎn)移到ubuntu的服務器上;利用搭建好的分布式環(huán)境試驗hadoop自帶的例子——詞頻統(tǒng)計,后臺觀察數(shù)據(jù)量相同時的不同數(shù)量機器的工作效率,發(fā)現(xiàn)六臺時達到一個小頂點;
第五步,用標注好特征的訓練集訓練人工神經(jīng)網(wǎng)絡(ann),編程創(chuàng)建由多個簡單的神經(jīng)元相互密集連接形成的神經(jīng)網(wǎng)絡,其中每個神經(jīng)元由三部分構成:輸入、計算激勵函數(shù)的細胞體和輸出,神經(jīng)元具有兩種狀態(tài):1和0,神經(jīng)元之間由可調(diào)節(jié)的權值相連,權值的設定采用監(jiān)督性的多變量線性回歸函數(shù);每個神經(jīng)元代表一個特征并接受一定數(shù)量的來自其他神經(jīng)元的實數(shù)值輸入,人工神經(jīng)細胞通過激勵函數(shù)對這些輸入信號進行并進行閾值處理;如果整合后刺激值超過某一閾值,則神經(jīng)元被激活進入1狀態(tài),否則處于0狀態(tài),當一系列的神經(jīng)元被觸發(fā)后即得到一個實際輸出值;然后利用成本函數(shù)評估實際輸出與目標輸出的誤差,若誤差很小,則強化該權值,若誤差很大,則改變學習的算法以弱化該權值;最后會得到一個成熟的神經(jīng)網(wǎng)絡,用這個神經(jīng)網(wǎng)絡為前面處理好的測試集標注特征;
第六步,利用上述訓練完成的神經(jīng)網(wǎng)絡為輸入的新的測試圖像標注特征,輸入一張圖像,神經(jīng)網(wǎng)絡完成特征的識別并標注后,利用分布式環(huán)境,并行加速的在測試集中搜索最相近的圖片并輸出,根據(jù)輸出值判斷是否需要再次對神經(jīng)網(wǎng)絡進行強化權值的訓練過程。
本發(fā)明與現(xiàn)有技術相比,其顯著優(yōu)點為:(1)分布式處理配合搜索過程可以提高機器學習效率和搜索速率,在處理過程中各步驟的所用時間被及時的記錄。比較在不同數(shù)量的分布式處理機下對提高效率的影響,及時調(diào)整處理機的數(shù)量;(2)神經(jīng)網(wǎng)絡可以發(fā)掘圖像的隱含特征,簡單圖像所包含的隱式特征不會對識別造成太多影響,但是動物類或家具類等復雜圖像的隱式特征若不經(jīng)多次分層提取,會嚴重降低正確率,我們的方法有效避免了這種問題;(3)手動標記特征的圖片作為機器學習的訓練庫,在模型標記后進行抽樣檢查,進一步提高知識庫的質(zhì)量,從兩方面提高識別結(jié)果的正確性;(4)沒有網(wǎng)絡限制,服務器位于國內(nèi),增添了極大的使用價值和搜索穩(wěn)定性,充分滿足用戶的需求。
附圖說明
圖1是本發(fā)明基于圖像特征的圖像主體的識別方法2000張手動標記好特征的訓練庫。
圖2是本發(fā)明基于圖像特征的圖像主體的識別方法神經(jīng)元結(jié)構圖。
圖3是本發(fā)明基于圖像特征的圖像主體的識別方法神經(jīng)網(wǎng)絡訓練模型流程。
圖4是本發(fā)明基于圖像特征的圖像主體的識別方法利用caffe完成圖像特征提取結(jié)果。
圖5是本發(fā)明基于圖像特征的圖像主體的識別方法六個分布節(jié)點均配置成功,采用hadoopdfsadmin-report查看集群狀態(tài),發(fā)現(xiàn)六個節(jié)點均運行正常。
圖6是本發(fā)明基于圖像特征的圖像主體的識別方法對10萬張圖處理多次運行結(jié)果可以得到平均時間為22.4s。
具體實施方式
本發(fā)明利用人工標記好的正確圖片特征,通過特征提取和神經(jīng)網(wǎng)絡訓練成熟的模型,標記大型知識庫,繼而檢索輸入圖片的特征輸出具有相似特征的圖片。
具體技術可分為六部分:
一是訓練集的特征標注
標注選取好的訓練集的特征,首先判斷圖片中物品的所屬物種,根據(jù)不同的物種細化特征,如動物則標記具體科族,全身顏色,眼睛,鼻子的特性;詳細標注后作為訓練集待用。
二是測試集圖片的預處理
對不同規(guī)格的圖像進行處理,達到統(tǒng)一的格式,首先裁剪成最適宜處理的大小128*128,裁剪過程中產(chǎn)生的物體形變在不影響特征提取的前提下忽略不計,繼而利用高斯函數(shù)完成圖像平滑,即去除圖像噪聲排除干擾項。人工檢查后若發(fā)現(xiàn)不符合則適當調(diào)整其他參數(shù)(盡量不改變圖形的大小),沒發(fā)現(xiàn)則繼續(xù),多次循環(huán)完成所有圖像的預處理。
三是測試集的形態(tài)學處理、邊緣檢測與圖像分割、特征提取
主要完成從單純圖像處理向圖像識別(機器視覺)的過渡,這一階段的特點是輸入是圖像,輸出則是在識別意義上我們感興趣的圖像元素,形態(tài)學處理即圖像增強,利用直方圖均衡化將原始圖像的直方圖通過積分概率密度函數(shù)轉(zhuǎn)化為概率密度為1(理想情況)的圖像,提高對比度,凸顯圖像邊緣點,然后利用分割過程則將圖像劃分為目標對象和其他部分;特征提取過程將前面提取出來的目標對象利用opencv中的格式轉(zhuǎn)換算法轉(zhuǎn)換為適合計算機后續(xù)處理的數(shù)值形式,最終形成能夠直接供神經(jīng)網(wǎng)絡使用的特征。圖像識別以上述結(jié)果為基礎,每個圖像都有其特征,如字母a有個尖,p有個圈,y的中心有個銳角等,實驗中模擬人眼在識別圖像時視線總是集中在圖像的主要特征上,也就是集中在圖像輪廓曲度最大或輪廓方向突然改變的地方,這些地方信息量大,是否可以準確的捕捉到作為算法選擇的關鍵因素。
四是分布式環(huán)境的搭建
首先確定是hadoop分布式環(huán)境和spark并行計算配合,由于服務器容錯率低,故先進行偽分布式的搭建,首先在虛擬器中開三臺ubuntu的虛擬機,將下載好的輔助軟件完成安裝,為每一臺搭建好java環(huán)境,正常安裝hadoop,繼而完成偽分布式配置??吹饺_均正常工作時可以理解為技術成熟,并將相關實驗過程如數(shù)轉(zhuǎn)移到ubuntu的服務器上。利用搭建好的分布式環(huán)境試驗hadoop自帶的例子—詞頻統(tǒng)計,后臺觀察數(shù)據(jù)量相同時的不同數(shù)量機器的工作效率,發(fā)現(xiàn)六臺時達到一個小頂點,考慮經(jīng)濟條件的情況下,確定環(huán)境為六臺服務器同時工作的分布式。
五是訓練人工神經(jīng)網(wǎng)絡(ann)
訓練集訓練人工神經(jīng)網(wǎng)絡(ann),編程創(chuàng)建由多個簡單的神經(jīng)元相互密集連接形成的神經(jīng)網(wǎng)絡,其中每個神經(jīng)元由三部分構成:輸入、計算激勵函數(shù)的細胞體和輸出,神經(jīng)元具有兩種狀態(tài):1和0,神經(jīng)元之間由可調(diào)節(jié)的權值相連,權值的設定采用監(jiān)督性的多變量線性回歸函數(shù)。每個神經(jīng)元代表一個特征并接受一定數(shù)量的來自其他神經(jīng)元的實數(shù)值輸入,人工神經(jīng)細胞通過激勵函數(shù)對這些輸入信號進行并進行閾值處理。如果整合后刺激值超過某一閾值,則神經(jīng)元被激活進入1狀態(tài),否則處于0狀態(tài),當一系列的神經(jīng)元被觸發(fā)后即得到一個實際輸出值;然后利用成本函數(shù)評估實際輸出與目標輸出的誤差,若誤差很小,則強化該權值,若誤差很大,則改變學習的算法以弱化該權值。最后會得到一個成熟的神經(jīng)網(wǎng)絡,用這個神經(jīng)網(wǎng)絡為前面處理好的測試集標注特征。
ann通過不斷調(diào)整神經(jīng)元之間連接的權值(卷積核或featuremap層數(shù))以使得網(wǎng)絡更加適應訓練集合。在實驗的訓練過程中,訓練樣本向量是ann的輸入,網(wǎng)絡的輸出是樣本特征的數(shù)值形式。初始情況下,網(wǎng)絡權值被帶有經(jīng)驗主義的初始化為一種隨機狀態(tài),當把某個訓練樣本輸入網(wǎng)絡時,由此產(chǎn)生的網(wǎng)絡輸出與訓練樣本目標輸出之間的差異稱為誤差;接下來,ann會利用線性回歸函數(shù)的學習監(jiān)督算法計算權值并密切觀察誤差的變化,使得訓練誤差逐步減小,隨著這種訓練和調(diào)整過程的進行,網(wǎng)絡對于訓練樣本的實際輸出將越來越接近于目標輸出。
六是分布式環(huán)境下的技術綜合應用,輸入一張圖像,神經(jīng)網(wǎng)絡完成特征的識別后,利用分布式環(huán)境,并行加速的在測試集中搜索最相近的圖片并輸出,根據(jù)輸出值判斷是否需要再次對神經(jīng)網(wǎng)絡進行強化權值的訓練過程。
下面結(jié)合附圖對本發(fā)明作進一步詳細說明。
本發(fā)明基于圖像特征的圖像主體的識別方法,包括以下步驟:
第一部分:算法與模型的建立
第一步,手動標記2000張圖像的特征
1.準備2000個左右樣本,手工標注物體形狀,明確整件、部件(二者有裝配或連接關系),時期、形質(zhì)、材質(zhì)(或稱材料)、顏色、名稱、編碼(多級編碼)等特征,另外定義十幾種基本形狀(先考慮二維形狀:長方形、圓柱形、正方形、矩形、圓形、菱形、星形等),在訓練用例圖片上標注清楚。具體見圖1。
第二步,訓練神經(jīng)網(wǎng)絡生成模型
采用監(jiān)督型學習算法,主要工具和環(huán)境利用相對成熟的caffe,caffe是一個關于ann的深度學習框架。生物大腦由大量的神經(jīng)細胞構成,這些細胞相互連接成十分復雜的網(wǎng)絡。通過傳遞電化學信號完成神經(jīng)網(wǎng)絡的功能。并且若一個神經(jīng)元在一段時間內(nèi)頻繁受到激勵,則它與連接至輸入的神經(jīng)元之間的連接強度就會相應地改變,從而使得該神經(jīng)元細胞再次受到激勵時更易興奮;相反,一段時間內(nèi)不受激勵的神經(jīng)元的連接有效性會慢慢衰減。這一現(xiàn)象說明神經(jīng)元之間的連接具有可訓練型。利用第一步得到的2000張圖像特征訓練神經(jīng)網(wǎng)絡,設置神經(jīng)網(wǎng)絡的參數(shù),包括featuremap的層數(shù),和卷積核的大小。流程圖如圖3。
2.1神經(jīng)網(wǎng)絡是由很多節(jié)點構成的,即人工神經(jīng)元結(jié)構如圖2,x1~xn是輸入信號,wij表示從神經(jīng)元j到神經(jīng)元i的連接權值,θ表示一個閾值,神經(jīng)元i的輸出與輸入的關系表示為:
yi=f(neti)
yi表示神經(jīng)元i的輸出,函數(shù)f稱為激活函數(shù)(activationfunction)或轉(zhuǎn)移函數(shù)(transferfunction),本發(fā)明采用了sigmoid函數(shù)如下,net稱為凈激活(netactivation)。
導數(shù):
若將閾值看成是神經(jīng)元i的一個輸入x0的權重wi0,則上面的式子可以簡
化為:yi=f(neti)
參數(shù)含義如上。
若用x表示輸入向量,用w表示權重向量,即:
x=[x(),x1,x2,.......,xn]
則神經(jīng)元的輸出可以表示為向量相乘的形式:
neti=xw
yi=f(neti)=f(xw)
參數(shù)含義如上。
2.2將一組訓練集(trainingset)送入網(wǎng)絡,根據(jù)網(wǎng)絡的實際輸出與期望輸出間的差別來調(diào)整連接權。成本函數(shù)也稱代價函數(shù)如下:
其中,c表示代價,x表示樣本,y表示實際值,a表示輸出值,n表示樣本的總數(shù);
依次選擇訓練集的樣本(ai,y),ai為數(shù)據(jù)、y為特征(所屬類別等),送入網(wǎng)絡,計算網(wǎng)絡的實際輸出a(此時網(wǎng)絡中的權重應該都是隨機量),計算d=y(tǒng)-a(即預測值與實際值相差多少),根據(jù)誤差d調(diào)整權重矩陣w,對每個用例重復上述過程,直到對整個樣本集來說,代價c不超過規(guī)定范圍,得到成熟網(wǎng)絡模型。
第三步,對10萬張待標記圖片進行預處理
由多種渠道得來的10萬張圖,由人工粗略分類,經(jīng)過細致的圖像預處理,對采集到的圖像進行灰度化、圖像增強,濾波、二值化等處理以克服圖像干擾;圖像增強利用直方圖均衡化,即統(tǒng)計直方圖每個灰度級出現(xiàn)的次數(shù),累計歸一化的直方圖,然后計算新的像素值,映射函數(shù)如下:
sk表示處理后每個像素的新值,n為像素個數(shù),nj表示處理前的像素值。
圖像平滑利用高斯濾波,經(jīng)過實驗發(fā)現(xiàn)距離中心象素3倍的σ距離的象素,其權重已經(jīng)降到了可以忽略的程度,是0.0111,所以采用三維卷積核,高斯函數(shù)如下:
第四步,利用特征提取算法為預處理好的圖片提取特征
依舊選擇caffe庫提供的特征抽取算法,為10萬張輸入圖像做特征提取。算法主要實現(xiàn)是在給定的圖片上找出多邊形,只需要找到邊緣點,即其周圍像素的灰度有階躍變化或者屋頂狀變化的點,由于灰度變化劇烈的地方可能是邊界,用這種算法可以較容易地識別出零部件對應的多邊形,將背景弱化后可以較為容易的分辨出家具的具體細節(jié)。具體步驟涉及命令和路徑,10萬張輸入圖像過于龐大,圖4僅顯示成功提取500張圖片時結(jié)果。
第五步,利用訓練好的模型為圖像標記特征
利用第二步訓練好的網(wǎng)絡模型對上述完成特征提取測試集的圖像進行特征標記,識別對應的零件種類及其他特征。輸入圖片,輸出對應的部件形狀類別和出現(xiàn)次數(shù)。對上述完成標注識別得到的圖片集抽樣,手動修正標注的特征,達到可作為知識庫的程度,這部分內(nèi)容也是比較關鍵的。
第六步,分布式環(huán)境下根據(jù)識別出的輸入圖像的特征進行搜索
hadoop是一個集成性很高的分布式系統(tǒng)基礎架構。用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序,對大文件的存儲和大數(shù)據(jù)量的統(tǒng)計有明顯優(yōu)勢,故被廣泛的采用和模仿。
5.1hadoop分布式搭建,首先進行偽分布式實驗,需要vmware虛擬機,ubuntu的iso鏡像文件,java(sdk)的支持,hadoop安裝包等。
5.2在虛擬機中模擬出三臺一模一樣的ubuntu處理機,在root權限下配置java環(huán)境,安裝ssh,安裝rsync,安裝hadoop,完成單機模式。
5.3配置偽分布式模式,主要操作是修改hadoop中的一些核心配置文件,并按照相同的方法完成對另外兩臺的安裝搭建。
5.4偽分布式搭建成功后將實驗成果,包括搭建步驟,搭建過程中遇到的問題及其解決方法等轉(zhuǎn)移到真機上。
5.5在經(jīng)過多次實驗并考慮經(jīng)濟條件的基礎上,發(fā)現(xiàn)在六臺處理器同時工作時,效率達到一個頂峰,具體配置完成后結(jié)果顯示在圖5。
5.6利用hadoop迭代計算進行目標特征的搜索,抽象成一個遞歸公式,對10萬張圖處理多次運行結(jié)果可以得到平均時間為22.4s,如圖6.
ri+1為迭代計算下一層的輸入值(即上層輸出),ri表示當前層的值,r0為輸入的初值,l為當前層數(shù)據(jù)個數(shù)。
第二部分:算法的具體應用
本發(fā)明在用戶應用時,首先用戶輸入一張圖片,后臺接收到后首先進行預處理,經(jīng)過特征提取算法后送入神經(jīng)網(wǎng)絡完成特征標記,利用標記好的模型在知識庫中檢索,找到相似度最高的圖片并輸出。方法主要以軟件的形式提供給用戶使用,具體實現(xiàn)形式可分為網(wǎng)站和插件兩種形式。網(wǎng)站形式是用戶登陸具體網(wǎng)站上傳圖片,我們提供相應的輸出信息,這種形式合作范圍廣,但初期推廣工作不易進行。插件形式可以網(wǎng)頁插件或軟件插件形式提供,可與具體單位建立合作,為其提供以圖搜圖服務的服務,這種形式風險小,但合作范圍局限。這部分的主要內(nèi)容在于ui設計與插件制作,ui設計將帶給客戶不同的使用體驗,提高客戶的好感度,對于軟件的推廣有不可忽視的作用。