本發(fā)明涉及一種圖像分類方法,尤其涉及一種基于改進視覺詞袋模型的圖像分類方法,屬于圖像分類處理領域。
背景技術:
近年來,隨著多媒體技術和互聯(lián)網(wǎng)技術的快速發(fā)展,圖像的產生與傳播變得更加的方便與快捷,圖像資源呈現(xiàn)快速的增長。其中,場景圖像分類是圖像研究領域的重要分支,是當前計算機視覺的熱點問題。針對在交通場景下,監(jiān)控攝像機和電子眼的大量使用,產生大量的交通場景圖像,使得有效地管理這些圖像變得愈加困難。為了更為有效地管理和檢索交通場景圖像,對場景圖像分類技術的需求變得更加的迫切。如何結合現(xiàn)有的數(shù)據(jù)挖掘知識,對圖像進行有效的特征提取和分類,是實現(xiàn)智慧交通要解決的關鍵技術之一,它的研究具有很大的理論價值和應用價值。
在眾多的圖像分類方法中,由“詞袋法”發(fā)展而來的視覺詞袋模型(BOW,Bag of Words)是目前圖像分類中較主流的方法之一。通常首先提取圖像的局部特征,其次將這些特征矢量量化并構造視覺碼本,特征矢量編碼為視覺單詞,從而每幅圖像可以由不同頻率的視覺單詞表示。最后生成每幅圖像的視覺單詞直方圖,通過訓練分類器,檢測出待判別的圖像類型。
例如,發(fā)明專利“基于視覺詞典的圖像分類方法”(專利申請?zhí)枺?01110175101.9,公開號:CN102208038A)即通過BOW模型構建視覺詞典,并將圖像用基于該視覺詞典的直方圖表示,建立模型對圖像進行分類,該方法沒有考慮圖像特征點的空間布局信息;發(fā)明專利“基于空間局部聚合描述向量的圖像分類方法”(專利申請?zhí)枺?01310180925.4,公開號:CN103295026A)中的方法考慮了特征點空間布局信息,用基于帶有特征點空間分布的局部描述聚合向量訓練分類器,實現(xiàn)圖像分類。針對場景圖像,其具有復雜的背景,上述方法無法避免的提取了相同的背景單詞,在不同類圖像間造成了相似性干擾,且場景圖像易受遮擋,以及多標記的影響,同類視覺單詞不突出。另外,上述方法復雜度高,實際應用中運行效率低,實時性較差。
技術實現(xiàn)要素:
本發(fā)明的目的在于針對上述現(xiàn)有技術的不足,提出一種基于改進視覺詞袋模型的圖像分類方法。
本發(fā)明的技術方案如下:
一種基于改進視覺詞袋模型的圖像分類方法,具體包括以下步驟:
步驟1,將圖像集劃分為訓練圖像集和測試圖像集;
步驟2,獲取訓練圖像集的SIFT描述子:
步驟2.1,利用尺度可變的二維高斯核函數(shù)與原始圖像做卷積,將相鄰尺度的兩個高斯圖像相減建立DOG尺度空間金字塔模型,具體計算為:
L(x,y,σ)=G(x,y,σ)*I(x,y);
D(x,y,σ)=(G(x,y,kσ)-G(x,y,σ))*I(x,y);
其中G(x,y,σ)為可變尺度的二維高斯函數(shù),L(x,y,σ)為圖像函數(shù)的尺度空間,D(x,y,σ)為原始圖像;σ為尺度空間因子,是高斯函數(shù)的標準差;I(x,y)為圖像的二維函數(shù)表示,其中x和y是空間坐標,k為常數(shù)。
步驟2.2,通過逐個比較每個像素點(x,y)的方法,找到相鄰位置和相鄰尺度內的特征點,并確定特征點的位置和尺度;
步驟2.3,計算特征點鄰域內每個像素點的梯度幅值和方向,計算公式為:
其中,m(x,y)代表特征點梯度的大小,θ(x,y)代表特征點的梯度方向;
步驟2.4,以特征點為中心,對其鄰域分塊并計算塊內梯度直方圖,生成SIFT描述子;
步驟3,利用均值聚類方法聚類步驟2.2生成的所有特征點,進而生成視覺詞典;
步驟4,根據(jù)步驟3生成的視覺詞典,生成每一幅圖像的視覺詞袋,進而提取同類圖像視覺單詞的最大頻繁項集;
步驟5,對視覺單詞的最大頻繁項集進行加權處理后生成其視覺單詞直方圖;
步驟6,測試圖像集處理過程和訓練圖像集步驟2到步驟5的處理過程相同,最后根據(jù)生成的視覺單詞直方圖訓練SVM分類器實現(xiàn)場景圖像的圖像分類。
作為本發(fā)明一種基于改進視覺詞袋模型的圖像分類方法的進一步優(yōu)選方案,在步驟2中,特征點的提取和生成視覺詞典的方法采用迭代Topology模型進行分布式并行改進。
作為本發(fā)明一種基于改進視覺詞袋模型的圖像分類方法的進一步優(yōu)選方案,在步驟4中,提取同類圖像視覺單詞的最大頻繁項集的具體步驟如下:
步驟4.1,掃描事務數(shù)據(jù)集一次,給定最小支持度產生頻繁項目集及其支持度,按支持度降序排列F,生成頻繁項目列表LF,記LF={1,2,3,...,j},j=|LF|;
步驟4.2,設最大頻繁項集集合MFS=φ,最大頻繁候選項集集合MFCS=LF,計算MFCS的支持度,若支持度大于min_s,MFS=MFCS,執(zhí)行步驟4.6,否則執(zhí)行4.3;
步驟4.3,設MFCS={c|c∈LF且|c|=j-1},對于所有項集m∈MFCS,若支持度大于min_s,則MFS=MFS∪m,若項目則令MFS為所求,執(zhí)行步驟4.6,否則執(zhí)行步驟4.4;
步驟4.4,若MFS≠φ,MFCS={c|e∈c且|c|=j-2},若MFS=φ,MFCS={c|c∈LF且|c|=j-2},對于所有項集m∈MFCS,若支持度大于min_s,則MFS=MFS∪m,若項目MFS為所求,執(zhí)行步驟4.6,否則執(zhí)行步驟4.5;
步驟4.5,重復步驟4.4,變量j=j-1,直至項目MFS為所求;
步驟4.6,重復步驟4.1~步驟4.5,求得每類的最大頻繁視覺單詞項集。
作為本發(fā)明一種基于改進視覺詞袋模型的圖像分類方法的進一步優(yōu)選方案,在步驟5中,加權處理具體包含如下步驟:
步驟5.1,計算每幅圖像的歸一化視覺單詞直方圖時,對其中最大頻繁視覺單詞進行加權;
步驟5.2,每幅圖像的視覺詞袋中,各個視覺單詞的數(shù)量為ki(i=1,2,...,n),n為視覺單詞的種數(shù),整個詞袋的視覺單詞數(shù)量為k,則權值為ωi=(1+ki/k);
5.根據(jù)權利要求2所述的一種基于改進視覺詞袋模型的圖像分類方法,其特征在于:依據(jù)Topology模型的設計規(guī)范,所述Topology模型包括imageSpout模塊、siftBolt模塊、initBolt模塊、receiver模塊、caldisIBolt模塊、moveIBolt模塊、checker模塊以及dictionaryBolt模塊。
本發(fā)明與現(xiàn)有的技術相比,具有以下優(yōu)點:
1,通過引入關聯(lián)規(guī)則的最大頻繁項集,分別統(tǒng)計和加權各類的最大頻繁視覺單詞項集,突出同類圖像的視覺單詞,增強同類圖像的共有特征,提高分類的準確度;
2,通過引入Topology模型對視覺詞典生成過程進行并行化改進,提高方法的實際應用效率;
3,針對現(xiàn)有方法并沒有充分考慮同類別圖像視覺單詞的相似性,不能充分表達圖像所屬類別的共有特征,本文運用關聯(lián)規(guī)則中的最大頻繁項集的知識,突出同類別圖像頻繁出現(xiàn)的視覺單詞,以提高分類的準確度;
4,傳統(tǒng)方法生成視覺詞典是一個特征聚類的過程,通常,圖像提取的特征點數(shù)量很大,且運用聚類算法對特征點進行聚類需要反復迭代,實時性不高,針對這個問題,提出基于Topology模型的生成視覺詞典方法來提高生成視覺詞典的效率。
附圖說明
圖1是本發(fā)明的實現(xiàn)流程圖;
圖2是基于Topology的生成視覺詞典模型圖;
圖3是本發(fā)明仿真采用的COREL和Caltech-256圖像庫中的樣例圖像;
其中:(a)是本發(fā)明圖像庫中一幅自然場景下的自行車樣例圖像;
(b)是本發(fā)明圖像庫中一幅自然場景下的公交車樣例圖像;
(c)是本發(fā)明圖像庫中一幅自然場景下的轎車樣例圖像;
(d)是本發(fā)明圖像庫中一幅自然場景下的跑車樣例圖像;
(e)是本發(fā)明圖像庫中一幅自然場景下的摩托車樣例圖像;
(f)是本發(fā)明圖像庫中一幅自然場景下的卡車樣例圖像;
圖4是本發(fā)明與傳統(tǒng)方法的仿真分類性能圖;
圖5是本發(fā)明與傳統(tǒng)方法的仿真生成視覺詞典的執(zhí)行時間圖。
具體實施方式
參照圖1,本發(fā)明的具體技術實施步驟如下:
一種基于改進視覺詞袋模型的圖像分類方法,具體包括以下步驟:
步驟1,將圖像集劃分為訓練圖像集和測試圖像集;
步驟2,獲取訓練圖像集的SIFT描述子:
步驟3,利用均值聚類方法聚類步驟2.2生成的所有特征點,進而生成視覺詞典;
步驟4,根據(jù)步驟3生成的視覺詞典,生成每一幅圖像的視覺詞袋,進而提取同類圖像視覺單詞的最大頻繁項集;
步驟5,對視覺單詞的最大頻繁項集進行加權處理后生成其視覺單詞直方圖;
步驟6,測試圖像集處理過程和訓練圖像集步驟2到步驟5的處理過程相同,最后根據(jù)生成的視覺單詞直方圖訓練SVM分類器實現(xiàn)場景圖像的圖像分類。
步驟2的具體步驟如下:
步驟2.1,利用尺度可變的二維高斯核函數(shù)與原始圖像做卷積,將相鄰尺度的兩個高斯圖像相減建立DOG尺度空間金字塔模型:
L(x,y,σ)=G(x,y,σ)*I(x,y);
D(x,y,σ)=(G(x,y,kσ)-G(x,y,σ))*I(x,y);
其中G(x,y,σ)為可變尺度的二維高斯函數(shù),L(x,y,σ)為圖像函數(shù)的尺度空間,D(x,y,σ)為原始圖像;σ為尺度空間因子,是高斯函數(shù)的標準差;I(x,y)為圖像的二維函數(shù)表示,其中x和y是空間坐標,k為常數(shù)。
步驟2.2,通過逐個比較每個像素點(x,y)的方法,找到相鄰位置和相鄰尺度內的局部極值點(極大值或極小值),即為特征點,并確定特征點的位置和尺度;
步驟2.3,計算特征點鄰域內每個像素點的梯度幅值和方向,公式為:
其中,m(x,y)代表特征點梯度的大小,θ(x,y)代表特征點的梯度方向;
步驟2.4,以特征點為中心,將其鄰域分成4*4=16個子區(qū)域,對每個子區(qū)域求8個方向的梯度,并生成梯度直方圖,最終獲得8*4*4=128維的SIFT描述子。
步驟3,利用均值聚類方法聚類優(yōu)化后的特征點集得到視覺詞典。
步驟4的具體步驟如下:
根據(jù)步驟3生成的視覺詞典,生成每一幅圖像的視覺詞袋,進而提取同類圖像視覺單詞的最大頻繁項集;得到視覺詞典后,計算訓練圖像的每個SIFT特征向量與詞典中視覺單詞的歐式距離,將特征向量映射到距離最近的視覺單詞,統(tǒng)計每一幅圖像的視覺單詞出現(xiàn)的次數(shù),再將每一個視覺單詞出現(xiàn)的次數(shù)除以總的視覺單詞數(shù),歸一化形成最終的圖像特征表述,提取同類圖像的視覺單詞最大頻繁項集,具體如下:
對于一類圖像的N幅圖像,生成的視覺詞典組成項目集合,即I={i1,i2,i3,...,im}是m個視覺單詞組成的集合。對于第一幅圖像,其視覺詞袋構成項目集這就是第一條事務記錄,依次從第一幅圖像到第N幅圖像,生成了X1,…,XN的N條事務記錄。然后挖掘這個事務集的最大頻繁項集:
步驟4.1,掃描事務數(shù)據(jù)集一次,給定最小支持度產生頻繁項目集及其支持度,按支持度降序排列F,生成頻繁項目列表LF,記LF={1,2,3,...,j},j=|LF|;
步驟4.2,設最大頻繁項集集合MFS=φ,最大頻繁候選項集集合MFCS=LF,計算MFCS的支持度,若支持度大于min_s,MFS=MFCS,執(zhí)行(步驟4.5),否則執(zhí)行(步驟4.4);
步驟4.3,設MFCS={c|c∈LF且|c|=j-1},對于所有m∈MFCS,若支持度大于min_s,則MFS=MFS∪m。若項目MFS為所求,執(zhí)行(步驟4.5),否則執(zhí)行(步驟4.4);
步驟4.4,若MFS≠φ,MFCS={c|e∈c且|c|=j-2},若MFS=φ,MFCS={c|c∈LF且|c|=j-2},對于所有m∈MFCS,若支持度大于min_s,則MFS=MFS∪m。若項目MFS為所求,執(zhí)行(步驟4.5),否則執(zhí)行(步驟4.6);
步驟4.5,重復(步驟4.4),變量j=j-1,直至項目MFS為所求;
步驟4.6,重復(步驟4.1)~(步驟4.6),求得每類的最大頻繁視覺單詞項集。
步驟5的具體步驟如下:
以第一幅圖像為例,加權如下:
步驟5.1,最大頻繁項中出現(xiàn)的就是同類圖像頻繁出現(xiàn)的視覺單詞,將第一幅圖像的視覺詞袋對比最大頻繁項中的頻繁視覺單詞,若其詞袋中存在頻繁的視覺單詞,計算圖像的視覺單詞直方圖時,對頻繁視覺單詞加權;
步驟5.2,加權權值與視覺單詞在圖像中的數(shù)量有關,第一幅圖像的視覺詞袋中,各個視覺單詞的數(shù)量為ki(i=1,2,...,n),整個詞袋的視覺單詞數(shù)量為k,則權值為ωi=(1+ki/k);
步驟5.3,對加權后的視覺詞袋生成第一幅圖像的歸一化視覺單詞直方圖。按照這樣方式,依次生成所有訓練圖像的歸一化視覺單詞直方圖;
步驟6,訓練支持向量機實現(xiàn)自然場景圖像的分類,并得到分類結果。
其中上訴步驟2和步驟3用Topology模型進行改進的模型圖如圖2所示,每個模塊的具體描述如下:
(1)imageSpout為Spout組件的實現(xiàn),主要工作是從預處理好的圖像數(shù)據(jù)中讀數(shù)據(jù),并傳遞給下一級模塊;
(2)siftBolt為Bolt組件的實現(xiàn),該部分在接收到數(shù)據(jù)后,借助JavaCV庫,執(zhí)行提取圖像的SIFT描述子的工作,生成特征點并傳遞給下一級模塊,由于提取SIFT描述子是一項比較耗時的工作,siftBolt可以設置較高的并行度來提高效率;
(3)在得到訓練集圖像特征點后,輸入initBolt模塊,它是Bolt組件的實現(xiàn),該模塊進行初始化的操作。包括點群、聚類基點(C1,C2,...,Ck)及閾值的初始化,并傳遞到迭代模塊的入口;
(4)receiver模塊是Receiver組件的實現(xiàn),是迭代的入口,接收到外部的輸入后對輸入數(shù)據(jù)排隊處理,并發(fā)往下一級模塊開始迭代;
(5)核心計算模塊caldisIBolt是IBolt組件的實現(xiàn),它接收receiver模塊發(fā)來的數(shù)據(jù),包括待聚類的特征點以及初始基點,計算讀取的特征點與每個基點(C1,C2,...,Ck)之間的歐式距離,并將特征點標記到距離最近的基點,最后將確定了標記類別ID的特征點發(fā)往相應類別ID的下一級模塊;
(6)核心計算模塊moveIBolt是IBolt組件的實現(xiàn),不同類別ID的moveIBolt模塊接收相應標記類別ID的特征點形成點群簇,累加點個數(shù)及各分量的和,計算出分量的均值,求出新的簇中心,并更新基點到簇中心,最后輸出新的基點與點群作為數(shù)據(jù)發(fā)往下一級模塊;
(7)checker模塊是Checker組件的實現(xiàn),首先,它接收moveIBolt模塊發(fā)來的數(shù)據(jù),保留接收到的基點,作為下一次比較的對象,與下一次從moveIBolt模塊接收的基點做比較,以確定是否把點群和基點發(fā)回receiver,進行下一次(4)~(6)的處理過程;然后,當checker模塊中接收到的基點與上一次的基點相比,若變化小于閾值時,迭代結束,將基點發(fā)往dictionaryBolt模塊,它是Bolt組件的實現(xiàn),用于保存生成的聚類點。到此,就生成了圖像的視覺詞典。
本發(fā)明的分類效果可通過如下仿真進一步說明:
1.仿真內容:
本發(fā)明從公用數(shù)據(jù)集COREL和Caltech-256中選取了6個類別的自然交通場景圖像進行圖像分類,如圖3中的(a)自行車、圖3中的(b)公交車、圖3中的(c)轎車、圖3中的(d)跑車、圖3中的(e)摩托車、圖3中的(f)卡車所示,每類100張圖像,每類選取其中50幅組成訓練圖像集,剩下的圖像組成測試集。仿真1分析了不同的視覺單詞數(shù)下本發(fā)明與傳統(tǒng)方法的分類性能,分類結果如圖4所示;仿真2為了測試Topology編程模型下,生成視覺詞典的效率,分別選用COREL中50、100、150、200張圖片,分別測試傳統(tǒng)方法和改進方法在同樣數(shù)量的圖片數(shù)據(jù)下的執(zhí)行時間。測試用的主機CPU為Inter(R)Core(TM)i5CPU M350@2.67GHz,內存為4GB,改進方法在Ubuntu10.04LTS上進行測試,所需的平臺為Twitter公司提供的開源Storm框架,再增加相同配置的機器搭建Storm集群,板載Intel千兆網(wǎng)絡,分別在偽分布式單機模式下、3臺集群及5臺集群下運行;傳統(tǒng)方法在同樣的單機條件下按步執(zhí)行。在穩(wěn)定狀態(tài)下,取10次執(zhí)行時間的平均值作為比較,結果如圖5所示。
2.仿真結果:
圖4顯示在視覺詞典的形成過程中,選取多大的詞典數(shù)量才能使分類效果最佳,詞典數(shù)值較大時,視覺單詞直方圖維數(shù)較高,運行復雜度高,詞典數(shù)值較低時,并不相近的特征點聚類到一個中心,影響分類精度;隨著k值增大時,不同方法的分類性能趨于穩(wěn)定;通過突出同類圖像的共有特征,本發(fā)明有更好的分類性能。
圖5可以看出,基于Topology編程模型改進的生成視覺詞典的方法的執(zhí)行時間在圖片數(shù)量不大時效率提升不明顯,隨著圖片數(shù)量增大時,執(zhí)行時間有了大幅度降低,且在集群下運行時,進一步降低了執(zhí)行時間,實時效率有所提高。