卷積神經網絡的特征范文
時間:2024-04-02 18:03:21
導語:如何才能寫好一篇卷積神經網絡的特征,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。
篇1
關鍵詞: 模式識別; 神經網絡; 卷積; 文字識別
中圖分類號: TN711?34; TP391.4 文獻標識碼: A 文章編號: 1004?373X(2014)20?0019?03
Large pattern online handwriting character recognition based on multi?convolution neural network
GE Ming?tao1, WANG Xiao?li1, PAN Li?wu2
(1. SIAS International School, Zhengzhou University, Zhengzhou 451150, China;
2. Henan University of Animal Husbandry and Economy, Zhengzhou 450011, China)
Abstract: Online handwriting character recognition is an important field in the research of pattern recognition. The traditional recognition method is based on the common convolutional neural networks (CNNs) technology. It has an efficient recognition rate for the small pattern character set online handwriting characters, but has low recognition rate for the large pattern character set recognition. A recognition method based on multi?convolutional neural networks (MCNNs) is presented in this paper to overcome the situation that the previous methods have the low recognition rate for large pattern character set and improve the recognition rate for the large pattern handwriting character set recognition. The stochastic diagonal Levenbert?Marquardt method is used in the system for training optimization. The experimental results show that the proposed method has the recognition rate of 89% and has a good prospect for online handwriting character recognition for large scale pattern.
Keywords: pattern recognition; neural network; convolution; character recognition
0 引 言
隨著全球信息化的飛速發展和對自動化程度要求的不斷提高 ,手寫文字識別技術被廣泛地應用到許多方面。特別是近幾年擁有手寫功能的手機、平板電腦等智能電子產品的普及,聯機手寫文字識別研究已經成為一個備受關注的主題。聯機手寫字符識別要求實時性較高,識別過程中要求特征空間的維數比較高,在進行特征樣本訓練時要求訓練的數目很大,要匹配的特征值或特征對象比較多 [1?2]。
卷積神經網絡(Convolutional Neural Networks,CNNs)的優點在于圖像的識別過程中對視覺模式的獲得是直接從原始圖像中獲得的,所以在設計系統時圖像的預處理工作很少,與一般神經網絡相比是一種高效的識別方法。卷積神經網絡在模式識別的一些領域具有很好的魯棒性,如在識別有變化的模式和對幾何變形的識別方面。利用卷積神經網絡的手寫識別方法具有如下一些優點:對于要檢測的圖像可以與事先制定網絡拓撲結構之間有較高的匹配率;特征提取和模式分類同時進行;訓練參數往往是系統計算量的重要參數,而卷積神經網絡中利用權值共享技術,這樣就可以大大降低該參數,在設計系統結構時使得結構變得更簡單,從而使得整個系統具有更好的適應性[3?5]。
目前,人機交互系統的手寫字符識別、汽車車牌號識別和信息安全中常用的人臉識別等領域都有卷積神經網絡的成功應用。文獻[6]用一個4層的卷積神經網絡LeNet?5對Mnist庫進行識別實驗,獲得了98.4%的識別率,用2層的BP網絡的識別率[4,6]是87%。許多學者對卷積神經網絡在聯機手寫文字識別方面做了多方位的研究。 但是,這些成功的聯機手寫文字識別主要是針對小模式字符集,利用以往的這些方法對大規模模式分類的聯機手寫文字的識別依然有識別率不高的問題。本文介紹了卷積神經網絡的基本概念和一種典型的卷積神經網絡結構,給出了基于多重卷積神經網絡的字符識別和詞語識別模型。通過使用大字符集的UNIPEN數據庫進行訓練和測試,本文提出的方法在大模式聯機手寫識別上,取得了較高的識別速度和滿意的識別率。
1 卷積神經網絡
文獻[6?7]中詳細地描述了卷積神經網絡如何保證圖像對位移、縮放、扭曲魯棒性能。典型的手寫字符卷積神經網絡LeNET 5的結構圖如圖1所示[6?7]。
圖1 典型的卷積神經網絡結構
在圖1中,輸入層接收要識別32×32的手寫字符圖像,經過簡單的大小歸一化和圖像灰度處理,之后的結果作為一個采樣層的圖像;然后用一個可學習核進行卷積操作,卷積結果經過激活函數的輸出形成這一層的神經元,每個神經元與輸入圖像的一個5×5的鄰域相連接,從而得到由6幅特征圖組成的第一個隱層(C1層)。每個特征圖有25個權值(如方向線段,端點、角點等),考慮到邊界效果,得到的特征圖的大小是28×28,小于輸入圖層[3?9]。卷積層的數學計算過程可表示為:
[xlj=fi∈Mjxl-1j*kernellij+blj] (1)
式中:[l] 代表層數;kernel是卷積核;[Mj]代表輸入特征圖的一個選擇。每個輸出圖有一個偏置[b]。
每個卷積層的結果作為下一個次采樣層的輸入,次采樣層的作用是對輸入信息進行抽樣操作。如果輸入的特征圖為n個,則經過次采樣層后特征圖的個數仍然為n,但是輸出的特征圖要變?。ɡ纾骶S變為原來的50%)。因此隱層S2是由6個大小為14×14的特征圖組成的次采樣層。次采樣層計算公式可以用式(2)表示:
[xlj=fβl-1jdown(xl-1j)+blj] (2)
式中down(?) 表示次采樣函數。次采樣函數一般是對該層輸入圖像的一個n×n大小的區域求和,因此,輸出圖像的大小是輸入圖像大小的[1n]。每一個輸出的特征圖有自己的β和b。
類似的,C3層有16個10×10的特征圖組成的卷積層,特征圖的每個神經元與S2網絡層的若干個特征圖的5×5的鄰域連接。網絡層S4是由16個大小為5×5的特征圖組成的次采樣層。特征圖的每個神經元與C3層的一個2×2大小的鄰域相連接。網絡層C5是由120個特征圖組成的卷積層。每個神經元與S4網絡層的所有特征圖的5×5大小的鄰域相連接。網絡層F6,包括84個神經元,與網絡層C5進行全連接。最后,輸出層有10個神經元,是由徑向基函數單元(RBF)組成,輸出層的每個神經元對應一個字符類別。RBF單元的輸出yi的計算方法如式(3)所示:
[yi=j(xj-wij)2] (3)
很多研究人員通過對字符集作彈性訓練,經測試發現在MNIST字符集上的識別率可以高達99%以上[6?7] 。卷積神經網絡的優勢主要是對小模式集上,如對數字或26個英文字母組成的集合都有著較高的識別率。然而,對大模式集的識別仍然是一個挑戰,因為設計一個優化的并足夠大的單一網絡是比較困難的,且訓練時間也較長。因此,本文的目的旨在通過組合多個對某一字符集有高識別率的卷積神經網絡,從而構成多重卷積神經網絡,進而提高卷積神經網絡對大模式集手寫字符的識別率。
2 多重卷積神經網絡
2.1 多重卷積神經網絡字符識別
根據傳統卷積神經網絡的運算過程以及其在處理大模式集手寫字符時存在的不足,本文提出一種多重卷積神經網絡來改進傳統的卷積神經網絡模型,用多個擁有高識別率的小卷積神經網絡組成一個多重卷積神經網絡。每一重小卷積神經網絡對某一具體字符集有較高的識別率,另外,單重卷積神經網絡除了有一個正式的輸出集之外,還產生一個未知的輸出(即難以識別的字符),即如果一個輸入字符沒有被正確識別,它將被輸出為一個未知字符,然后輸入模式轉到下一重卷積神經網絡進行識別。最后,通過一個拼寫檢查模塊進行判斷,選擇最好的結果輸出。系統的流程如圖2所示。
其中CNN 1是識別手寫數字的卷積神經網絡,CNN 2是識別手寫小寫英文字母的卷積神經網絡,該模型具有極強的擴展性,可以添加多任意模式的卷積神經網絡(如中文,日文等)。
圖2 多重卷積神經網絡字符識別示意圖
2.2 隨機對角Levenberg?Marquardt訓練方法
傳統的結構比較簡單、單一的卷積神經網絡多采用基本的Back Propagation(BP)規則訓練網絡,往往需要幾百次迭代,網絡的收斂速度較慢。本文采用LeCun博士提出的隨機對角Levenberg?Marquardt 算法對網絡作訓練,該算法需要的迭代次數明顯比基本的BP 算法少[4,9]。隨機對角Levenberg?Marquardt算法的公式為:
[ηki=ε?2E?w2ij+μ] (4)
式中[ε]是全局的學習率,一般取初始值0.01,太大會使網絡無法收斂,太小則會降低收斂速度,且使網絡更容易陷入局部極小值,訓練過程中可以用啟發式規則改變[ε]的值,本文取最下值為5e-005; [?2E?w2ij]是一個估計值,根據訓練集的大小可以調整樣本數量,文中隨機選取200個樣本估算它的值;[μ]用來避免[?2E?w2ij] 太小時[ηki]的變化過大 。
2.3 多重卷積神經網絡詞句識別
本文提出的多重卷積神經網絡對手寫詞語的識別方法可以簡單地描述為:首先對輸入的手寫圖像進行預處理和分割,然后通過多重卷積神經網絡模塊分別進行識別,最后采用單詞識別模塊對識別結果進行判斷,選擇最好的結果輸出。其過程如圖3所示。
圖3 多重卷積神經網絡聯機手寫詞句識別過程
本文提出的多重卷積神經網絡聯機手寫文字識別方法克服了傳統卷積神經網絡文字識別的對字符集的限制,每一重卷積神經網絡是一個針對小模式的卷積神經網絡,易于訓練和優化,更重要的是此方案的靈活性非常好易于調節參數,可擴展性強。每一重卷積神經網絡都具有可重用能力,可以根據需要加載一個或多個網絡,可以根據新的模式添加新的網絡而不需改變或重建原來的網絡。
3 訓練和實驗
為了評估多重卷積神經網絡對基于大模式字符集的聯機手寫文字識別的性能,本系統采用MNIST和UNIPEN兩種不同的手寫字符訓練集進行測試。UNIPEN數據庫是在1992年舉行的IEEE IAPR會議上提出并建立的,其目的是創建一個大型的手寫體數據庫用于為在線手寫識別提供研究和開發的基礎,得到了多個知名公司或研究所的支持并完成了UNIPEN的規范設計。在進行數據比對實驗中,本文采用許多研究使用的MNIST手寫數字數據庫,該數據庫是NEC 研究中心設計的,是NIST(The National Institute of Standards and Technology)數據庫的一個子集,該訓練集中有大量訓練樣本和測試用例。本文默認用以下定義:
[識別率=正確識別數樣本總數×100%]
[失誤率誤識率=錯誤識別數樣本總數×100%]
實驗測試是在通用的臺式電腦上進行的。整個識別原型系統采用C#編寫,運行在.NetFrame 4.5平臺上。經測試對MNIST訓練集識別正確率可達[9]99%,對UNIPEN數字識別正確率可達97%,對UNIPEN數字和大寫字母識別正確率可達89%(1a,1b) ,對UNIPEN小寫字母識別正確率可達89%(1c) 。圖4是對UNIPEN小寫字母3次訓練的均方誤差比較。
圖4 訓練的誤差數據
從圖4中可以看出,在開始的幾個訓練周期內,均方誤差(MSE)下降得很快,然后在第13個周期后神經網絡達到一個穩定的值,約為0.148 5。也就是說,網絡在第13個周期后,改善程度就很小。所以修改訓練錯誤率的值為0.000 45后重新進行18代的第二次訓練,均方誤差有所降低。經過第三次的訓練后趨于穩定,對UNIPEN小寫字母識別正確率可達89%。經測試,通過使用隨機對角Levenberg?Marquardt方法,收斂速度比基本BP算法快了許多,經過68代訓練后識別正確率可達89%。
4 結 語
本文提出了基于多重卷積神經網絡的聯機手寫字符的識別方法,通過使用多個識別率高的卷積神經網絡和隨機對角 Levenberg? Marquardt方法,可以適用于大模式聯機手寫識別。經過實驗數據比較,該方法在大模式聯機手寫識別過程中具有很高的識別率,與此同時識別速度也很快,有很好的實時性,總體效果很好。在當今觸摸屏應用遍及生產生活的各個方面的趨勢下,該方法有著廣闊的應用前景。同時此方法為今后多手寫漢字識別的研究提供了很好的借鑒。
注:本文通訊作者為潘立武。
參考文獻
[1] 吳鳴銳,張鈸.一種用于大規模模式識別問題的神經網絡算法[J].軟件學報,2001,12(6):851?855.
[2] 張輝.大規模聯機手寫漢字識別數據庫整理、統計與實驗分析[D].廣州:華南理工大學,2012.
[3] 徐姍姍,劉應安,徐,等.基于卷積神經網絡的木材缺陷識別[J].山東大學學報:工學版,2013,43(2):23?28.
[4] 呂剛.基于卷積神經網絡的多字體字符識別[J].浙江師范大學學報:自然科學版,2011,34(4):425?428.
[5] PHAM D V. Online handwriting recognition using multi convolution neural networks [M]. Berlin Heidelberg: Springer, 2012: 310?319.
[6] LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient?based learning applied to document recognition [C]// Proceeding of IEEE. USA: IEEE, 1998: 2278?2324.
[7] SIMARD P Y, STEINKRAUS Dave, PLATT John. Best practices for convolutional neural networks applied to visual document analysis [C]// International Conference on Document Analysis and Recognition (ICDAR). Los Alamitos: IEEE Computer Society, 2003: 958?962.
篇2
關鍵詞:手寫數字識別;卷積神經網絡;應用
手寫體數字識別在郵政、金融等領域應用廣泛。對于數字識別,人們往往要求識別器有很高的識別可靠性,數字識別的錯誤所帶來的影響比文字識別等其他識別所帶來的影響更大,特別是有關金融方面的數字識別錯誤所帶來的后果是無法想象的,識別錯一個數字,這其中的差距可能是幾的差距,也可能是幾十、幾百的差距,這些都還是小問題;但更有可能這一個數字代表的差距是幾萬、幾千萬甚至幾億乃至更多,那么這個錯誤造成的損失就無法估量了。因此,O計出有著高可靠性與高識別率的數字識別系統已經成為了字符識別領域一個非常重要的環節。
1 網絡模型和數據庫及學習算法的選擇
1.1 關于Mnist數據庫的介紹
首先,Mnist是NIST數據庫的一個優化子集。它是一個有著60000個訓練樣本集與10000個測試樣本集的手寫體數字數據庫。此數字庫一共有4個文件。
此數字庫的所有樣本集都有圖像文件以及標簽文件。標簽文件的作用是用來儲存樣本集中的每個樣本的數值標簽,而每一個樣本的圖像數據信息則是由圖像文件存儲著。此數據庫的圖像數據均保存在二進制文件之中,且每個樣本圖像的大小均為28*28。
1.2 數字識別的模型選擇
手寫體數字雖然只有0~9十個數字,但由于寫法因人而異,不同地域同樣一個數字有多種不同的寫法,每個人都有自己的書寫習慣。且一些紙質差異、筆畫粗細、光線問題、位置、尺度大小等等多種因素都能對輸入產生影響??紤]到這些因素,為讓網絡有良好的識別能力,我們這里采用在圖像識別領域有著優秀表現的卷積神經網絡作為此數字識別系統的訓練模型。
1.3 學習算法的選擇
一個優秀的網絡模型必須具備良好的學習算法,每個學習網絡都有著相對來說較為合適自己的學習算法,而并不是說越高端的算法就越好。在此文中,我選擇的學習算法是較為成熟的BP算法。此算法在文字前面有些許介紹,此處不再多做說明。
2 基于卷積神經網絡的數字識別系統的設計
2.1 輸入層以及輸出層設定
根據樣本的特征與此網絡的網絡結構,可以大概判斷出輸入層與輸出層該如何設置。隱含層的個數可以是一個,也可以是多個,這與要分類的問題有關。
前文提及到在mnist數據庫中,所有的圖像都是28*28大小的,且以整個圖片的像素形式存儲在數據文件之中。每張圖像大小為28*28,故一個圖片像素點個數為784個。這里,卷積神經網絡的輸入即為這784個像素點。
因為數字識別需要識別的是0~9這十個數字,即需要識別十種字符類別,所以將這個神經網絡輸出層的神經元節點數設置為10。
2.2 網絡的中間層設置
卷積神經網絡的中間層有兩個部分,即卷積層(特征提取層)與下采樣層(特征映射層),由第二章中圖2-1所示,C1、C3為卷積層,S2、S4為降采樣層。
1)激活函數選擇
激活函數選擇sigmoid函數。同樣,在第二章有所提及。Sigmoid函數是嚴格遞增函數,能較好的平衡線性與非線性之間的行為,比較貼近生物神經元的工作。相比于其他函數,sigmoid函數還存在著許多優勢,比如光滑性、魯棒性以及它的導數可以用它自身來表示。
sigmoid函數為:
(1)
其中,x為神經元凈輸入。
激活函數導數為:
(2)
2)卷積層設計
圖像經過卷積核對特征圖進行卷積,之后再經過sigmoid函數處理在卷積層得到特征映射圖。特征映射圖相比于原圖像,其特征更為明顯突出。
卷積運算其實就是一個加權求和的過程。離散卷積是本文所選取的方法,規定卷積核在水平和豎直兩個方向每次都是移動一個像素,即卷積的步長為1。
3)下采樣層的設計
根據圖像局部相關性這一原理,為了降低網絡的學習維度、減少需要處理的數據量且保留圖像的有用信息,可以對卷積后的圖像進行下采樣。這里,我們采取的是取卷積層4個像素點平均值為下采樣層的一個像素點的方法。這樣可以降低網絡規模。
2.3 網絡總體結構CNN-0
根據LeNet-5結構,再結合上文中的對輸入層、輸出層、中間層的設計,完成了如圖3-1所示的基本網絡結構:
相比于LeNet-5,CNN-0做了一些修改,并非完全按照LeNet-5網絡結構模型。Sigmoid函數是本網絡中的激活函數,選擇這個函數的好處在于可以讓所有層得到的輸出都在區間[-1,1]之內。網絡訓練的學習率固定值為1或者是衰減的學習速率。經過卷積后的一維向量與輸出層沒有沿用LeNet-5的徑向基函數網絡,而是采取全連接方式,省去了F6層。
3.3 卷積神經網絡訓練過程
在模式識別中,學習網絡有無指導學習網絡與有指導學習網絡兩個類別。無指導學習網絡一般是用來進行聚類分析,本文采取的是有指導學習網絡。
卷積神經網絡其實就是從輸入到輸出的一種映射,它可以學量的映射關系,只需要用現有的模式對網絡進行訓練,網絡就能具備映射能力。而不需要輸入與輸出之間的精確的關系。
訓練算法與傳統的BP算法相差無幾(BP算法在第二章有做概述),主要可分為四個步驟,而這四個步驟可以歸為向前傳播階段與向后傳播階段:相前傳播:
1)隨機的從樣本集中獲取一個樣本(A, ),然后將A輸入至網絡中;
2)根據公式(3)計算出實際輸出:
(3)
向后傳播:
1)計算和理想輸出之間的差;
2)根據極小化誤差方法調整權值矩陣。
結語
在手寫數字識別這一塊,相對來說比較有難度的應該就是脫機自由手寫字符識別了,不過本文所研究的并不是這一系統,本設計是一個基于卷積神經網絡的手寫數字識別系統,因卷積神經網絡的局部感受野和降采樣以及權值共享、隱性特征提取等優點,它在圖像識別領域得到了非常廣泛的應用。此程序是在Caffe這個框架上進行運行的,操作系統為Linux系統ubuntu14.04版本。Caffe是一個開源的深度學習框架,也可以說是一個編程框架或者模板框架,它提供一套編程機制。因此,本文所需要實際的卷積神經網絡就可以根據這個框架來進行構建。
參考文獻:
[1]張偉,王克儉,秦臻.基于神經網絡的數字識別的研究[J].微電子學與計算,2006年第23卷第8期.
篇3
關鍵詞:卷積神經網絡;點擊率預測;搜索廣告
中圖分類號:TP391.41 文獻標識號:A 文章編號:2095-2163(2015)04-
Click-Through Rate Prediction for Search Advertising based on Convolution Neural Network
LI Siqin, LIN Lei, SUN Chengjie
(School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China)
Abstract: Click-Through Rate (CTR) prediction is the foundation of search advertising. Nowadays, lots of researches have been explored to predict CTR, and most of those researches either rely on liner model or employ method of recommendation system. However, the relations between different features in CTR predication have not been fully explored in previous works, and the relations between different features also cannot be fully embodied. In this paper, CTR prediction for search advertising based on convolution neural network is proposed, and process of convolution neural network simulating the process of human thought on feature learning is explained. Furthermore, the performance of different features have been analyzed in the task of predicting CTR. Experiments are conducted on the dataset of KDD Cup 2012 Track2 and the proposed method achieves 0.7925 in AUC, demonstrating the effectiveness of the proposed approach.
Keywords: Convolution Neural Network; Click-Through Rate Prediction; Search Advertising
0 引 言
隨著Web搜索技術的成熟,搜索廣告已經成為互聯網行業的主要收入來源之一,其根據用戶輸入的查詢詞,在搜索的結果頁面呈現出相應的廣告信息。廣告媒介的收益通過每次點擊費用(CostPerClick,CPC)與廣告點擊率(Click-Through Rate,CTR)預測共同影響而得到,即CPC*CTR。由于用戶點擊廣告的概率隨著廣告位的排放順序呈遞減趨勢,因此對CTR進行準確高效的預測,并將CTR高的廣告投放在搜索結果頁面靠前的位置,不僅能增加廣告媒介的收益,還能提高用戶對搜索結果的滿意程度。
廣告點擊率預測是廣告算法中最核心的技術,近年來被學術界廣泛關注。部分學者使用基于推薦方法的模型來解決CTR預測問題?;魰则E等人[1]采用協同過濾算法,為頁面找到與其相似的其他鄰居頁面,實現CTR的預測,以此作為基礎進行廣告推薦,但當相似頁面的數量增加時,該方法的結果質量會嚴重下滑。Kanagal等人[2]提出了一種聚焦矩陣分解模型,針對用戶對具體的產品的喜好以及相關產品的信息進行學習,解決因用戶-產品交互活動少而造成的數據稀疏問題。在文獻[2]的基礎上,Shan等人[3]提出了一種立方矩陣分解模型,通過對用戶、廣告和網頁三者之間關系的立方矩陣進行分解,利用擬合矩陣的值來預測CTR,雖然立方矩陣分解模型增加了一維交互關系,但所刻畫的交互關系仍然十分局限,不能在CTR預測中充分挖掘廣告所有特征之間的聯系。
作為典型的預測問題,很多研究中通過將CTR預測問題看作分類或者回歸問題來解決,其中最常見的是應用線性模型來預測CTR。Chapelle等人[4]使用動態貝葉斯網絡,通過對用戶產生的點擊過程建立模型,考慮級聯位置的信息模擬出特定位置與相近位置的相關性,以判斷該位置上的廣告是否滿足用戶搜索要求。Chakrabarti等人[5]利用點擊反饋的相關性,通過在網頁和廣告詞等特征上使用邏輯回歸模型提高廣告檢索和預測的效果。Wu等人[6]基于融合的思想,將不同線性模型的實驗效果相結合,來提高搜索廣告CTR預測的結果。真實的場景中CTR的預測并非簡單的線性問題,因此,一些學者開始使用非線性模型來解決CTR的預測。Dave等人[7]在搜索廣告點擊信息以及廣告商賬戶信息上提取語義特征,使用基于投票思想的梯度提升決策樹模型,提高了CTR預測的效果。Zhang等人[8]利用神經網絡模型對影響搜索廣告點擊率的因素進行的探索,從特征因素方面提高CTR預測的結果,但是資源單一,數據交互的關系沒有獲得良好的利用。
本文對基于卷積神經網絡(Convolution Neural Network,CNN)的CTR預測進行研究,通過卷積與亞采樣操作的結合,能更好地學習出數據特征之間的關系,不僅解決了線性模型無法模擬真實廣告數據場景的問題,也解決了淺層學習模型無法深入挖掘特征間相互關系的問題,并且較之于傳統的神經網絡,CNN能更好地理解特征之間的關系。在真實的數據集上的實驗驗證了本文的方法能夠提高搜索廣告中CTR預測的AUC值。
1卷積神經網絡模型
1.1 卷積神經網絡基本模型
卷積神經網絡作為人工神經網絡之一,目前已成為深度學習領域中研究的熱點,權值共享以及局部窗口滑動的特點使之能更好地模擬出生物神經網絡。卷積神經網絡在結構上有兩個重要的組成部分:卷積層和亞采樣層。如圖1所示。
圖1 卷積層與亞采樣層結構
Fig.1 Convolution layer and sub-sampling layer structure
在卷積層中,原始特征通過卷積核進行卷積得到輸出的特征,使用不同的卷積核就可以得到一系列不同的輸出特征。對卷積層的計算,有如下公式:
(1)
這里, 是sigmoid 函數, , ; 代表輸入特征上選定的窗口,即在卷積過程中當前卷積核在計算時所對應在輸入特征上的位置; 和 分別是第 層輸入特征和第 層輸出特征上相應的值; 是卷積核的權重值; 是特征的偏置,每一層對應一個。
卷積過程,一個卷積核通過滑動會重復作用在整個輸入特征上,構建出新的特征。同一個卷積核進行卷積時,共享相同的參數,包括同樣的權重和偏置,這也使要學習的卷積神經網絡參數數量大大降低了。而當我們使用不同的卷積核進行卷積時,可以得到相應的不同的輸出特征,這些輸出特征組合到一起,構成卷積層的輸出。
在亞采樣層,前一個卷積層的輸出將作為該層的輸入特征,首先設定大小的窗口,然后通過滑動,用窗口區域中最大(或平均)的特征值來表示該窗口中的特征值,最后組合這些特征值得到降維后的特征。亞采樣過程可表示如下:
(2)
這里,類似于卷積層, 和 分別是第 層輸入特征和第 層輸出特征上相應的值, 是特征的偏置; 表示取最大值 或者平均值 的函數。
典型的卷積神經網絡通常由n(n>=1)個卷積層和亞采樣層以及最末尾的m(m>=1)全連接層組合而成。一個亞采樣層跟隨在一個卷積層后出現,通過這若干卷積層和亞采樣層后得到的特征,將經過全連接層與輸出層相連。全連接層公式如下:
(3)
這里, 是sigmoid函數, 是計算第 層到第 層時的權重值。
1.2基于卷積神經網絡的CTR預測模型
研究中使用卷積神經網絡對搜索廣告的CTR進行預測,網絡結構如圖2所示。
圖2 卷積神經網絡在搜索廣告點擊率預估中的應用
Fig.2 Convolution neural network in search ad click rate through prediction
實驗中一共設置了兩個卷積層、兩個亞采樣層以及一個全連接層。首先從歷史日志中提取相應的特征構建出輸入(Feature_Input),設置好卷積的窗口大小后根據公式(1)對輸入特征進行卷積,每一次卷積是對窗口內所有值的組合,因此卷積過程相當于特征融合過程。對卷積后得到的特征,設置亞采樣的窗口并根據公式(2)進行最大值-采樣,選取出窗口中的最有表達能力的特征值(最大特征值)表示整個窗口的特征,因此亞采樣過程相當于特征的萃取過程。整個卷積和亞采樣過程的結合,模擬出了人對事物的理解和總結的過程。最后將特征經過一層全連接后連接到輸出,得到最終的預測結果。
在一次特定的卷積(或亞采樣)全過程中即訓練的一次迭代過程中,權值并不會隨著窗口的滑動而改變,即在計算中,所有窗口滑過的特征享受同樣的權值。這也是CNN區別于其他神經網絡的特點――權值共享。如此即使得CNN更方便訓練,更能多角度地對特征進行學習。
2特征構建
本文所采用的實驗數據集為KDD Cup 2012中Track 2提供的數據集。該數據由騰訊公司下的搜索品牌搜搜(SOSO)搜索引擎提供,因為涉及公司商業信息,數據經過哈希處理。實驗數據集中,每條記錄包含12個屬性,各屬性詳解如表1所示。
研究按照實際含義將這12個屬性構造了四大類特征:歷史點擊率特征、相似度特征、位置特征和高影響力特征。
2.1基于卷積神經網絡的CTR預測模型
歷史點擊率特征是不同類別ID在歷史數據中的點擊率,雖然比較簡單但十分有效,因為歷史點擊率在一定程度上代表了類別ID對某個廣告感興趣程度的高低,當一個ID對某個廣告的歷史點擊率高時,意味著其對這個廣告更感興趣,后續點擊的概率也更大。
歷史點擊率( )是點擊數( )與展示數( )之比,在統計計算過程發現有很多情況下有些類別信息沒有點擊實例,因此研究采用了平滑方法解決零值問題,根據公式(4)來計算平均點擊率。計算公式如下:
(4)
公式中的 和 是調節參數,根據公式(4)計算出AdID,AdvertiserID,QueryID,KeywordID,TitleID,DescriptiomID,UserID的歷史點擊率。
2.2相似度特征
相似度特征用來刻畫屬性兩兩之間的相似程度,用戶搜索的內容與被投放的廣告屬性相似度高時,廣告被點擊的概率更大。例如當搜索內容Query與廣告關鍵字屬性Keyword相似度高時,意味著網頁投放的廣告與用戶期望搜索的廣告結果相似度高,更符合用戶點擊廣告的動作。
通過對Query、Keyword、Title、Description的屬性描述文件構造出相關的TF-IDF向量,Query為用戶搜索內容,Keyword,Title,Description是廣告的相關屬性,數據集提供的屬性信息都是經過哈希后的數字形式,但是屬性之間的相對含義不變,然后計算相互之間的余弦相似度作為特征。
2.3位置特征
該特征描述的是指定廣告在搜索結果頁面中的位置信息。用戶搜索時需求的多樣化要求在對廣告進行排序和投放時,在結果頁面靠前的位置中盡可能地投放滿足用戶需求的廣告,從而最大化用戶的滿意度、提高用戶點擊的興趣[9]。因此,研究即用當前預測廣告的相對位置Pos來刻畫該廣告在結果頁面中排序靠前的程度,其定義如下:
(5)
這里, 指頁面投放的廣告總數, 指當前所預測廣告的位置。
2.4位置特征
在預測模型中,ID屬性信息通常采用one-hot形式的特征編碼方式,在將不同的屬性經過one-hot編碼后的特征向量組合在一起,這樣方式簡單直觀,卻使得特征的維度巨大并且非常稀疏。然而在這龐大且稀疏的特征中,絕大部分維度上的特征值對整個模型的預測結果貢獻非常小甚至為零,只有少數維度上的特征值對預測結果有較高的影響力。因此研究采用L1范數正則化的方式,在邏輯回歸模型的代價函數中加入L1范數[10],使得模型學習得到的結果滿足稀疏化,在學習參數中按大小順序取出前N維權重較大的,將這N維權重對應位置上的特征值構建新的特征,稱為高影響力特征,考慮到實驗硬件,取N=180。
3 實驗結果與結論分析
3.1數據準備
實驗目標是通過給定的信息預測搜索網頁的廣告點擊率,由于數據量過大并且正負樣本不平衡,實驗中從訓練集隨機采樣10%作為本文實驗中模型訓練的訓練集,既縮小了樣本空間,同時隨機采樣也保持了原始數據的分布信息。實驗中隨機抽取部分樣本作為驗證集用于參數的調節。本文所用測試集為 KDD Cup 2012中track 2的全部測試數據,因此本文的結果與KDD Cup 2012中track 2比賽的結果具有可比性。數據的統計信息如表2所示。
這里, 、 分別表示結果中預測對的正樣本數和負樣本數, 、 分別表示結果中預測錯的正樣本數和負樣本數。對于廣告點擊率預測問題,較大的AUC值代表了較好的性能。
3.2實驗設置和結果分析
實驗的操作系統為Ubuntu 12.04 LTS OS,卷積神經網絡在4G RAM 的NVIDIA GeForce GT 610 GPU條件下運行。過程中選用了Dense Gaussian對卷積層、亞采樣層的邊和節點進行初始化,用常數初始化輸出層,學習卷積神經網絡各邊權值時的優化函數使用梯度下降算法,其中學習率為0.01、動量項為0.9,訓練步數為100,設置公式(4)中參數α=0.05,β=75。實驗時使用邏輯回歸模型(LR)、支持向量回歸模型(SVR)和深度神經網絡(DNN)作為對比方法,所有方法都使用相同的特征,其中DNN的層數以及每層的節點數與卷積神經網絡相同。
具體地,首先探究了卷積神經網絡中節點的設置,因為在CNN中后續層的節點數根據第一個卷積層和每層卷積(或亞采樣)滑動窗口的大小計算得到,并以第一個卷積層節點的設置為實驗變量,同時控制DNN中每層的節點數均與CNN相同,在驗證集上的實驗結果如圖3所示。
從圖3可以看出,隨著節點的增加,AUC的值也在不斷增長,在一定范圍內,節點數越多,實驗的結果越好。但隨著節點數的增大,模型的訓練時間也在延長,對設備的開銷需求也在升高,綜合上述因素,最終將第一層的節點數設為9 216。
CNN與各對比實驗的實驗結果如表3所示,可以看出CNN的效果最佳,此外在表中還列出了KDD Cup 2012 track 2比賽中第一名的結果。DNN的AUC值優于LR和SVR,驗證了深度學習模型比淺層學習模型更適合解決CTR預估問題,同時CNN的結果高于DNN,說明CNN中卷積層的特征融合和亞采樣層的特征萃取過程是有效的。本文中CNN目前的實驗結果略低于KDD Cup 2012 track 2中第一名的結果,原因是比賽隊伍使用了多模型融合并提取了龐大的(千萬維)輸入特征。
進一步地,實驗探索了每一類特征對搜索廣告點擊率預測的貢獻。在所有特征的情況下,去掉某一類特征來進行預測,實驗結果如表4所示。實驗結果表明,去掉任意一類特征都將使得實驗效果有所下降。其中去掉歷史點擊率特征效果下降得最明顯,說明用戶是否點擊廣告,與其之前的點擊行為非常相關。而去掉位置特征時,效果下降得最為不明顯,因為在實驗使用的數據集中,每個頁面最多僅呈現三個廣告,頁面中的廣告數少時,位置對用戶點擊的影響小。
4 結束語
對搜索廣告點擊率的有效預測不但能夠更好的提高在線廣告投放的性能,增加廣告商的收益,還能增強用戶的體驗。研究使用卷積神經網絡CNN對搜索廣告點擊率進行預測,對特征因素的分析之后,在真實數據的環境下對搜索廣告點擊率進行預測的實驗本文的方法的效果相對于其他方法有明顯的提高。本文的主要貢獻有:(1)本文提出了基于卷積神經網絡的搜索廣告點擊率預測的方法。(2)針對高維特征,提出了一種特征選擇策略,可以在計算能力受限的情況下使用CNN模型來解決廣告點擊預測問題,并取得較好效果。在未來的工作中,一方面要繼續研究更有效的特征來提高對點擊率的預測效果,另一方面也將嘗試對CNN模型的內部細節進行改進,使之更適合我們的預測場景。
參考文獻:
[1] 霍曉駿,賀牛楊燕. 一種無位置偏見的廣告協同推薦算法[J]. 計算機工程, 2014, 40(12): 39-44.
[2] BHARGAV K, AHMED A, PANDEY S, et al. Focused matrix factorization for audience selection in display advertising[C]// Data Engineering (ICDE), 2013 IEEE 29th International Conference on, Brisbane , Australia: IEEE, 2013:386-397.
[3] SHAN Lili, LEI Lin, DI Shao, et al. CTR Prediction for DSP with Improved Cube Factorization Model from Historical Bidding Log[M]// C K Loo, et al(Eds.): Neural Information Processing. Switzerland:Springer,2014,8836:17-24.
[4] OLIVIER C, ZHANG Ya. A dynamic bayesian network click model for web search ranking[C]//Proceedings of the 18th international conference on World wide web. Madrid: ACM,2009:1-10.
[5] DEEPAYAN C, AGARWAL D, JOSIFOVSKI V. Contextual advertising by combining relevance with click feedback[C]//Proceedings of the 17th international conference on World Wide Web. Beijing: ACM,2008:417-426.
[6] WU Kuanwei, FERNG C S, HO C H, et al., A two-stage ensemble of diverse models for advertisement ranking in KDD Cup 2012[J]. KDDCup, 2012.
[7] DAVE K S, VARMA V. Learning the click-through rate for rare/new ads from similar ads[C]// Proceedings of the 33rd international ACM SIGIR conference on Research and development in information retrieval, Geneva, Switzerland:ACM,2010.
[8] ZHANG Ying, JANSEN B J , SPINK A. Identification of factors predicting clickthrough in Web searching using neural network analysis[J]. Journal of the American Society for Information Science and Technology, 2009, 60(3): 557-570.
[9] 林古立.互聯網信息檢索中的多樣化排序研究及應用[D].華南理工大學,2011.
篇4
關鍵詞:無人機;STM32;道路檢測;神經網絡;模型訓練
傳統的道路巡檢和保養主要由人工來完成,需要投入大量的人力物力來保證道路的相對安全,這種方式存在著低效率、高成本且難以保證道路的決定安全[1]。固定式交通檢測設備大量設置在道路的主干路上,也存在著一些缺陷:(1)監控攝像頭不能做到全覆蓋且具有一定的探測盲區。(2)監控系統采用多屏幕方式,工作人員進行道路故障判斷時受限。(3)不能靈活的通知有關部門對事故的快速應急處理。為了克服上述的缺點,本文設計了一種基于卷積神經網絡的無人機道路巡檢系統,對發生故障和需要保養的道路能快速響應,及時的通知有關部門,避免事故的發生。
1系統的總體設計
在無人機道路巡檢系統中,我們主要考慮了以下幾個要求[3]:(1)無人機系統能滿足正常的工作;(2)無人機系統能適應各種天氣和氣候變化等;(3)無人機系統應充分考慮控制的安全性;(4)視頻流的傳輸應避免較長的延時。無人機道路巡檢系統主要由無人機系統設計、遠程控制系統、PC端系統三大部分組成,系統的總體結構框圖如圖1所示。系統的具體工作原理為:無人機將道路環境檢測的結果,將處理后的視頻流通過遠程傳輸的方式,發送到PC端進行實時監控道路狀況。遠程控制系統以STM32作為主控芯片,主要包括在無人機端和遙控端兩個部分,遙控端將控制指令通過2.4G通信發送到無人機端,此時無人機的做出相應的位姿變化,完成遙控端對無人機位姿的控制。無人機系統的圖像采集模塊芯片為樹莓派,完成圖像的采集并采用TCP通信實現遠程視頻的傳輸,將獲取的視頻流傳輸到PC端。PC端上使用OpenCV對圖像進行處理[4],利用深度學習模塊對設計的神經網絡進行數據訓練,從而得到檢測模型,最后在PC上接收處理過的數據并實時監測道路狀況。上述工作原理可實現無人機道路巡檢系統,下文將對其包括的三大模塊進行說明介紹。
2無人機系統設計
本次使用的是RaspberryPi3(modelB+)作為無人機的主控制板[7],無人機的飛行控制算法和圖像采集模塊集成在樹莓派中。遠程控制系統通過2.4G無線通信模塊連接,通過控制器實現對無人機飛行和圖像采集的控制。無人機系統總體結構如圖2所示。
3PC端系統設計
在PC端系統設計主要分為圖像預處理、模型訓練和視頻監控三大部分,通過TCP通信協議進行通信,TCP通信是一種面向連接的通信,可完成客戶端(樹莓派)和服務端(PC)的信息傳遞[9]。下面主要對前兩部分詳細介紹。
3.1圖像預處理
本系統對地面裂縫檢測的圖像預處理流程如圖3所示具體工作原理為:(1)采用加權平均灰度化對獲取的無人機影像進行灰度化處理;(2)對灰度化處理后的影像進行直方圖均衡化,使得影像具有高對比度和多元的灰度色調變化,為后續的濾波降噪奠定基礎;(3)對處理后的影像進行濾波降噪,消除孤立的噪聲點,采用方法的是中值濾波降噪;(4)使用迭代二值化處理將影像的灰度值設置合適的閾值,使得圖像更簡單,目標更突出,然后對圖像進行分割,計算迭代的閾值,判斷迭代的閾值是否收斂到某一值或者達到限定的迭代次數,如果是的話,將完成二值化處理和濾波,否則將初始二值化閾值;(5)最終完成道路故障的識別與標記。
3.2模型檢測
3.2.1卷積神經網絡原理使用卷積神經網絡進行模型訓練,首先使用卷積層實現特征的提取,原理如圖4所示。如圖5所示,卷積操作是模仿神經元的機制。不同的輸入在權重的影響下會有不同的輸出,根據損失函數的計算來不斷的更新權重,直到獲得合理的權重參數。初始傳遞的信號為x,中間通過權重w,再經過偏置b后連接在末端,最后輸出信號變成wx+b。fun(?)表示激活函數,最終f(z為輸出的結果,如式(1)所示。3.2.2卷積神經網絡訓練流程通過相機采集到的缺陷和問題圖像作為訓練樣本,這部分是檢測道路安全的關鍵一步,(1)訓練標記數據:首先使用圖像預處理中標記好的道路故障提取出來,通過卷積神經網絡對標記框內的目標數據進行訓練;(2)提取特征數據:將道路故障的類型統計并歸納;(3)誤差反饋學習:對測試樣本進行誤差反饋學習,并進行測試;(4)優化訓練數據:根據實際應用場景增加圖像的種類和數量,不斷訓練模型。3.2.3故障的基本分類道路故障主要路面缺陷(例如裂縫、殘缺等)和路面增加(例如長時間靜止的車輛和路人),各自訓練集數量為1000張。如表1所示。3.2.4實驗測試為實現故障的檢測,測試數據集為100張,不同類型故障數據50張,均采集自新道路且與訓練樣本一致,實驗結果如表2所示。由表2可知,檢測路面增加(例如長時間靜止的車輛和路人)的準確率高達96%,但是地面缺陷的準確率相比較而言略低,可能造成的原因是:①硬件原因導致采集的圖像清晰度比較低;②地面缺陷太小,無人機難以識別;③訓練的數據集較少,特征學習誤差大;但是滿足了設計需求,還需進一步改進。
4總結與展望
篇5
關鍵詞:物聯網;人臉識別;視頻網絡
1物聯網及人臉識別視頻網絡技術的發展
1.1物聯網視頻網絡技術的發展狀況
最近幾年,隨著物聯網技術、圖像處理技術以及數據傳輸技術的快速發展,視頻網絡技術應運而生并取得了長足的發展。當前,視頻網絡系統作為一種模擬數字控制系統,其具有非常成熟和穩定的性能,已廣泛應用于實際工程中。雖然數字系統發展迅速,但尚未完全形成相應的體系,因此,混合數字和模擬應用程序逐漸遷移到數字系統將成為未來發展的主要趨勢之一。當前,國內外市場上主流的產品主要有兩種,即模擬視頻數字網絡系統、數字視頻網絡系統。前者技術先進,性能穩定,被廣泛應用于實際工程應用中,特別是大中型視頻網絡項目。后者作為一種新興技術,是一種通過以計算機技術和視頻壓縮為核心的新型視頻網絡系統,其有效的避免了模擬系統所存在的一些弊端,但未來仍需要進行不斷的改進和發展。外部集成、視頻數字化、視頻網絡連接、系統集成是未來視頻網絡系統發展的重要研究方向。數字化是網絡的前提,而網絡是系統集成的基礎。因此,視頻網絡領域的兩個最大發展特征是:數字化和網絡化。
1.2人臉識別視頻網絡的發展狀況
人臉識別技術作為模式識別領域中的一項前沿課題,截止目前,已有三十多年的研究歷史。人臉識別目前是模式識別和人工智能的研究熱點,目前主要采用AdaBoost分類器進行人臉區域的檢測,人臉識別研究的內容大致分為以下內容:(1)人臉檢測:其指的是在不同場景下的人臉檢測及其位置。人臉檢測是通過在整個輸入的圖像中找到一個合適的人臉區域為目的,并將該圖像分為人臉區域和非人臉區域兩部分。在實際的某些理想情況下,由于可以人為手動控制拍攝環境,因此,可以輕松確定人臉的位置;但是在大多數情況下,由于場景更加復雜,因此,人臉的位置是未知的。因而在實際的人臉識別視頻網絡過程中,首先必須確定識別場景中是否有人臉的存在,如果存在人臉,再進一步確定圖像中人臉的具體區域。(2)人臉識別:將系統檢測到的人臉特征信息與系統數據庫中存在的已知人臉信息進行充分識別與匹配,以此獲取相關信息,該過程的本質是選擇正確的人臉模型和匹配策略。在實際生活的應用當中,由于成人的面部模型處于不斷變化當中,且容易受到時間、光線、相機角度等方面的差異,因而很難用一張圖紙表達同一個人的面部圖像,這使得提取特征變得困難,由于大量的原始灰度圖像數據,神經元的數量通常很大并且訓練時間很長。除此之外,完全依賴于神經網絡的識別方法具有當前計算機系統固有的局限性,盡管神經網絡具有很強的感應能力,但是隨著樣本數量的增加,其性能可能會大大降低。簡而言之,由于年齡,表情,傾斜度和其他表征對象的因素的多樣性,很難進行人臉識別,因此,識別該對象的效果仍遠未達到現實。目前,普遍采用AdaBoost算法來對出現在視頻中的人臉區域進行檢測,以此達到實時獲取人臉圖像的目的,AdaBoost算法的原理是通過訓練得到多個不同的弱分類器并將這些弱分類器通過疊加、級聯得到強分類器,AdaBoost算法流程如圖1所示。(3)表情分析:即對面部表情信息(幸福,悲傷,恐懼,驚奇等)進行分析和分類。當前,由于問題的復雜性,正在對面部表情的分析進行研究,它仍處于起步階段。心理學表明,至少有六種與不同面部表情相關的情緒:幸福,悲傷,驚奇,恐懼,憤怒和惡心。即與沒有表情的面部特征相比,這六個表情的面部特征具有相對獨特的運動規則。(4)生理分類:分析已知面孔的生理特征,并獲得相關信息,例如種族、年齡、性別和職業。顯然,此過程需要大量知識,通常非常困難和復雜。
2物聯網卷積神經網絡人臉識別方法分析
卷積神經網絡是專門設計用于識別二維形狀的多層感知器。通常,可以使用梯度下降和反向傳播算法來訓練網絡。從結構上講,卷積神經網絡包含三個概念:局部感受野、權重共享和下采樣,使其在平移,縮放,傾斜或其他形式的變形中相當穩定。當前,卷積神經網絡被廣泛用于模式識別,圖像處理和其他領域。卷積神經網絡(CNN)用于提取目標人臉圖像的特征。訓練網絡后,將先前測試的模型用作面部分類器,微調可以縮短網絡模型的訓練時間。卷積神經網絡的基本體系結構是輸入層,卷積層(conv),歸約層(字符串),完全連接層和輸出層(分類器)。通常有多個卷積層+速記層,此程序實現的CNN模型是LeNet5,并且有兩個“卷積+下采樣層”LeNetConvPoolLayer。完全連接的層等效于MLP(多層感知器)中的HiddenLayer。輸出層是一個分類器,通常使用softmax回歸(有些人稱為直接邏輯回歸,它實際上是多類邏輯回歸)。LogisticRegression也直接提供了該軟件。人臉圖像在視頻監控中實時發送到計算機,并且面部區域部分由AdaBoost算法確定。在預處理之后,將臉部圖像注入到新訓練的預訓練模型中進行識別。該過程如圖2所示。
3物聯網人臉識別視頻網絡多目標算法優化
多目標優化問題的實質是協調并在各個子目標之間達成折衷,以便使不同的子目標功能盡可能地最佳。工程優化的大多數實際問題都是多用途優化問題,目標通常相互沖突。長期以來,多目標優化一直受到人們的廣泛關注,現在已經開發出更多的方法來解決多目標優化問題。如果多標準優化沒有最差的解決方案,那么通常會有無限多的解決方案,這并不是最差的解決方案。解決面部強調時,人們不能直接應用許多次等解決方案。作為最后的決定,我們只能選擇質量不是最低,最能滿足我們要求的解決方案。找到最終解決方案的方法主要有三種。因此,只有通過找到大量有缺陷的解決方案以形成有缺陷的解決方案的子集,然后根據我們的意圖找到最終的解決方案?;诖耍嗄繕怂惴ㄊ峭ㄟ^將多準則問題轉變為一個關鍵問題,這種方法也可以視為輔助手段。這種方法的棘手部分是如何獲取實際體重信息,至于面部特征,我們將建議一種基于權重的多功能優化算法,該算法可以更好地反映臉部的特征。我們將人臉的每個特征都視為多個目標,并且在提取面部特征時,面部特征會受到外界的強烈影響,例如位置,光照條件和強度的變化,并且所有部位和每個部位都會受到影響。因此,我們可以使用加權方法從每個受影響的分數中提取不同的權重。通過開展試驗測試,結果表明,在有多目標優化的算法的作用下,比在沒有多目標優化的算法作用下人臉識別效果有所提高,大約提高了5—10個百分點。
4結論
鑒于多準則優化算法在科學研究的各個領域中的廣泛使用,本文提出了一種多準則優化算法來對復雜的多準則人臉圖像上的各種面部特征進行特征提取的多準則優化,以達到提高人臉識別率的目標、提高整個人臉識別視頻網絡系統的性能。
參考文獻
[1]江斌,桂冠.基于物聯網的人臉識別視頻網絡的優化方法研究[C]//物聯網與無線通信-2018年全國物聯網技術與應用大會論文集.2018.
[2]余雷.基于物聯網的遠程視頻監控優化方法研究[J].科技通報,2014(6).
[3]張勇.遠程視頻監控系統的傳輸技術的實現[D].電子科技大學,2011(9)
篇6
在AlphaGo贏得第一局的比賽時,就激起了人們熱烈的討論,因為很多從事人工智能研究的“技術派”也對電腦圍棋程序戰勝人類棋手沒有足夠的信心。但第一局的結果仍然讓人震驚,因為在五個月前,AlphaGo的棋力水平也只是達到戰勝職業二段棋手的程度,人們吃驚的是它的棋藝水平提高的速度。
與20年前深藍在國際象棋人機大戰中戰勝世界冠軍卡斯帕羅夫不同,AlphaGo并非僅僅依賴強悍的計算能力和龐大的棋譜數據庫取勝,而是具有深度學習的能力,能在實戰和練習中不斷學習和積累經驗,這已經非常類似于人類棋手的成長過程了,不過它成長的速度非常之快。
普通大眾會認為,機器人獲勝是因為它內部存儲有極為豐富的棋譜,以及很多一流棋手的經驗,再配合它強大的邏輯判斷能力,是一群人對一個人的戰斗,是機器計算對人腦計算的碾軋,結果是必然的。這樣的歸納未免有些草率和簡單,完全無視機器學習在程序中的作用。
機器學習(Machine Learning,ML)是一種讓計算機在事先沒有明確的程序的情況下做出正確反應的能力,是計算機模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身性能的一種方法,是人工智能的核心,也是使計算機具有智能的根本途徑。但是它仍然主要是使用歸納、綜合而不是演繹的方式來進行學習。
早在1959年,塞繆爾的下棋程序就具有了學習能力,能在不斷對弈中改善自己的棋藝。這個程序已經涉及到了關于學習的令人頭疼的哲學問題,此后就有各種各樣的棋類程序誕生,演繹出一個又一個電腦程序戰勝人類棋手的傳說,不斷刷新博弈難度的記錄。
而圍棋,因為棋盤的復雜性(大約10的172次方種狀態,是計算機不可能窮盡的天文數字),則被看作是“人類智力的最后防線”,是僅存的人類能夠擊敗電腦的完全信息博弈游戲。AlphaGo的獲勝,宣告了機器學習的重大突破。
AlphaGo是一套為圍棋優化的深度學習引擎,它使用了神經網絡和蒙特卡羅算法,可以讓機器充分學習,并能在不斷自我對決中提升水平。
深度學習(Deep Learning)的概念在10年前就已提出,又叫深層神經網絡(Deep Neural Networks),是機器學習研究中的一個新領域,通過建立模擬人腦進行分析學習的神經網絡,模仿人腦機制來解釋數據。深度學習提出了一種讓計算機自動學習出模式特征的方法,有深度置信網絡、卷積神經網絡等不同的機器學習模型,但都需要大量的并行計算。非監督貪心逐層訓練算法可以解決深層結構相關的優化難題,卷積神經網絡可以利用空間相對關系減少參數數目以提高訓練性能,這些特點正適合用于復雜的博弈程序。
但是,在具有不確定性的對決中,即使深度學習也發揮不了作用,無法幫助程序來確定對手的狀態。
篇7
關鍵詞:BP神經網絡;Morlet小波;決策理論;Hilbert變換
中圖分類號:TP18文獻標識碼:A文章編號:1009-3044(2009)32-9050-02
Wireless Signal Simulation Algorithm for Automatic Identification
ZHANG Meng
(Purchasing, China Railway Communication Co., Ltd., Beijing 100140, China)
Abstract: We have firstly discussed the modulation distinguishing method based on rational budgeting theory through the method of comparing Tine-Frequency analysis of the analysis signals formed by Hibert Transform . And on the basic of analyzing the fault of this method ,we put forward the distinguishing method based on NN. When NN is distinguishing signals, it mainly depends on the different positions of peak. Wavelet Transform here equals a mathematic microscope .it reflects the inexorable links between the signal categories and the positions of peak. Taking advantage Wavelet Transform and the simple three-layer BP NN, the more accurate Time-Frequency characteristics of signals to be distinguishing can be drawn.
Keywords: BP ANN; Morlet Wavelet; BudgetingTheory; Hibert Transform
在軍事電子對抗等多方面的重要應用,通信信號調制的自動識別分類問題也相繼發展起來。無線電信號調制實識別就是要判斷截獲信號的調制種類。為此,需要事先對其特征進行選定,并確定它們與相應調制種類相聯系的取值范圍,然后再對信號進行特征測量,并根據測量結果對信號的調制進行分類判決。
如果把無線電信號的調制識別與分類視為一種模式識別問題,那末,從模式識別理論來看,模式分類是模式識別的一個子系統。因此,在模式識別理論框架下,無線電信號的調制識別是一個總體概念。而調制分類則只是調制識別的一個分支[1]。
1 基于決策理論的模擬調制方式識別方法
此算法主要實現區分AM、FM、DSB、LSB、USB、VSB、AM-FM等七種調制樣式,所分析的對象序列s(n)是由接收機中頻輸出并經過采樣得到的,這樣s(n)的采樣頻率和載頻都已知,分別記做Fs和Fc。算法分兩個步驟:
第一步,根據信號的包絡特征將AM、USB、LSB與FM區分開,因為前三種信號的包絡不為恒定值,而FM的包絡理論上是恒定值(實際中接近恒定)。因而可以從中提取一個特征參數R。參數R反映了零中心歸一化包絡的功率譜特征,FM的零中心歸一化包絡接近零,因其參數R應遠遠小于前三種信號。實際中若R
第二步,根據信號頻譜的對稱性,將AM與USB與LSB區分開,因為AM的單邊頻譜關于載頻是近似對稱的,USB和LSB的單邊頻譜對于載頻來說分別只有上邊頻和下邊頻。因而可以從中提取另一個特征參數 。理論上,由于AM的上下邊頻對稱,所以AM的P接近零,而LSB和USB的P分別接近1和-1。實際中若|P|< 0.5,判為AM信號,若P>0.5,判為LSB,P
第三步,零中心非弱信號段瞬時相位非線性分量絕對值的標準偏差:σap 。
σap由下式定義:
(1)
式中,at是判斷弱信號段的一個幅度判決門限電平,c是在全部取樣數據Ns中屬于非弱信號值的個數,?準NL(i)是經零中心化處理后瞬時相位的非線性分量,在載波完全同步時,有:?準NL(i)= φ(i)-φ0
式中:,φ(i)為瞬時相位。用σap來區分是DSB信號還是AM-FM信號。
第四步,零中心非弱信號段瞬時相位非線性分量的標準偏差:σdp。
σdp由下式定義:
(2)
σdp主要用來區別不含直接相位信息的AM、VSB信號類和含直接相位信息的DSB、LSB、USB、AM-FM信號類,其判決門限設為t(σdp) 。
2 決策論方法的改進
前面介紹的基于決策理論的模擬調制方式識別方法存在缺陷針對上述問題,人們又提出了基于神經網絡(NN)的識別方法。
2.1 BP網絡作為分類器的模擬調制方式識別方法
該算法用基于有監督訓練的神經網絡模型BP網絡作為分類器,用BP模型多層感知網絡與反向傳播學習算法相結合,通過不斷比較網絡的實際輸出與指定期望輸出間的差異來不斷的調整權值,直到全局(或局部)輸出差異極小值,不難想象該神經網絡對模型細節中的諸多問題均有良好效果。
基于NN的模擬信號調制識別框圖[2]如圖1所示,該NN采用三層結構即,1個輸入層,1個輸出層,1個中間層。中間層可采用多層。但由于受到計算復雜性的限制,目前采用單層或雙層中間層的NN比較多見。本圖中間層采用單層25個節點,輸入層和輸出層的節點數取決于信號特征參數的個數和信號的分類數,因而分別為4和7。
神經網絡具有信息分布式存儲、大規模自適應并行處理和高度容錯特性,適用于模式識別的基礎。其學習能力和容錯特性對不確定性模式識別具有獨到之處[3]。通信信號在傳播過程中受到信道噪聲的污染,接受到的信號是時變的、非穩定的,而小波變換特別適用于非穩定信號的分析,其作為一種信息提取的工具已得到較廣泛的應用。小波變換具有時頻局部性和變焦特性,而神經網絡具有自學習、自適應、魯棒性、容錯性和推廣能力,兩者優勢的結合可以得到良好的信號模式自動識別特性,從而形成各種處理方法。
2.2 基于小波的特征提取和識別方法
小波特別適用于非穩定信號的分析,作為一種特征提取的工具已得到較為廣泛的應用。小波的重要特點是它能夠提供一個信號局部化的頻域信息。小波變換能夠將各種交織在一起的不同頻率組成的混合信號分解成不同頻率的塊信號,它對不同的時間和頻率有不同的解釋,因此,對調制信號進行小波分解,得到不同水平下的細節信息,這些信息對于不同類別的調制信號來說是有差別的[4]。
在實際應用中,小波變換常用的定義有下列兩種:
(3)
(4)
式中,星號*表示共軛。式(3)表示小波變換是輸入信號想x(t)和小波函數φα, τ(t)的相關積分;式(4)用卷積代替了相關積分。兩種定義在本質上是一致的。本為采用后者。
將式(4)中的τ和t離散化,即令τ=kTs,及t=iTs,得連續小波變換公式(4)的離散形式,又稱小波系數:
(5)
Morlet小波是一種單頻復正弦調制高斯波,也是最常用的復值小波。其實、頻兩域都具有很好的局部性,它的時域形式如下:
(6)
雖然信號特征有很多種,神經網絡在進行信號識別時,主要是依據譜峰位置的不同,因此提取信號特征主要任務就是尋找信號類別與譜峰位置間的必然聯系。而小波變換在這里則相當于一個數學顯微鏡,通過它,可以詳細了解各類信號在不同低頻段上的頻譜構成。
整個系統在PC機上進行仿真,采用Windows2000操作系統和Matlab6.1和Cool Edit2.0進行聲音錄制。
在仿真中,采用44K的采樣率,錄制了一段歌聲和一段笑聲,用Matlab生成22K的正弦載波,并根據第二章的各調制樣式的定義,生成了各個仿真的調制波形。并轉化成.wav文件錄在電腦中。
3 結束語
本文僅限于理論理論研究,用MatLab仿真實現,沒有用DSP芯片等物理電路實現,僅為實際實現提供理論指導。
參考文獻:
[1] 羅利春.無線電偵察信號分析與處理[M].北京:國防工業出版社,2003.
[2] 楊小牛,樓才義,徐建良.軟件無線電原理與應用[M].北京:電子工業出版社,2001.
篇8
關鍵詞:安全帶檢測;深度學習;支持向量機;智能交通;特征提取
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2016)11-0240-03
Abstract:Seat belt detection in intelligent transportation systems is an important research area. A seat belt detection algorithm for complex road backgrounds based on deep learning is proposed. It first extracts features from labeled vehicle, windshield, and seat belt regions, and those features are used to train the detection models by deep learning. Then, it detects the locations of the vehicle, windshield, and seat belt regions, and uses the relative positions among these vehicle components and their detection scores to train a support vector machine classification model. Finally, it performs a fine mapping and identification process using this classification model on the seat belt region. This method performs well when applied to a database of images collected by road surveillance cameras.
Key words: Seat belt detection; deep learning; support vector machine; intelligent transportation; feature extraction
針對駕駛員未系安全帶的這種危險駕駛行為,以及為了響應公安部門的需求,目前出現了很多種安全帶檢測方法?,F有的安全帶檢測方法大多是基于邊緣檢測[1-2]和Hough變換[3]的方法進行安全帶檢測。Guo等人[4]提出了安全帶檢測系統,包括安全帶檢測和駕駛員區域定位兩個模塊。該算法利用線性濾波器在HSV顏色空間[5]通過水平方向和垂直方向投影來確定車牌的位置,然后利用邊緣檢測算子(Sobel[6],Canny[7]等)通過邊緣檢測得到車窗的上下邊緣,再通過幾何關系確定駕駛員區域的位置。該方法容易受到車身顏色影響,穩定性較差。
為了解決安全帶檢測過程中的光照、車型、駕駛員著裝等因素對檢測結果的影響,本文提出了一種基于卷積神經網絡(CNN[8])的安全帶檢測系統。當采集到圖片后,首先粗定位車輛區域,并根據檢測算法得到車窗區域粗定位模塊,找到圖像上若干個車窗候選區域,最后通過安全帶檢測模型及支持向量機(SVM)分類器[9]處理得到安全帶檢測結果。
1 基于深度學習的安全帶檢測
1.1 CNN特征提取算法
深度學習[11-12]是通過大量的簡單神經元組成,根據非線性關系將底層特征抽象表示為高層特征。卷積神經網絡[13]是一個多層的神經網絡,每層由多個二維平面組成,而每個平面包括多個獨立神經元。網絡中由一些簡單元和復雜元組成,分別記為S-元和C-元。
1.2 檢測模型的構建
如圖1所示,我們構建了由三個CNNs組成的多尺度的特征提取模型。每個CNN模型共有八層,其中有五個卷積層和三個全連接層。對于每一張圖片,都會自動的提取三個嵌套的越來越小的矩形窗口的特征,分別為車輛區域、車窗區域以及安全帶區域。這三個由CNNs提取的特征送到兩個全連接層,第二個全連接層的輸出被送到輸出層,最后用線性支持向量機分類器對所有子塊進行分類。
2 實驗結果
2.1 車輛及車窗檢測
本實驗訓練集包括戴安全帶和未戴安全帶各2000張的車輛圖像,測試集包括戴安全帶和未戴安全帶各100張的圖像。本文共完成車輛檢測、車窗檢測和安全帶檢測三個實驗。其中,對于車輛和車窗檢測部分,使用檢測率(CIR)和漏檢率(MIR)來作為系統的評價指標,計算方式如下式所示:
對于車輛檢測實驗,選取6000車輛圖片用于訓練模型。然后選取2000張車輛圖片作為測試圖片,并隨機分成10份。檢測結果示例如圖2(a)。平均檢測率為93.3%,平均漏檢率為6.7%。同時,對比了基于Adaboost算法[10]的車輛檢測模型,檢測結果示例如圖2(b),平均檢測率為90.6%,平均漏檢率為9.4%。
由此可以看出,本文算法在相同的數據庫上比Adaboost算法表現更好,具有更低的漏檢率和誤檢率。并且車輛檢測結果更適合用于后面的車窗檢測實驗。
車窗檢測實驗的示例如圖3所示。選取6000張車窗正面車窗圖片用于訓練模型,選取2000張圖片作為測試集,并隨機分成10份。平均檢測率為93.6%,平均漏檢率為9.4%。
2.2 安全帶檢測
對于安全帶檢測部分,使用檢測率(CIR)、虛警率(WIR)和漏檢率(MIR)作為安全帶檢測系統的評價指標,計算方式如下式所示:
選取戴安全帶和未戴安全帶圖片各2000張圖片用于訓練模型。選取2000安全帶區域圖片作為測試圖片,并隨機分成10份,每份包含戴安全帶圖片和未戴安全帶圖片各100張。通過基于深度學習的安全帶檢測算法,檢測結果示例如圖4所示,平均檢測率為92.1%,平均虛警率為6.4%,平均漏檢率為2.5%。
3 結論
安全帶檢測是智能交通系統中的一個重要研究課題。本文提出了一個高效的進行安全帶檢測的系統,對于檢測部分,我們采用深度神經網絡的特征提取方法,該特征更加適用于訓練檢測模型。同時,我們結合SVM的后處理,提高了安全帶檢測系統的魯棒性,并且很大程度上減低了虛警率和漏檢率。
參考文獻:
[1] Ha D M, Lee J M, Kim, Y D. Neural-edge-based vehicle detection and traffic parameter extraction [J]. Image and vision computing, 2004, 22(11): 899-907.
[2] Song G Y, Lee K Y, Lee J W. Vehicle detection by edge-based candidate generation and appearance-based classification [C]//Intelligent Vehicles Symposium, IEEE, 2008: 428-433.
[3] Ballard D H. Generalizing the Hough transform to detect arbitrary shapes [J]. Pattern recognition, 1981, 13(2): 111-122.
[4] Guo H, Lin H, Zhang S. Image-based seat belt detection [C]//2011 IEEE International Conference on Vehicular Electronics and Safety (ICVES). IEEE, 2011: 161-164.
[5] 王運瓊, 游志勝. 基于色差均值的快速車窗定位算法[J]. 計算機應用與軟件, 2004, 21(1): 78-79.
[6] 張建軍, 羅靜. 基于改進Sobel算子的表面裂紋邊緣檢測算法[J]. 合肥工業大學學報(自然科學版), 2011年06期.
[7] Ali M, Clausi D. Using the Canny edge detector for feature extraction and enhancement of remote sensing images [C]//IEEE 2001 International Geoscience and Remote Sensing Symposium. 2001:2298-2300.
[8] Li Guanbin, Yu Yizhou. Visual Saliency Based on Multiscale Deep Features [C]//2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2015: 5455-5463.
[9] 駱玉榮. 安全帶識別系統的研究與實現[D]. 北京:北京工業大學, 2008.
[10] 吳法. 圖像處理與機器學習在未系安全帶駕車檢測中的應用[D]. 杭州:浙江大學, 2013.
[11] A. Krizhevsky, I. Sutskever, G. E. Hinton. Imagenet classification with deep convolutional neural networks [C]//Advances in neural information processing systems, 2012:1097-1105.
篇9
Abstract: Classifier selection is the key factor for data classification. K-mean classifier, ISODATA classifier and SOFM neural network classifier are compared in computational complexity and classification performance. The experiments show that three kinds of classifiers cost equal time on the same image, but the self organizing feature map neural network classifier is optimal in classification performance.
關鍵詞: K-均值分類器;ISODATA分類器;SOFM神經網絡分類器
Key words: K-mean classifier;ISODATA classifier;SOFM neural network classifier
中圖分類號:TP7 文獻標識碼:A 文章編號:1006-4311(2013)04-0182-02
0 引言
K-均值分類器、迭代自組織數據分類器和自組織特征映射神經網絡分類器在遙感圖像分類方面應用廣泛。王曉軍等人將非監督K-均值分類用在合成孔徑雷達SAR圖像各極化通道上進行參數估計[1]。包健等人將K-均值算法用于高光譜遙感影像的非監督分類中,具有較強的實用性[2]。賈明明等人選取對氣候變化敏感的澳大利亞作為研究區。利用了ISODATA分類結果、NDVI閾值及其時間序列主成分分析特征量對研究區土地利用/覆被進行分類[3]。李正金等人進行了基于TM衛星遙感技術和小麥估產模型的冬小麥產量監測研究,采用優化的ISODATA分類方法,結合人機交互式判讀解譯作物信息[4]。夏浩銘等提取地物在空間上的聯系,利用神經網絡分類,獲得較好的地物分類精度[5]。文章闡述了三種分類器的工作原理,分析了三種分類器的計算復雜度和分類效果。
1 K-均值分類器
基本K-均值思想很簡單。首先,選擇k個初始聚類中心,其中k是目標分類數目。每個樣本按照距離函數計算與所有聚類中心的距離,樣本加入到與之距離最短的聚類中心所在分組。新樣本加入后,更新該分組的聚類中心。重復訓練和更新,直到每類的聚類中心不發生變化為止。當分類數目已知時,利用K-均值分類方法能夠方便地計算出樣本聚類中心。但是在實際應用中,分類數目可能無法估算,這在一定程度上限制了這種方法的應用。
K-均值算法特點是每次調整樣本后,修改一次聚合中心和準則值,當考察完n個樣本后,一次迭代運算完成,新的聚合中心和準則值也計算出來。在迭代過程中,準則值逐漸減小,直到它的最小值為止。如果在一次迭代前后,準則值沒有變化,說明算法已經收斂。
2 ISODATA分類器
ISODATA算法通過對樣本迭代來確定聚類的中心。每一次迭代時,首先是在不改變類別數目的情況下改變分類。然后將樣本平均矢量之差小于某一閾值的類別合并起來,根據樣本協方差矩陣來決定其分裂與否。主要環節是聚類、集群分裂和集群合并等處理。
ISODATA分類算法最優迭代次數很難設定,一般遙感圖像的數據量大,若迭代誤差取值較小,分類也很難實現。沈照慶等人[6]以某次迭代中“合并”和“分裂”都為零為求最優分類數的迭代條件,而不是預先設定迭代次數;取最大和最小隸屬度取代每一個隸屬度為比對特征值,提高了分類速度和精度;利用等效轉換研究隸屬度矩陣的迭代誤差變化規律,得出變化速度趨于穩定時為求解最優隸屬度矩陣的智能迭代控制,減少人為事先干預。
3 SOFM神經網絡分類器
神經網絡由被稱作神經元的相互連接處理單元組成。自組織特征映射(Self-Organizing Feature Map,簡稱SOFM)網絡模擬大腦的神經系統自組織特征映射的功能,在學習過程中不需要指導,進行自組織學習。SOFM網絡可用于圖像壓縮、語言識別、機器學習和優化問題等。
訓練SOFM網絡時首先初始化連接權重為小的隨機數,訓練開始后,輸入向量送入網絡。每輸入一個樣本矢量,各神經元的加權和中必然有一個最大值,經過側反饋作用,在最大值點周圍連接權重自適應調節。SOFM網絡已經證明,網絡通過反復學習輸入模式,可使連接加權矢量空間分布密度與輸入模式的概率分布趨于一致,也就是連接權矢量空間分布能反應輸入模式的統計特征。訓練好的網絡在競爭層產生了一個或幾個最大輸出,它們在競爭層中的位置反映了輸入向量在自身空間的特征。
4 實驗結果分析
實驗選取2003年青島市一景SPOT5圖像作為數據源,截取城鄉結合部某地作為實驗區域,實驗區域在紅波波段顯示為圖1(a)。對于實驗區的遙感圖像分別采用上述分類器進行地物分類實驗。
用ENVI 4.3的分類功能根據K-均值算法分類。參數設置為:分類數量15(一般為最終輸出分類數的2-3倍),最大迭代次數為40(默認是15),其它參數取默認值。K-均值關注的是不同波段的灰度信息,系統自動分類時,得到的分類數目為八類,結果如圖1(b)所示。從分類結果上可以看出,K-均值分類算法對水體的分類效果較好,水體用紅色表示,不但能分出主河道而且顯示出在耕地中有一條灌溉溝渠。綠地在分類圖中用綠色表示,圖上中部的綠地分類正確,但在河道附近,部分耕地錯分為綠地了。耕地被分為藍色、黃色和暗綠色三類。反射系數高的南北方向道路和屋頂較亮的廠房被歸為一類,東西走向的道路兩邊毛刺現象嚴重。建筑物錯分率也較高。
在ENVI 4.3環境下,利用ISODATA算法分類。參數設置為:類別數范圍[5-15](一般最小數量不能小于最終分類數,最大數量為最終分類數量的2-3倍),最大迭代次數為40(默認是15),其它參數取默認值,結果見圖1(c)。從分類結果上看,ISODATA分類算法對灰度值一致性好的水體分類效果較好,水體用紅色表示。能區分出主河道而且顯示出在耕地中有一條灌溉溝渠,但將圖像下方,靠近南北走向的道路的一間面積較大的廠房錯分為水體。綠地在分類圖中用綠色表示,圖上中部的綠地分類正確較好,但在河道附近,相當一部分耕地錯分為綠地了。耕地分類效果表較好,但有部分錯分為綠地。東西走向的道路線條比較連貫,兩邊有點毛刺現象,但不嚴重。的空地用粉紅色表示,居民區是暗綠色,部分工廠廠房的屋頂錯分為水體。
SOFM網絡利用MATLAB中的神經網絡工具箱實現。設定SOFM網絡的輸入矢量各維的數據范圍是像素灰度在[1,32]之間,鄰域像素卷積[25,800]之間,學習率為0.9,距離函數是歐氏距離函數,訓練步長是5000。輸入訓練樣本,每類500個,5類共2500個樣本,距離為5類,每類表征一種地物類型。網絡對類型的定義儲存在訓練網絡中。利用訓練好的網絡對實驗圖像所有像元進行分類。分類結果用灰度圖像表示,像素的顏色代表分類的類型,像素的位置對于測試圖像同位置的地物,如圖1(d)所示。白色表示道路,淺灰表示建筑物,灰色表示綠地,深灰表示耕地,黑色表示水體。從分類結果圖上看,縱橫貫穿郊區的主干道和樓區內的道路基本能夠正確分類。由于反射系數與道路相近,工廠廠房的屋頂也被錯分為道路。建筑物、耕地和綠地總體上分類正確。水體的分類結果令人滿意,主水道和灌溉的溝渠都能清楚地分出。分類器處理樣本圖像的時間接近,都是20分鐘左右。
5 總結
K-均值分類中耕地被分三類,道路兩邊毛刺現象嚴重,建筑物錯分率也較高,分類效果最差。SOFM網絡對道路、水體、耕地和綠地總體上分類正確,分類正確率最高。ISODATA分類對水體、耕地、道路分類基本正確,建筑物錯分較多。
參考文獻:
[1]王曉軍,王鶴磊,李連華,孟藏珍,馬寧.基于C均值分類的極化SAR圖像白化斑點濾波方法[J].系統工程與電子技術,
2008,30(12):2389-2392.
[2]包健,厲小潤.K均值算法實現遙感圖像的非監督分類.機電工程,2008,25(3):77-80.
[3]賈明明,劉殿偉,宋開山,王宗明,姜廣甲,杜嘉,曾麗紅.基于MODIS時序數據的澳大利亞土地利用/覆被分類與驗證.遙感
技術與應用,2010,25(3):379-386.
[4]李正金,李衛國,申雙.基于ISODATA法的冬小麥產量分級監測預報.遙感應用,2009,8:30-32.
篇10
隨著時代的發展,構建在互聯網生態模式之上的云計算、大數據、人工智能等新技術,正滲透到每一個行業,引發產業生產、服務模式的變革,并且已經取得一系列重要成果。在此背景下,大學教學如何跟上時代步伐,是值得每一個高校教師深入思考的問題。程序設計作為計算機專業大學生的必修課程和必須掌握的基本技能,其教學改革在新時代下尤顯必要。
傳統的大學教學中,一直都以C/C++或Java作為教學語言。誠然,C/C++和Java是當今使用人數最多的語言,但在“互聯網+”時代,面對大數據分析時,特別是面對數據采集、仿真建模、結果驗證與數據可視化時,他們就不再是最佳選擇。
Python作為一種解釋型超高級語言,具備交互式、可移植、面向對象的特點。它功能強大,適用于多種操作系統,有完善豐富的工具包,正在得到越來越多的應用,而且越來越被重視。2017年4月,北京理工大學計算機學院和高等教育出版社聯合承辦了“第一屆高等學校Python語言及計算生態教學研討會”,提出了計算生態的概念[1],大力推動了Python教學。在此背景下,根據我們在Python教學和科研中的應用經驗,對如何進行基于Python計算生態的教學改革進行探討。
1 Python語言的興起與優勢
從20世紀中期到今天,短短的70年間,電子計算機經歷了飛速的發展,出現了許多不同的程序設計語言,例如Pascal、Fortran、C、C++、Java、PHP、C#等,這些不同的語言,都體現了不同的設計哲學,也反映了不同的時代特點。
然而,每種程序設計語言都有其局限性。Python的設計者Guido von Rossum希望有一種語言,既具有C方便地調用計算機功能接口的能力,又可以像一些腳本語言一樣輕松地編程。Python正是在這種背景下被創造出來。
同C/C++和Java等語言相比,Python有以下優勢:
(1)簡單易學。Python是一種代表簡單主義思想的語言,語法簡單,學習起來容易上手。這使學生能夠專注于解決問題而不是學習語言本身。
(2)解釋性。Python寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。這使得Python更加簡單,更易于移植。
(3)面向對象。Python既支持面向過程的編程,也支持面向對象的編程。
(4)可擴展性。為了提升運行效率,可以采用C/C++來編寫關鍵代碼,然后在Python程序中使用它們。
(5)混合編程。Python被稱為膠水語言,是由于可以很容易地將Python與其他語言進行混合編程。這樣方便地利用已有的各種工具包,提高開發效率。
(6)豐富的庫。Python有強大的標準庫,并且Python的生態系統開始拓展到第三方包,例如用于Web框架的web.py ,用于科學計算的numpy,以及用于數據可視化的matplotlib等。
Python作為一種跨平臺編程語言,已經被移植在以Linux、Windows、Mac、Android為代表的許多平臺上。由于Python的開放性,有豐富的來自開源社區的成熟庫支持,從而可以基于Python完成各種工作,例如數據采集(如網絡爬蟲)、圖像處理、機器學習、科學計算等。
2 針對Python的應用支持與國內外課程建設情況
正由于Python具有上述優點,它獲得了業界的廣泛支持。例如在Google公司,Python是繼C++和Java之后,使用率排名第三的編程語言,使用Python的開發團隊也是Google的第三大研發部門。
(1)Tensorflow:TensorFlow是由Google Brain小組開發的用于機器學習和深度神經網絡的工具。據統計,Tensorflow是目前使用人數最多的開源深度學習框架[2]。TensorFlow本身是使用C++實現的,然后用Python封裝。Tensorflow可以根據用戶給出的所有指令創建一個計算圖,該圖被內部優化和編譯成可執行的C++代碼。這樣Tensorflow就可以利用Python 帶來的開發速度和C++帶來的執行速度。
(2)Google App Engine:Google App Engine(GAE),是谷歌推出的云平臺,它完全把CPU、內存等硬件基礎設施抽象化,這樣只需要關注代碼的編寫,不需要關注硬件、操作系統或者物理位置。Python是GAE最早支持編程的語言之一,任何使用Python編寫的程序,都可以配合Google Python API,很方便地在GAE上創建、部署、運行Python程序。
(3)Caffe(Convolutional Architecture for Fast Feature Embedding):Caffe是由Berkeley AI Research(BAIR)和Berkeley Vision and Learning Center (BVLC)社?^貢獻者開發的另一個深度學習框架。同Tensorflow一樣,Caffe也是采用C++進行編寫,然后提供Python封裝,從而既可以利用C++的高執行效率,也可享受Python的高開發效率。
(4)在好萊塢,工業光魔公司(Industrial Light) 采用Python制作商業動畫,在“阿貝斯(Abyss)”“星球之旅(Star Trek)”“Indiana Jones”等超級大片中驚艷登場。
(5)ERP和CRM軟件的開發也開始基于Python完成;Red Hat曾用Python和Tk一起成功開發配置和管理操作系統的可視界面,整個系統可以全面控制Linux操作系統,并根據用戶選擇對配置文件作自動更新。
正由于Python是受到業界的歡迎,國外很多高校(如麻省理工學院、斯坦福大學、加州大學洛杉磯分校等)已經用Python作為程序設計語言的教學對象。在Coursera等在線教育平臺上,可以發現有來自密歇根大學、萊斯大學、約翰霍普金斯大學等眾多高校的Python課程;國內南京大學張莉老師的課程也在其中。然而國內這方面的工作做得還遠遠不夠。截至2015年,我國開設Python語言教學的高校不超過10所[3]。目前在國內大力推動Python教學改革的主要有北京理工大學嵩天老師等人,已編著并出版相應的大學教材[4],受到廣泛歡迎。哈爾濱工業大學車萬翔老師等人分析了C語言作為入門語言的不足和Python作為入門語言的優勢,闡述了計算機專業高級語言程序設計課程的改革方案和實施效果[5]。南京大學張莉老師發表了《基于MOOC的“用Python玩轉數據”翻轉課堂實踐與研究》,研究證明:采用Python教學可以較好地提高學生的主動學習能力、學習興趣和熱情以及問題求解能力[6]。
3 基于Python的教學科研應用改革案例
3.1 輸入輸出
輸入輸出(I/O)是每個程序都必須具備的重要功能。常見的I/O可以分為3類:標準I/O(終端打印等)、文件I/O和網絡I/O。以?K端I/O為例:
/* Basic I/O in C */
#include
int main()
{
char name[20]; /* char數組,保存第一行輸入,作為名字輸出 */
scanf("%s", name); /*讀取第一行輸入 */
printf("Hello %s\n", name);
return 0;
}
以上用C語言編寫的有效代碼共計8行,輸入輸出都采用標準庫函數。由于C語言本身設計方面的缺陷(如果第一行輸入超出char數組大?。?,可能導致嚴重的緩沖區溢出問題。針對這一問題,C++對數組越界進行了保護,從而提高系統安全性。
如果采用Java實現,則有效代碼共10行。由于Java的面向對象編程思想,下面這個示例程序中多了很多對象構造的流程,引用的庫看起來也相對較多,如下所示。我們只需要對這段代碼進行稍微修改,就可以實現網絡I/O和文件I/O。例如,替換“System.in”,就能夠實現對文件或者網絡流讀取。將“Reader”和“InputStream”替換,就能夠實現寫入。
/ * Basic I/O in Java */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class HelloWorld {
public static void main(String[] args) throws Exception { /*所有Java程序的入口函數 */
/* 新建輸入對象,用來讀取標準輸入。其中對象構造有嵌套*/
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine(); /* 讀取第一行輸入 */
System.out.printf("Hello %s\n", name);
}
}
相比之下,基于Python的代碼則非常短小簡潔:
/* Basic I/O in Python */
import sys
name = sys.stdin.readline() /* 讀取第一行輸入 */
print("Hello " + name)
有效代碼僅僅只有3行!同樣,替換其中的“sys.stdin”可以實現對文件讀取。對于動態類型的Python來說,所有的變量都不需要繁復的聲明,直接用就可以,再加上解釋執行的特點,無需定義入口函數即可運行。
以上是對C/C++、Java、Python在基本終端I/O操作上的比較,當推廣到文件I/O和網絡I/O后,Python的優勢會更突出,詳見表1。
3.2 數據操作
數據處理是大數據時代我們面臨的首要問題。然而,由于信息化系統建設過程中,數據可能以不同的結構存在,可能是純文本文件、CSV格式,也可能是Excel格式,或者是各種不同廠商的數據庫格式。
當然,可以采用C++或Java來讀取各種異構數據源,但過程相當繁瑣,需要利用各種底層驅動,甚至是一些商業化組件。以Excel文件讀取為例,為了處理Excel數據,C/C++代碼需要用到libxl商業庫,而Java也需要用到Apache POI開源庫。而利用Python對Excel文件進行讀取則需要利用Pandas開源數據處理分析庫,示例代碼如下:
/* Read Excel in Python */
import pandas
df = pandas.read_excel('sample.xls')
print df.columns /* 輸出列名 */
values = df['列名'].values /* 獲取某一列的所有數據 */
FORMAT = ['列名1', '列名2', '列名3'] /* 獲取指定列組成的數據幀 */
df_selected = df[FORMAT]
總的來說,在數據庫操作方面,C++、Java和Python的支持都非常好。C++和Java都為SQL提供了標準的連接、驅動管理類,不同的數據庫只需要加載不同的驅動就可以。Java對數據庫有比較好的語言級別支持,相應的驅動也比較豐富。Python也提供語言級別的支持,同時第三方庫十分豐富,甚至一種數據庫有多個不同的連接庫。另外值得一提的是, 盡管當前很多流行的分布式大數據平臺及分布式數據庫使用Java編寫,但利用Python同樣能夠方便地基于第三方庫實現操作Hbase、Hive以及其他非關系數據庫,如Mongodb、Redis等,這種特點是C/C++不能比擬的。表2為Python與C++、Java在數據庫操作上的比較。
由于Python對各種文件和數據庫的支持都非常好,它十分適合編寫數據庫之間,數據庫與文件之間相互導入導出數據的腳本,是大數據處理的首選語言。
3.3 數據可視化
豐富的可視化數據圖形能夠更好地對數據進行展示。利用數據可視化,可方便分析人員從宏觀上了解數據的形態和分布,或者進行最后的結果展示。
Python提供了豐富的數據可視化工具,如pandas、Seaborn、Bokeh、matplotlib等。下面以matplotlib為例說明如何利用Python完成數據繪圖與可視化。
假定我們要展現的數據用CSV格式保存,內容見表3。目標是基于matplotlib進行直觀的數據總體分布展示,例如利用直方圖統計年齡分布、利用箱體圖展示薪資水平、利用散點圖繪制年齡與收入的相關關系。完整代碼如下:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv("example.csv") /* ?x取數據 */
fig = plt.figure()
ax1 = fig.add_subplot(1,4,1) /* 定義展示布局 */
ax1.hist(df["Age"], bins = 5) /* 定義直方圖 */
plt.axis([20,45,0,5])
plt.title("Age distribution")
plt.xlabel("Age")
plt.ylabel("Employee")
plt.show()
ax2 = fig.add_subplot(1,4,2) /* 確定圖在畫布中的位置 */
ax2.boxplot(df["Age"]) /* 定義箱線圖 */
ax3 = fig.add_subplot(1,4,3)
ax3.bar(df["Age"],df["Income"]) /* 定義條形圖 */
ax3.set_title("Income distribution")
ax3.set_xlabel("Age")
ax3.set_ylabel("Income")
ax4 = fig.add_subplot(1,4,4)
ax4.scatter(df["Age"],df["Income"]) /* 定義散點圖 */
ax4.set_title("Income distribution")
ax4.set_xlabel("Age")
ax4.set_ylabel("Income")
plt.show()
得到的可視化效果如圖1所示。
Python的開放性還表現為利用支持庫,實現如圖1所示的各類統計效果和復雜的展示(如地圖、熱力圖以及復雜網絡等)。此外,除了構建在Python之上的原生庫,還有大量其他的數據可視化工具包(如基于Javascript的Plot.ly、百度的Echart等),這些工具包同時也提供Python的調用封裝,豐富了基于Python的可視化效果,體現了強大的Python計算生態。
3.4 圖像處理與深度神經網絡
深度學習的出現點燃了研究者對神經網絡和機器學習的研究熱情,特別是基于Google Tensorflow的AlphaGo接連擊敗世界圍棋冠軍,更加吸引了人們對深度學習的關注。在深度學習領域,很多優秀的開源平臺與框架(如Tensorflow、Caffe、Theano、MXNet等)都提供Python接口。這也從側面反映出Python計算生態已經建立。下面以Tensorflow提供的Python接口為例,介紹Python在圖像處理與深度神經網絡方面的應用。
卷積神經網絡是深度學習的一個重要模型。Tensorflow已經屏蔽了關于卷積神經網絡的具體結構,如神經元函數、拓撲連接狀態等。程序員只需要通過參數指定,就能完成網絡模型的設計,例如
conv1 = tf.layers.conv2d(inputs=input_layer,filters=32,kernel_size=[5, 5], padding="same",activation=tf.nn.relu)
pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)
通過設置輸入層ID、激活函數、padding方法、核大小等參數,就可以唯一確定輸入層、卷積層、池化層,再通過調整參數并選擇一定的學習算法,結合pillow、scikit-image等基于Python的圖像處理工具包,從而可以利用深度網絡自動完成特征學習,完成模式識別或圖像分類工作。