卷積神經(jīng)網(wǎng)絡的特征范文

時間:2024-04-02 18:03:21

導語:如何才能寫好一篇卷積神經(jīng)網(wǎng)絡的特征,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公文云整理的十篇范文,供你借鑒。

卷積神經(jīng)網(wǎng)絡的特征

篇1

關鍵詞: 模式識別; 神經(jīng)網(wǎng)絡; 卷積; 文字識別

中圖分類號: 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 引 言

隨著全球信息化的飛速發(fā)展和對自動化程度要求的不斷提高 ,手寫文字識別技術被廣泛地應用到許多方面。特別是近幾年擁有手寫功能的手機、平板電腦等智能電子產(chǎn)品的普及,聯(lián)機手寫文字識別研究已經(jīng)成為一個備受關注的主題。聯(lián)機手寫字符識別要求實時性較高,識別過程中要求特征空間的維數(shù)比較高,在進行特征樣本訓練時要求訓練的數(shù)目很大,要匹配的特征值或特征對象比較多 [1?2]。

卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNNs)的優(yōu)點在于圖像的識別過程中對視覺模式的獲得是直接從原始圖像中獲得的,所以在設計系統(tǒng)時圖像的預處理工作很少,與一般神經(jīng)網(wǎng)絡相比是一種高效的識別方法。卷積神經(jīng)網(wǎng)絡在模式識別的一些領域具有很好的魯棒性,如在識別有變化的模式和對幾何變形的識別方面。利用卷積神經(jīng)網(wǎng)絡的手寫識別方法具有如下一些優(yōu)點:對于要檢測的圖像可以與事先制定網(wǎng)絡拓撲結構之間有較高的匹配率;特征提取和模式分類同時進行;訓練參數(shù)往往是系統(tǒng)計算量的重要參數(shù),而卷積神經(jīng)網(wǎng)絡中利用權值共享技術,這樣就可以大大降低該參數(shù),在設計系統(tǒng)結構時使得結構變得更簡單,從而使得整個系統(tǒng)具有更好的適應性[3?5]。

目前,人機交互系統(tǒng)的手寫字符識別、汽車車牌號識別和信息安全中常用的人臉識別等領域都有卷積神經(jīng)網(wǎng)絡的成功應用。文獻[6]用一個4層的卷積神經(jīng)網(wǎng)絡LeNet?5對Mnist庫進行識別實驗,獲得了98.4%的識別率,用2層的BP網(wǎng)絡的識別率[4,6]是87%。許多學者對卷積神經(jīng)網(wǎng)絡在聯(lián)機手寫文字識別方面做了多方位的研究。 但是,這些成功的聯(lián)機手寫文字識別主要是針對小模式字符集,利用以往的這些方法對大規(guī)模模式分類的聯(lián)機手寫文字的識別依然有識別率不高的問題。本文介紹了卷積神經(jīng)網(wǎng)絡的基本概念和一種典型的卷積神經(jīng)網(wǎng)絡結構,給出了基于多重卷積神經(jīng)網(wǎng)絡的字符識別和詞語識別模型。通過使用大字符集的UNIPEN數(shù)據(jù)庫進行訓練和測試,本文提出的方法在大模式聯(lián)機手寫識別上,取得了較高的識別速度和滿意的識別率。

1 卷積神經(jīng)網(wǎng)絡

文獻[6?7]中詳細地描述了卷積神經(jīng)網(wǎng)絡如何保證圖像對位移、縮放、扭曲魯棒性能。典型的手寫字符卷積神經(jīng)網(wǎng)絡LeNET 5的結構圖如圖1所示[6?7]。

圖1 典型的卷積神經(jīng)網(wǎng)絡結構

在圖1中,輸入層接收要識別32×32的手寫字符圖像,經(jīng)過簡單的大小歸一化和圖像灰度處理,之后的結果作為一個采樣層的圖像;然后用一個可學習核進行卷積操作,卷積結果經(jīng)過激活函數(shù)的輸出形成這一層的神經(jīng)元,每個神經(jīng)元與輸入圖像的一個5×5的鄰域相連接,從而得到由6幅特征圖組成的第一個隱層(C1層)。每個特征圖有25個權值(如方向線段,端點、角點等),考慮到邊界效果,得到的特征圖的大小是28×28,小于輸入圖層[3?9]。卷積層的數(shù)學計算過程可表示為:

[xlj=fi∈Mjxl-1j*kernellij+blj] (1)

式中:[l] 代表層數(shù);kernel是卷積核;[Mj]代表輸入特征圖的一個選擇。每個輸出圖有一個偏置[b]。

每個卷積層的結果作為下一個次采樣層的輸入,次采樣層的作用是對輸入信息進行抽樣操作。如果輸入的特征圖為n個,則經(jīng)過次采樣層后特征圖的個數(shù)仍然為n,但是輸出的特征圖要變?。ɡ?,各維變?yōu)樵瓉淼?0%)。因此隱層S2是由6個大小為14×14的特征圖組成的次采樣層。次采樣層計算公式可以用式(2)表示:

[xlj=fβl-1jdown(xl-1j)+blj] (2)

式中down(?) 表示次采樣函數(shù)。次采樣函數(shù)一般是對該層輸入圖像的一個n×n大小的區(qū)域求和,因此,輸出圖像的大小是輸入圖像大小的[1n]。每一個輸出的特征圖有自己的β和b。

類似的,C3層有16個10×10的特征圖組成的卷積層,特征圖的每個神經(jīng)元與S2網(wǎng)絡層的若干個特征圖的5×5的鄰域連接。網(wǎng)絡層S4是由16個大小為5×5的特征圖組成的次采樣層。特征圖的每個神經(jīng)元與C3層的一個2×2大小的鄰域相連接。網(wǎng)絡層C5是由120個特征圖組成的卷積層。每個神經(jīng)元與S4網(wǎng)絡層的所有特征圖的5×5大小的鄰域相連接。網(wǎng)絡層F6,包括84個神經(jīng)元,與網(wǎng)絡層C5進行全連接。最后,輸出層有10個神經(jīng)元,是由徑向基函數(shù)單元(RBF)組成,輸出層的每個神經(jīng)元對應一個字符類別。RBF單元的輸出yi的計算方法如式(3)所示:

[yi=j(xj-wij)2] (3)

很多研究人員通過對字符集作彈性訓練,經(jīng)測試發(fā)現(xiàn)在MNIST字符集上的識別率可以高達99%以上[6?7] 。卷積神經(jīng)網(wǎng)絡的優(yōu)勢主要是對小模式集上,如對數(shù)字或26個英文字母組成的集合都有著較高的識別率。然而,對大模式集的識別仍然是一個挑戰(zhàn),因為設計一個優(yōu)化的并足夠大的單一網(wǎng)絡是比較困難的,且訓練時間也較長。因此,本文的目的旨在通過組合多個對某一字符集有高識別率的卷積神經(jīng)網(wǎng)絡,從而構成多重卷積神經(jīng)網(wǎng)絡,進而提高卷積神經(jīng)網(wǎng)絡對大模式集手寫字符的識別率。

2 多重卷積神經(jīng)網(wǎng)絡

2.1 多重卷積神經(jīng)網(wǎng)絡字符識別

根據(jù)傳統(tǒng)卷積神經(jīng)網(wǎng)絡的運算過程以及其在處理大模式集手寫字符時存在的不足,本文提出一種多重卷積神經(jīng)網(wǎng)絡來改進傳統(tǒng)的卷積神經(jīng)網(wǎng)絡模型,用多個擁有高識別率的小卷積神經(jīng)網(wǎng)絡組成一個多重卷積神經(jīng)網(wǎng)絡。每一重小卷積神經(jīng)網(wǎng)絡對某一具體字符集有較高的識別率,另外,單重卷積神經(jīng)網(wǎng)絡除了有一個正式的輸出集之外,還產(chǎn)生一個未知的輸出(即難以識別的字符),即如果一個輸入字符沒有被正確識別,它將被輸出為一個未知字符,然后輸入模式轉到下一重卷積神經(jīng)網(wǎng)絡進行識別。最后,通過一個拼寫檢查模塊進行判斷,選擇最好的結果輸出。系統(tǒng)的流程如圖2所示。

其中CNN 1是識別手寫數(shù)字的卷積神經(jīng)網(wǎng)絡,CNN 2是識別手寫小寫英文字母的卷積神經(jīng)網(wǎng)絡,該模型具有極強的擴展性,可以添加多任意模式的卷積神經(jīng)網(wǎng)絡(如中文,日文等)。

圖2 多重卷積神經(jīng)網(wǎng)絡字符識別示意圖

2.2 隨機對角Levenberg?Marquardt訓練方法

傳統(tǒng)的結構比較簡單、單一的卷積神經(jīng)網(wǎng)絡多采用基本的Back Propagation(BP)規(guī)則訓練網(wǎng)絡,往往需要幾百次迭代,網(wǎng)絡的收斂速度較慢。本文采用LeCun博士提出的隨機對角Levenberg?Marquardt 算法對網(wǎng)絡作訓練,該算法需要的迭代次數(shù)明顯比基本的BP 算法少[4,9]。隨機對角Levenberg?Marquardt算法的公式為:

[ηki=ε?2E?w2ij+μ] (4)

式中[ε]是全局的學習率,一般取初始值0.01,太大會使網(wǎng)絡無法收斂,太小則會降低收斂速度,且使網(wǎng)絡更容易陷入局部極小值,訓練過程中可以用啟發(fā)式規(guī)則改變[ε]的值,本文取最下值為5e-005; [?2E?w2ij]是一個估計值,根據(jù)訓練集的大小可以調(diào)整樣本數(shù)量,文中隨機選取200個樣本估算它的值;[μ]用來避免[?2E?w2ij] 太小時[ηki]的變化過大 。

2.3 多重卷積神經(jīng)網(wǎng)絡詞句識別

本文提出的多重卷積神經(jīng)網(wǎng)絡對手寫詞語的識別方法可以簡單地描述為:首先對輸入的手寫圖像進行預處理和分割,然后通過多重卷積神經(jīng)網(wǎng)絡模塊分別進行識別,最后采用單詞識別模塊對識別結果進行判斷,選擇最好的結果輸出。其過程如圖3所示。

圖3 多重卷積神經(jīng)網(wǎng)絡聯(lián)機手寫詞句識別過程

本文提出的多重卷積神經(jīng)網(wǎng)絡聯(lián)機手寫文字識別方法克服了傳統(tǒng)卷積神經(jīng)網(wǎng)絡文字識別的對字符集的限制,每一重卷積神經(jīng)網(wǎng)絡是一個針對小模式的卷積神經(jīng)網(wǎng)絡,易于訓練和優(yōu)化,更重要的是此方案的靈活性非常好易于調(diào)節(jié)參數(shù),可擴展性強。每一重卷積神經(jīng)網(wǎng)絡都具有可重用能力,可以根據(jù)需要加載一個或多個網(wǎng)絡,可以根據(jù)新的模式添加新的網(wǎng)絡而不需改變或重建原來的網(wǎng)絡。

3 訓練和實驗

為了評估多重卷積神經(jīng)網(wǎng)絡對基于大模式字符集的聯(lián)機手寫文字識別的性能,本系統(tǒng)采用MNIST和UNIPEN兩種不同的手寫字符訓練集進行測試。UNIPEN數(shù)據(jù)庫是在1992年舉行的IEEE IAPR會議上提出并建立的,其目的是創(chuàng)建一個大型的手寫體數(shù)據(jù)庫用于為在線手寫識別提供研究和開發(fā)的基礎,得到了多個知名公司或研究所的支持并完成了UNIPEN的規(guī)范設計。在進行數(shù)據(jù)比對實驗中,本文采用許多研究使用的MNIST手寫數(shù)字數(shù)據(jù)庫,該數(shù)據(jù)庫是NEC 研究中心設計的,是NIST(The National Institute of Standards and Technology)數(shù)據(jù)庫的一個子集,該訓練集中有大量訓練樣本和測試用例。本文默認用以下定義:

[識別率=正確識別數(shù)樣本總數(shù)×100%]

[失誤率誤識率=錯誤識別數(shù)樣本總數(shù)×100%]

實驗測試是在通用的臺式電腦上進行的。整個識別原型系統(tǒng)采用C#編寫,運行在.NetFrame 4.5平臺上。經(jīng)測試對MNIST訓練集識別正確率可達[9]99%,對UNIPEN數(shù)字識別正確率可達97%,對UNIPEN數(shù)字和大寫字母識別正確率可達89%(1a,1b) ,對UNIPEN小寫字母識別正確率可達89%(1c) 。圖4是對UNIPEN小寫字母3次訓練的均方誤差比較。

圖4 訓練的誤差數(shù)據(jù)

從圖4中可以看出,在開始的幾個訓練周期內(nèi),均方誤差(MSE)下降得很快,然后在第13個周期后神經(jīng)網(wǎng)絡達到一個穩(wěn)定的值,約為0.148 5。也就是說,網(wǎng)絡在第13個周期后,改善程度就很小。所以修改訓練錯誤率的值為0.000 45后重新進行18代的第二次訓練,均方誤差有所降低。經(jīng)過第三次的訓練后趨于穩(wěn)定,對UNIPEN小寫字母識別正確率可達89%。經(jīng)測試,通過使用隨機對角Levenberg?Marquardt方法,收斂速度比基本BP算法快了許多,經(jīng)過68代訓練后識別正確率可達89%。

4 結 語

本文提出了基于多重卷積神經(jīng)網(wǎng)絡的聯(lián)機手寫字符的識別方法,通過使用多個識別率高的卷積神經(jīng)網(wǎng)絡和隨機對角 Levenberg? Marquardt方法,可以適用于大模式聯(lián)機手寫識別。經(jīng)過實驗數(shù)據(jù)比較,該方法在大模式聯(lián)機手寫識別過程中具有很高的識別率,與此同時識別速度也很快,有很好的實時性,總體效果很好。在當今觸摸屏應用遍及生產(chǎn)生活的各個方面的趨勢下,該方法有著廣闊的應用前景。同時此方法為今后多手寫漢字識別的研究提供了很好的借鑒。

注:本文通訊作者為潘立武。

參考文獻

[1] 吳鳴銳,張鈸.一種用于大規(guī)模模式識別問題的神經(jīng)網(wǎng)絡算法[J].軟件學報,2001,12(6):851?855.

[2] 張輝.大規(guī)模聯(lián)機手寫漢字識別數(shù)據(jù)庫整理、統(tǒng)計與實驗分析[D].廣州:華南理工大學,2012.

[3] 徐姍姍,劉應安,徐,等.基于卷積神經(jīng)網(wǎng)絡的木材缺陷識別[J].山東大學學報:工學版,2013,43(2):23?28.

[4] 呂剛.基于卷積神經(jīng)網(wǎng)絡的多字體字符識別[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

關鍵詞:手寫數(shù)字識別;卷積神經(jīng)網(wǎng)絡;應用

手寫體數(shù)字識別在郵政、金融等領域應用廣泛。對于數(shù)字識別,人們往往要求識別器有很高的識別可靠性,數(shù)字識別的錯誤所帶來的影響比文字識別等其他識別所帶來的影響更大,特別是有關金融方面的數(shù)字識別錯誤所帶來的后果是無法想象的,識別錯一個數(shù)字,這其中的差距可能是幾的差距,也可能是幾十、幾百的差距,這些都還是小問題;但更有可能這一個數(shù)字代表的差距是幾萬、幾千萬甚至幾億乃至更多,那么這個錯誤造成的損失就無法估量了。因此,O計出有著高可靠性與高識別率的數(shù)字識別系統(tǒng)已經(jīng)成為了字符識別領域一個非常重要的環(huán)節(jié)。

1 網(wǎng)絡模型和數(shù)據(jù)庫及學習算法的選擇

1.1 關于Mnist數(shù)據(jù)庫的介紹

首先,Mnist是NIST數(shù)據(jù)庫的一個優(yōu)化子集。它是一個有著60000個訓練樣本集與10000個測試樣本集的手寫體數(shù)字數(shù)據(jù)庫。此數(shù)字庫一共有4個文件。

此數(shù)字庫的所有樣本集都有圖像文件以及標簽文件。標簽文件的作用是用來儲存樣本集中的每個樣本的數(shù)值標簽,而每一個樣本的圖像數(shù)據(jù)信息則是由圖像文件存儲著。此數(shù)據(jù)庫的圖像數(shù)據(jù)均保存在二進制文件之中,且每個樣本圖像的大小均為28*28。

1.2 數(shù)字識別的模型選擇

手寫體數(shù)字雖然只有0~9十個數(shù)字,但由于寫法因人而異,不同地域同樣一個數(shù)字有多種不同的寫法,每個人都有自己的書寫習慣。且一些紙質(zhì)差異、筆畫粗細、光線問題、位置、尺度大小等等多種因素都能對輸入產(chǎn)生影響。考慮到這些因素,為讓網(wǎng)絡有良好的識別能力,我們這里采用在圖像識別領域有著優(yōu)秀表現(xiàn)的卷積神經(jīng)網(wǎng)絡作為此數(shù)字識別系統(tǒng)的訓練模型。

1.3 學習算法的選擇

一個優(yōu)秀的網(wǎng)絡模型必須具備良好的學習算法,每個學習網(wǎng)絡都有著相對來說較為合適自己的學習算法,而并不是說越高端的算法就越好。在此文中,我選擇的學習算法是較為成熟的BP算法。此算法在文字前面有些許介紹,此處不再多做說明。

2 基于卷積神經(jīng)網(wǎng)絡的數(shù)字識別系統(tǒng)的設計

2.1 輸入層以及輸出層設定

根據(jù)樣本的特征與此網(wǎng)絡的網(wǎng)絡結構,可以大概判斷出輸入層與輸出層該如何設置。隱含層的個數(shù)可以是一個,也可以是多個,這與要分類的問題有關。

前文提及到在mnist數(shù)據(jù)庫中,所有的圖像都是28*28大小的,且以整個圖片的像素形式存儲在數(shù)據(jù)文件之中。每張圖像大小為28*28,故一個圖片像素點個數(shù)為784個。這里,卷積神經(jīng)網(wǎng)絡的輸入即為這784個像素點。

因為數(shù)字識別需要識別的是0~9這十個數(shù)字,即需要識別十種字符類別,所以將這個神經(jīng)網(wǎng)絡輸出層的神經(jīng)元節(jié)點數(shù)設置為10。

2.2 網(wǎng)絡的中間層設置

卷積神經(jīng)網(wǎng)絡的中間層有兩個部分,即卷積層(特征提取層)與下采樣層(特征映射層),由第二章中圖2-1所示,C1、C3為卷積層,S2、S4為降采樣層。

1)激活函數(shù)選擇

激活函數(shù)選擇sigmoid函數(shù)。同樣,在第二章有所提及。Sigmoid函數(shù)是嚴格遞增函數(shù),能較好的平衡線性與非線性之間的行為,比較貼近生物神經(jīng)元的工作。相比于其他函數(shù),sigmoid函數(shù)還存在著許多優(yōu)勢,比如光滑性、魯棒性以及它的導數(shù)可以用它自身來表示。

sigmoid函數(shù)為:

(1)

其中,x為神經(jīng)元凈輸入。

激活函數(shù)導數(shù)為:

(2)

2)卷積層設計

圖像經(jīng)過卷積核對特征圖進行卷積,之后再經(jīng)過sigmoid函數(shù)處理在卷積層得到特征映射圖。特征映射圖相比于原圖像,其特征更為明顯突出。

卷積運算其實就是一個加權求和的過程。離散卷積是本文所選取的方法,規(guī)定卷積核在水平和豎直兩個方向每次都是移動一個像素,即卷積的步長為1。

3)下采樣層的設計

根據(jù)圖像局部相關性這一原理,為了降低網(wǎng)絡的學習維度、減少需要處理的數(shù)據(jù)量且保留圖像的有用信息,可以對卷積后的圖像進行下采樣。這里,我們采取的是取卷積層4個像素點平均值為下采樣層的一個像素點的方法。這樣可以降低網(wǎng)絡規(guī)模。

2.3 網(wǎng)絡總體結構CNN-0

根據(jù)LeNet-5結構,再結合上文中的對輸入層、輸出層、中間層的設計,完成了如圖3-1所示的基本網(wǎng)絡結構:

相比于LeNet-5,CNN-0做了一些修改,并非完全按照LeNet-5網(wǎng)絡結構模型。Sigmoid函數(shù)是本網(wǎng)絡中的激活函數(shù),選擇這個函數(shù)的好處在于可以讓所有層得到的輸出都在區(qū)間[-1,1]之內(nèi)。網(wǎng)絡訓練的學習率固定值為1或者是衰減的學習速率。經(jīng)過卷積后的一維向量與輸出層沒有沿用LeNet-5的徑向基函數(shù)網(wǎng)絡,而是采取全連接方式,省去了F6層。

3.3 卷積神經(jīng)網(wǎng)絡訓練過程

在模式識別中,學習網(wǎng)絡有無指導學習網(wǎng)絡與有指導學習網(wǎng)絡兩個類別。無指導學習網(wǎng)絡一般是用來進行聚類分析,本文采取的是有指導學習網(wǎng)絡。

卷積神經(jīng)網(wǎng)絡其實就是從輸入到輸出的一種映射,它可以學量的映射關系,只需要用現(xiàn)有的模式對網(wǎng)絡進行訓練,網(wǎng)絡就能具備映射能力。而不需要輸入與輸出之間的精確的關系。

訓練算法與傳統(tǒng)的BP算法相差無幾(BP算法在第二章有做概述),主要可分為四個步驟,而這四個步驟可以歸為向前傳播階段與向后傳播階段:相前傳播:

1)隨機的從樣本集中獲取一個樣本(A, ),然后將A輸入至網(wǎng)絡中;

2)根據(jù)公式(3)計算出實際輸出:

(3)

向后傳播:

1)計算和理想輸出之間的差;

2)根據(jù)極小化誤差方法調(diào)整權值矩陣。

結語

在手寫數(shù)字識別這一塊,相對來說比較有難度的應該就是脫機自由手寫字符識別了,不過本文所研究的并不是這一系統(tǒng),本設計是一個基于卷積神經(jīng)網(wǎng)絡的手寫數(shù)字識別系統(tǒng),因卷積神經(jīng)網(wǎng)絡的局部感受野和降采樣以及權值共享、隱性特征提取等優(yōu)點,它在圖像識別領域得到了非常廣泛的應用。此程序是在Caffe這個框架上進行運行的,操作系統(tǒng)為Linux系統(tǒng)ubuntu14.04版本。Caffe是一個開源的深度學習框架,也可以說是一個編程框架或者模板框架,它提供一套編程機制。因此,本文所需要實際的卷積神經(jīng)網(wǎng)絡就可以根據(jù)這個框架來進行構建。

參考文獻:

[1]張偉,王克儉,秦臻.基于神經(jīng)網(wǎng)絡的數(shù)字識別的研究[J].微電子學與計算,2006年第23卷第8期.

篇3

關鍵詞:卷積神經(jīng)網(wǎng)絡;點擊率預測;搜索廣告

中圖分類號: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搜索技術的成熟,搜索廣告已經(jīng)成為互聯(lián)網(wǎng)行業(yè)的主要收入來源之一,其根據(jù)用戶輸入的查詢詞,在搜索的結果頁面呈現(xiàn)出相應的廣告信息。廣告媒介的收益通過每次點擊費用(CostPerClick,CPC)與廣告點擊率(Click-Through Rate,CTR)預測共同影響而得到,即CPC*CTR。由于用戶點擊廣告的概率隨著廣告位的排放順序呈遞減趨勢,因此對CTR進行準確高效的預測,并將CTR高的廣告投放在搜索結果頁面靠前的位置,不僅能增加廣告媒介的收益,還能提高用戶對搜索結果的滿意程度。

廣告點擊率預測是廣告算法中最核心的技術,近年來被學術界廣泛關注。部分學者使用基于推薦方法的模型來解決CTR預測問題?;魰则E等人[1]采用協(xié)同過濾算法,為頁面找到與其相似的其他鄰居頁面,實現(xiàn)CTR的預測,以此作為基礎進行廣告推薦,但當相似頁面的數(shù)量增加時,該方法的結果質(zhì)量會嚴重下滑。Kanagal等人[2]提出了一種聚焦矩陣分解模型,針對用戶對具體的產(chǎn)品的喜好以及相關產(chǎn)品的信息進行學習,解決因用戶-產(chǎn)品交互活動少而造成的數(shù)據(jù)稀疏問題。在文獻[2]的基礎上,Shan等人[3]提出了一種立方矩陣分解模型,通過對用戶、廣告和網(wǎng)頁三者之間關系的立方矩陣進行分解,利用擬合矩陣的值來預測CTR,雖然立方矩陣分解模型增加了一維交互關系,但所刻畫的交互關系仍然十分局限,不能在CTR預測中充分挖掘廣告所有特征之間的聯(lián)系。

作為典型的預測問題,很多研究中通過將CTR預測問題看作分類或者回歸問題來解決,其中最常見的是應用線性模型來預測CTR。Chapelle等人[4]使用動態(tài)貝葉斯網(wǎng)絡,通過對用戶產(chǎn)生的點擊過程建立模型,考慮級聯(lián)位置的信息模擬出特定位置與相近位置的相關性,以判斷該位置上的廣告是否滿足用戶搜索要求。Chakrabarti等人[5]利用點擊反饋的相關性,通過在網(wǎng)頁和廣告詞等特征上使用邏輯回歸模型提高廣告檢索和預測的效果。Wu等人[6]基于融合的思想,將不同線性模型的實驗效果相結合,來提高搜索廣告CTR預測的結果。真實的場景中CTR的預測并非簡單的線性問題,因此,一些學者開始使用非線性模型來解決CTR的預測。Dave等人[7]在搜索廣告點擊信息以及廣告商賬戶信息上提取語義特征,使用基于投票思想的梯度提升決策樹模型,提高了CTR預測的效果。Zhang等人[8]利用神經(jīng)網(wǎng)絡模型對影響搜索廣告點擊率的因素進行的探索,從特征因素方面提高CTR預測的結果,但是資源單一,數(shù)據(jù)交互的關系沒有獲得良好的利用。

本文對基于卷積神經(jīng)網(wǎng)絡(Convolution Neural Network,CNN)的CTR預測進行研究,通過卷積與亞采樣操作的結合,能更好地學習出數(shù)據(jù)特征之間的關系,不僅解決了線性模型無法模擬真實廣告數(shù)據(jù)場景的問題,也解決了淺層學習模型無法深入挖掘特征間相互關系的問題,并且較之于傳統(tǒng)的神經(jīng)網(wǎng)絡,CNN能更好地理解特征之間的關系。在真實的數(shù)據(jù)集上的實驗驗證了本文的方法能夠提高搜索廣告中CTR預測的AUC值。

1卷積神經(jīng)網(wǎng)絡模型

1.1 卷積神經(jīng)網(wǎng)絡基本模型

卷積神經(jīng)網(wǎng)絡作為人工神經(jīng)網(wǎng)絡之一,目前已成為深度學習領域中研究的熱點,權值共享以及局部窗口滑動的特點使之能更好地模擬出生物神經(jīng)網(wǎng)絡。卷積神經(jīng)網(wǎng)絡在結構上有兩個重要的組成部分:卷積層和亞采樣層。如圖1所示。

圖1 卷積層與亞采樣層結構

Fig.1 Convolution layer and sub-sampling layer structure

在卷積層中,原始特征通過卷積核進行卷積得到輸出的特征,使用不同的卷積核就可以得到一系列不同的輸出特征。對卷積層的計算,有如下公式:

(1)

這里, 是sigmoid 函數(shù), , ; 代表輸入特征上選定的窗口,即在卷積過程中當前卷積核在計算時所對應在輸入特征上的位置; 和 分別是第 層輸入特征和第 層輸出特征上相應的值; 是卷積核的權重值; 是特征的偏置,每一層對應一個。

卷積過程,一個卷積核通過滑動會重復作用在整個輸入特征上,構建出新的特征。同一個卷積核進行卷積時,共享相同的參數(shù),包括同樣的權重和偏置,這也使要學習的卷積神經(jīng)網(wǎng)絡參數(shù)數(shù)量大大降低了。而當我們使用不同的卷積核進行卷積時,可以得到相應的不同的輸出特征,這些輸出特征組合到一起,構成卷積層的輸出。

在亞采樣層,前一個卷積層的輸出將作為該層的輸入特征,首先設定大小的窗口,然后通過滑動,用窗口區(qū)域中最大(或平均)的特征值來表示該窗口中的特征值,最后組合這些特征值得到降維后的特征。亞采樣過程可表示如下:

(2)

這里,類似于卷積層, 和 分別是第 層輸入特征和第 層輸出特征上相應的值, 是特征的偏置; 表示取最大值 或者平均值 的函數(shù)。

典型的卷積神經(jīng)網(wǎng)絡通常由n(n>=1)個卷積層和亞采樣層以及最末尾的m(m>=1)全連接層組合而成。一個亞采樣層跟隨在一個卷積層后出現(xiàn),通過這若干卷積層和亞采樣層后得到的特征,將經(jīng)過全連接層與輸出層相連。全連接層公式如下:

(3)

這里, 是sigmoid函數(shù), 是計算第 層到第 層時的權重值。

1.2基于卷積神經(jīng)網(wǎng)絡的CTR預測模型

研究中使用卷積神經(jīng)網(wǎng)絡對搜索廣告的CTR進行預測,網(wǎng)絡結構如圖2所示。

圖2 卷積神經(jīng)網(wǎng)絡在搜索廣告點擊率預估中的應用

Fig.2 Convolution neural network in search ad click rate through prediction

實驗中一共設置了兩個卷積層、兩個亞采樣層以及一個全連接層。首先從歷史日志中提取相應的特征構建出輸入(Feature_Input),設置好卷積的窗口大小后根據(jù)公式(1)對輸入特征進行卷積,每一次卷積是對窗口內(nèi)所有值的組合,因此卷積過程相當于特征融合過程。對卷積后得到的特征,設置亞采樣的窗口并根據(jù)公式(2)進行最大值-采樣,選取出窗口中的最有表達能力的特征值(最大特征值)表示整個窗口的特征,因此亞采樣過程相當于特征的萃取過程。整個卷積和亞采樣過程的結合,模擬出了人對事物的理解和總結的過程。最后將特征經(jīng)過一層全連接后連接到輸出,得到最終的預測結果。

在一次特定的卷積(或亞采樣)全過程中即訓練的一次迭代過程中,權值并不會隨著窗口的滑動而改變,即在計算中,所有窗口滑過的特征享受同樣的權值。這也是CNN區(qū)別于其他神經(jīng)網(wǎng)絡的特點――權值共享。如此即使得CNN更方便訓練,更能多角度地對特征進行學習。

2特征構建

本文所采用的實驗數(shù)據(jù)集為KDD Cup 2012中Track 2提供的數(shù)據(jù)集。該數(shù)據(jù)由騰訊公司下的搜索品牌搜搜(SOSO)搜索引擎提供,因為涉及公司商業(yè)信息,數(shù)據(jù)經(jīng)過哈希處理。實驗數(shù)據(jù)集中,每條記錄包含12個屬性,各屬性詳解如表1所示。

研究按照實際含義將這12個屬性構造了四大類特征:歷史點擊率特征、相似度特征、位置特征和高影響力特征。

2.1基于卷積神經(jīng)網(wǎng)絡的CTR預測模型

歷史點擊率特征是不同類別ID在歷史數(shù)據(jù)中的點擊率,雖然比較簡單但十分有效,因為歷史點擊率在一定程度上代表了類別ID對某個廣告感興趣程度的高低,當一個ID對某個廣告的歷史點擊率高時,意味著其對這個廣告更感興趣,后續(xù)點擊的概率也更大。

歷史點擊率( )是點擊數(shù)( )與展示數(shù)( )之比,在統(tǒng)計計算過程發(fā)現(xiàn)有很多情況下有些類別信息沒有點擊實例,因此研究采用了平滑方法解決零值問題,根據(jù)公式(4)來計算平均點擊率。計算公式如下:

(4)

公式中的 和 是調(diào)節(jié)參數(shù),根據(jù)公式(4)計算出AdID,AdvertiserID,QueryID,KeywordID,TitleID,DescriptiomID,UserID的歷史點擊率。

2.2相似度特征

相似度特征用來刻畫屬性兩兩之間的相似程度,用戶搜索的內(nèi)容與被投放的廣告屬性相似度高時,廣告被點擊的概率更大。例如當搜索內(nèi)容Query與廣告關鍵字屬性Keyword相似度高時,意味著網(wǎng)頁投放的廣告與用戶期望搜索的廣告結果相似度高,更符合用戶點擊廣告的動作。

通過對Query、Keyword、Title、Description的屬性描述文件構造出相關的TF-IDF向量,Query為用戶搜索內(nèi)容,Keyword,Title,Description是廣告的相關屬性,數(shù)據(jù)集提供的屬性信息都是經(jīng)過哈希后的數(shù)字形式,但是屬性之間的相對含義不變,然后計算相互之間的余弦相似度作為特征。

2.3位置特征

該特征描述的是指定廣告在搜索結果頁面中的位置信息。用戶搜索時需求的多樣化要求在對廣告進行排序和投放時,在結果頁面靠前的位置中盡可能地投放滿足用戶需求的廣告,從而最大化用戶的滿意度、提高用戶點擊的興趣[9]。因此,研究即用當前預測廣告的相對位置Pos來刻畫該廣告在結果頁面中排序靠前的程度,其定義如下:

(5)

這里, 指頁面投放的廣告總數(shù), 指當前所預測廣告的位置。

2.4位置特征

在預測模型中,ID屬性信息通常采用one-hot形式的特征編碼方式,在將不同的屬性經(jīng)過one-hot編碼后的特征向量組合在一起,這樣方式簡單直觀,卻使得特征的維度巨大并且非常稀疏。然而在這龐大且稀疏的特征中,絕大部分維度上的特征值對整個模型的預測結果貢獻非常小甚至為零,只有少數(shù)維度上的特征值對預測結果有較高的影響力。因此研究采用L1范數(shù)正則化的方式,在邏輯回歸模型的代價函數(shù)中加入L1范數(shù)[10],使得模型學習得到的結果滿足稀疏化,在學習參數(shù)中按大小順序取出前N維權重較大的,將這N維權重對應位置上的特征值構建新的特征,稱為高影響力特征,考慮到實驗硬件,取N=180。

3 實驗結果與結論分析

3.1數(shù)據(jù)準備

實驗目標是通過給定的信息預測搜索網(wǎng)頁的廣告點擊率,由于數(shù)據(jù)量過大并且正負樣本不平衡,實驗中從訓練集隨機采樣10%作為本文實驗中模型訓練的訓練集,既縮小了樣本空間,同時隨機采樣也保持了原始數(shù)據(jù)的分布信息。實驗中隨機抽取部分樣本作為驗證集用于參數(shù)的調(diào)節(jié)。本文所用測試集為 KDD Cup 2012中track 2的全部測試數(shù)據(jù),因此本文的結果與KDD Cup 2012中track 2比賽的結果具有可比性。數(shù)據(jù)的統(tǒng)計信息如表2所示。

這里, 、 分別表示結果中預測對的正樣本數(shù)和負樣本數(shù), 、 分別表示結果中預測錯的正樣本數(shù)和負樣本數(shù)。對于廣告點擊率預測問題,較大的AUC值代表了較好的性能。

3.2實驗設置和結果分析

實驗的操作系統(tǒng)為Ubuntu 12.04 LTS OS,卷積神經(jīng)網(wǎng)絡在4G RAM 的NVIDIA GeForce GT 610 GPU條件下運行。過程中選用了Dense Gaussian對卷積層、亞采樣層的邊和節(jié)點進行初始化,用常數(shù)初始化輸出層,學習卷積神經(jīng)網(wǎng)絡各邊權值時的優(yōu)化函數(shù)使用梯度下降算法,其中學習率為0.01、動量項為0.9,訓練步數(shù)為100,設置公式(4)中參數(shù)α=0.05,β=75。實驗時使用邏輯回歸模型(LR)、支持向量回歸模型(SVR)和深度神經(jīng)網(wǎng)絡(DNN)作為對比方法,所有方法都使用相同的特征,其中DNN的層數(shù)以及每層的節(jié)點數(shù)與卷積神經(jīng)網(wǎng)絡相同。

具體地,首先探究了卷積神經(jīng)網(wǎng)絡中節(jié)點的設置,因為在CNN中后續(xù)層的節(jié)點數(shù)根據(jù)第一個卷積層和每層卷積(或亞采樣)滑動窗口的大小計算得到,并以第一個卷積層節(jié)點的設置為實驗變量,同時控制DNN中每層的節(jié)點數(shù)均與CNN相同,在驗證集上的實驗結果如圖3所示。

從圖3可以看出,隨著節(jié)點的增加,AUC的值也在不斷增長,在一定范圍內(nèi),節(jié)點數(shù)越多,實驗的結果越好。但隨著節(jié)點數(shù)的增大,模型的訓練時間也在延長,對設備的開銷需求也在升高,綜合上述因素,最終將第一層的節(jié)點數(shù)設為9 216。

CNN與各對比實驗的實驗結果如表3所示,可以看出CNN的效果最佳,此外在表中還列出了KDD Cup 2012 track 2比賽中第一名的結果。DNN的AUC值優(yōu)于LR和SVR,驗證了深度學習模型比淺層學習模型更適合解決CTR預估問題,同時CNN的結果高于DNN,說明CNN中卷積層的特征融合和亞采樣層的特征萃取過程是有效的。本文中CNN目前的實驗結果略低于KDD Cup 2012 track 2中第一名的結果,原因是比賽隊伍使用了多模型融合并提取了龐大的(千萬維)輸入特征。

進一步地,實驗探索了每一類特征對搜索廣告點擊率預測的貢獻。在所有特征的情況下,去掉某一類特征來進行預測,實驗結果如表4所示。實驗結果表明,去掉任意一類特征都將使得實驗效果有所下降。其中去掉歷史點擊率特征效果下降得最明顯,說明用戶是否點擊廣告,與其之前的點擊行為非常相關。而去掉位置特征時,效果下降得最為不明顯,因為在實驗使用的數(shù)據(jù)集中,每個頁面最多僅呈現(xiàn)三個廣告,頁面中的廣告數(shù)少時,位置對用戶點擊的影響小。

4 結束語

對搜索廣告點擊率的有效預測不但能夠更好的提高在線廣告投放的性能,增加廣告商的收益,還能增強用戶的體驗。研究使用卷積神經(jīng)網(wǎng)絡CNN對搜索廣告點擊率進行預測,對特征因素的分析之后,在真實數(shù)據(jù)的環(huán)境下對搜索廣告點擊率進行預測的實驗本文的方法的效果相對于其他方法有明顯的提高。本文的主要貢獻有:(1)本文提出了基于卷積神經(jīng)網(wǎng)絡的搜索廣告點擊率預測的方法。(2)針對高維特征,提出了一種特征選擇策略,可以在計算能力受限的情況下使用CNN模型來解決廣告點擊預測問題,并取得較好效果。在未來的工作中,一方面要繼續(xù)研究更有效的特征來提高對點擊率的預測效果,另一方面也將嘗試對CNN模型的內(nèi)部細節(jié)進行改進,使之更適合我們的預測場景。

參考文獻:

[1] 霍曉駿,賀牛楊燕. 一種無位置偏見的廣告協(xié)同推薦算法[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] 林古立.互聯(lián)網(wǎng)信息檢索中的多樣化排序研究及應用[D].華南理工大學,2011.

篇4

關鍵詞:無人機;STM32;道路檢測;神經(jīng)網(wǎng)絡;模型訓練

傳統(tǒng)的道路巡檢和保養(yǎng)主要由人工來完成,需要投入大量的人力物力來保證道路的相對安全,這種方式存在著低效率、高成本且難以保證道路的決定安全[1]。固定式交通檢測設備大量設置在道路的主干路上,也存在著一些缺陷:(1)監(jiān)控攝像頭不能做到全覆蓋且具有一定的探測盲區(qū)。(2)監(jiān)控系統(tǒng)采用多屏幕方式,工作人員進行道路故障判斷時受限。(3)不能靈活的通知有關部門對事故的快速應急處理。為了克服上述的缺點,本文設計了一種基于卷積神經(jīng)網(wǎng)絡的無人機道路巡檢系統(tǒng),對發(fā)生故障和需要保養(yǎng)的道路能快速響應,及時的通知有關部門,避免事故的發(fā)生。

1系統(tǒng)的總體設計

在無人機道路巡檢系統(tǒng)中,我們主要考慮了以下幾個要求[3]:(1)無人機系統(tǒng)能滿足正常的工作;(2)無人機系統(tǒng)能適應各種天氣和氣候變化等;(3)無人機系統(tǒng)應充分考慮控制的安全性;(4)視頻流的傳輸應避免較長的延時。無人機道路巡檢系統(tǒng)主要由無人機系統(tǒng)設計、遠程控制系統(tǒng)、PC端系統(tǒng)三大部分組成,系統(tǒng)的總體結構框圖如圖1所示。系統(tǒng)的具體工作原理為:無人機將道路環(huán)境檢測的結果,將處理后的視頻流通過遠程傳輸?shù)姆绞剑l(fā)送到PC端進行實時監(jiān)控道路狀況。遠程控制系統(tǒng)以STM32作為主控芯片,主要包括在無人機端和遙控端兩個部分,遙控端將控制指令通過2.4G通信發(fā)送到無人機端,此時無人機的做出相應的位姿變化,完成遙控端對無人機位姿的控制。無人機系統(tǒng)的圖像采集模塊芯片為樹莓派,完成圖像的采集并采用TCP通信實現(xiàn)遠程視頻的傳輸,將獲取的視頻流傳輸?shù)絇C端。PC端上使用OpenCV對圖像進行處理[4],利用深度學習模塊對設計的神經(jīng)網(wǎng)絡進行數(shù)據(jù)訓練,從而得到檢測模型,最后在PC上接收處理過的數(shù)據(jù)并實時監(jiān)測道路狀況。上述工作原理可實現(xiàn)無人機道路巡檢系統(tǒng),下文將對其包括的三大模塊進行說明介紹。

2無人機系統(tǒng)設計

本次使用的是RaspberryPi3(modelB+)作為無人機的主控制板[7],無人機的飛行控制算法和圖像采集模塊集成在樹莓派中。遠程控制系統(tǒng)通過2.4G無線通信模塊連接,通過控制器實現(xiàn)對無人機飛行和圖像采集的控制。無人機系統(tǒng)總體結構如圖2所示。

3PC端系統(tǒng)設計

在PC端系統(tǒng)設計主要分為圖像預處理、模型訓練和視頻監(jiān)控三大部分,通過TCP通信協(xié)議進行通信,TCP通信是一種面向連接的通信,可完成客戶端(樹莓派)和服務端(PC)的信息傳遞[9]。下面主要對前兩部分詳細介紹。

3.1圖像預處理

本系統(tǒng)對地面裂縫檢測的圖像預處理流程如圖3所示具體工作原理為:(1)采用加權平均灰度化對獲取的無人機影像進行灰度化處理;(2)對灰度化處理后的影像進行直方圖均衡化,使得影像具有高對比度和多元的灰度色調(diào)變化,為后續(xù)的濾波降噪奠定基礎;(3)對處理后的影像進行濾波降噪,消除孤立的噪聲點,采用方法的是中值濾波降噪;(4)使用迭代二值化處理將影像的灰度值設置合適的閾值,使得圖像更簡單,目標更突出,然后對圖像進行分割,計算迭代的閾值,判斷迭代的閾值是否收斂到某一值或者達到限定的迭代次數(shù),如果是的話,將完成二值化處理和濾波,否則將初始二值化閾值;(5)最終完成道路故障的識別與標記。

3.2模型檢測

3.2.1卷積神經(jīng)網(wǎng)絡原理使用卷積神經(jīng)網(wǎng)絡進行模型訓練,首先使用卷積層實現(xiàn)特征的提取,原理如圖4所示。如圖5所示,卷積操作是模仿神經(jīng)元的機制。不同的輸入在權重的影響下會有不同的輸出,根據(jù)損失函數(shù)的計算來不斷的更新權重,直到獲得合理的權重參數(shù)。初始傳遞的信號為x,中間通過權重w,再經(jīng)過偏置b后連接在末端,最后輸出信號變成wx+b。fun(?)表示激活函數(shù),最終f(z為輸出的結果,如式(1)所示。3.2.2卷積神經(jīng)網(wǎng)絡訓練流程通過相機采集到的缺陷和問題圖像作為訓練樣本,這部分是檢測道路安全的關鍵一步,(1)訓練標記數(shù)據(jù):首先使用圖像預處理中標記好的道路故障提取出來,通過卷積神經(jīng)網(wǎng)絡對標記框內(nèi)的目標數(shù)據(jù)進行訓練;(2)提取特征數(shù)據(jù):將道路故障的類型統(tǒng)計并歸納;(3)誤差反饋學習:對測試樣本進行誤差反饋學習,并進行測試;(4)優(yōu)化訓練數(shù)據(jù):根據(jù)實際應用場景增加圖像的種類和數(shù)量,不斷訓練模型。3.2.3故障的基本分類道路故障主要路面缺陷(例如裂縫、殘缺等)和路面增加(例如長時間靜止的車輛和路人),各自訓練集數(shù)量為1000張。如表1所示。3.2.4實驗測試為實現(xiàn)故障的檢測,測試數(shù)據(jù)集為100張,不同類型故障數(shù)據(jù)50張,均采集自新道路且與訓練樣本一致,實驗結果如表2所示。由表2可知,檢測路面增加(例如長時間靜止的車輛和路人)的準確率高達96%,但是地面缺陷的準確率相比較而言略低,可能造成的原因是:①硬件原因?qū)е虏杉膱D像清晰度比較低;②地面缺陷太小,無人機難以識別;③訓練的數(shù)據(jù)集較少,特征學習誤差大;但是滿足了設計需求,還需進一步改進。

4總結與展望

篇5

關鍵詞:物聯(lián)網(wǎng);人臉識別;視頻網(wǎng)絡

1物聯(lián)網(wǎng)及人臉識別視頻網(wǎng)絡技術的發(fā)展

1.1物聯(lián)網(wǎng)視頻網(wǎng)絡技術的發(fā)展狀況

最近幾年,隨著物聯(lián)網(wǎng)技術、圖像處理技術以及數(shù)據(jù)傳輸技術的快速發(fā)展,視頻網(wǎng)絡技術應運而生并取得了長足的發(fā)展。當前,視頻網(wǎng)絡系統(tǒng)作為一種模擬數(shù)字控制系統(tǒng),其具有非常成熟和穩(wěn)定的性能,已廣泛應用于實際工程中。雖然數(shù)字系統(tǒng)發(fā)展迅速,但尚未完全形成相應的體系,因此,混合數(shù)字和模擬應用程序逐漸遷移到數(shù)字系統(tǒng)將成為未來發(fā)展的主要趨勢之一。當前,國內(nèi)外市場上主流的產(chǎn)品主要有兩種,即模擬視頻數(shù)字網(wǎng)絡系統(tǒng)、數(shù)字視頻網(wǎng)絡系統(tǒng)。前者技術先進,性能穩(wěn)定,被廣泛應用于實際工程應用中,特別是大中型視頻網(wǎng)絡項目。后者作為一種新興技術,是一種通過以計算機技術和視頻壓縮為核心的新型視頻網(wǎng)絡系統(tǒng),其有效的避免了模擬系統(tǒng)所存在的一些弊端,但未來仍需要進行不斷的改進和發(fā)展。外部集成、視頻數(shù)字化、視頻網(wǎng)絡連接、系統(tǒng)集成是未來視頻網(wǎng)絡系統(tǒng)發(fā)展的重要研究方向。數(shù)字化是網(wǎng)絡的前提,而網(wǎng)絡是系統(tǒng)集成的基礎。因此,視頻網(wǎng)絡領域的兩個最大發(fā)展特征是:數(shù)字化和網(wǎng)絡化。

1.2人臉識別視頻網(wǎng)絡的發(fā)展狀況

人臉識別技術作為模式識別領域中的一項前沿課題,截止目前,已有三十多年的研究歷史。人臉識別目前是模式識別和人工智能的研究熱點,目前主要采用AdaBoost分類器進行人臉區(qū)域的檢測,人臉識別研究的內(nèi)容大致分為以下內(nèi)容:(1)人臉檢測:其指的是在不同場景下的人臉檢測及其位置。人臉檢測是通過在整個輸入的圖像中找到一個合適的人臉區(qū)域為目的,并將該圖像分為人臉區(qū)域和非人臉區(qū)域兩部分。在實際的某些理想情況下,由于可以人為手動控制拍攝環(huán)境,因此,可以輕松確定人臉的位置;但是在大多數(shù)情況下,由于場景更加復雜,因此,人臉的位置是未知的。因而在實際的人臉識別視頻網(wǎng)絡過程中,首先必須確定識別場景中是否有人臉的存在,如果存在人臉,再進一步確定圖像中人臉的具體區(qū)域。(2)人臉識別:將系統(tǒng)檢測到的人臉特征信息與系統(tǒng)數(shù)據(jù)庫中存在的已知人臉信息進行充分識別與匹配,以此獲取相關信息,該過程的本質(zhì)是選擇正確的人臉模型和匹配策略。在實際生活的應用當中,由于成人的面部模型處于不斷變化當中,且容易受到時間、光線、相機角度等方面的差異,因而很難用一張圖紙表達同一個人的面部圖像,這使得提取特征變得困難,由于大量的原始灰度圖像數(shù)據(jù),神經(jīng)元的數(shù)量通常很大并且訓練時間很長。除此之外,完全依賴于神經(jīng)網(wǎng)絡的識別方法具有當前計算機系統(tǒng)固有的局限性,盡管神經(jīng)網(wǎng)絡具有很強的感應能力,但是隨著樣本數(shù)量的增加,其性能可能會大大降低。簡而言之,由于年齡,表情,傾斜度和其他表征對象的因素的多樣性,很難進行人臉識別,因此,識別該對象的效果仍遠未達到現(xiàn)實。目前,普遍采用AdaBoost算法來對出現(xiàn)在視頻中的人臉區(qū)域進行檢測,以此達到實時獲取人臉圖像的目的,AdaBoost算法的原理是通過訓練得到多個不同的弱分類器并將這些弱分類器通過疊加、級聯(lián)得到強分類器,AdaBoost算法流程如圖1所示。(3)表情分析:即對面部表情信息(幸福,悲傷,恐懼,驚奇等)進行分析和分類。當前,由于問題的復雜性,正在對面部表情的分析進行研究,它仍處于起步階段。心理學表明,至少有六種與不同面部表情相關的情緒:幸福,悲傷,驚奇,恐懼,憤怒和惡心。即與沒有表情的面部特征相比,這六個表情的面部特征具有相對獨特的運動規(guī)則。(4)生理分類:分析已知面孔的生理特征,并獲得相關信息,例如種族、年齡、性別和職業(yè)。顯然,此過程需要大量知識,通常非常困難和復雜。

2物聯(lián)網(wǎng)卷積神經(jīng)網(wǎng)絡人臉識別方法分析

卷積神經(jīng)網(wǎng)絡是專門設計用于識別二維形狀的多層感知器。通常,可以使用梯度下降和反向傳播算法來訓練網(wǎng)絡。從結構上講,卷積神經(jīng)網(wǎng)絡包含三個概念:局部感受野、權重共享和下采樣,使其在平移,縮放,傾斜或其他形式的變形中相當穩(wěn)定。當前,卷積神經(jīng)網(wǎng)絡被廣泛用于模式識別,圖像處理和其他領域。卷積神經(jīng)網(wǎng)絡(CNN)用于提取目標人臉圖像的特征。訓練網(wǎng)絡后,將先前測試的模型用作面部分類器,微調(diào)可以縮短網(wǎng)絡模型的訓練時間。卷積神經(jīng)網(wǎng)絡的基本體系結構是輸入層,卷積層(conv),歸約層(字符串),完全連接層和輸出層(分類器)。通常有多個卷積層+速記層,此程序?qū)崿F(xiàn)的CNN模型是LeNet5,并且有兩個“卷積+下采樣層”LeNetConvPoolLayer。完全連接的層等效于MLP(多層感知器)中的HiddenLayer。輸出層是一個分類器,通常使用softmax回歸(有些人稱為直接邏輯回歸,它實際上是多類邏輯回歸)。LogisticRegression也直接提供了該軟件。人臉圖像在視頻監(jiān)控中實時發(fā)送到計算機,并且面部區(qū)域部分由AdaBoost算法確定。在預處理之后,將臉部圖像注入到新訓練的預訓練模型中進行識別。該過程如圖2所示。

3物聯(lián)網(wǎng)人臉識別視頻網(wǎng)絡多目標算法優(yōu)化

多目標優(yōu)化問題的實質(zhì)是協(xié)調(diào)并在各個子目標之間達成折衷,以便使不同的子目標功能盡可能地最佳。工程優(yōu)化的大多數(shù)實際問題都是多用途優(yōu)化問題,目標通常相互沖突。長期以來,多目標優(yōu)化一直受到人們的廣泛關注,現(xiàn)在已經(jīng)開發(fā)出更多的方法來解決多目標優(yōu)化問題。如果多標準優(yōu)化沒有最差的解決方案,那么通常會有無限多的解決方案,這并不是最差的解決方案。解決面部強調(diào)時,人們不能直接應用許多次等解決方案。作為最后的決定,我們只能選擇質(zhì)量不是最低,最能滿足我們要求的解決方案。找到最終解決方案的方法主要有三種。因此,只有通過找到大量有缺陷的解決方案以形成有缺陷的解決方案的子集,然后根據(jù)我們的意圖找到最終的解決方案。基于此,多目標算法是通過將多準則問題轉變?yōu)橐粋€關鍵問題,這種方法也可以視為輔助手段。這種方法的棘手部分是如何獲取實際體重信息,至于面部特征,我們將建議一種基于權重的多功能優(yōu)化算法,該算法可以更好地反映臉部的特征。我們將人臉的每個特征都視為多個目標,并且在提取面部特征時,面部特征會受到外界的強烈影響,例如位置,光照條件和強度的變化,并且所有部位和每個部位都會受到影響。因此,我們可以使用加權方法從每個受影響的分數(shù)中提取不同的權重。通過開展試驗測試,結果表明,在有多目標優(yōu)化的算法的作用下,比在沒有多目標優(yōu)化的算法作用下人臉識別效果有所提高,大約提高了5—10個百分點。

4結論

鑒于多準則優(yōu)化算法在科學研究的各個領域中的廣泛使用,本文提出了一種多準則優(yōu)化算法來對復雜的多準則人臉圖像上的各種面部特征進行特征提取的多準則優(yōu)化,以達到提高人臉識別率的目標、提高整個人臉識別視頻網(wǎng)絡系統(tǒng)的性能。

參考文獻

[1]江斌,桂冠.基于物聯(lián)網(wǎng)的人臉識別視頻網(wǎng)絡的優(yōu)化方法研究[C]//物聯(lián)網(wǎng)與無線通信-2018年全國物聯(lián)網(wǎng)技術與應用大會論文集.2018.

[2]余雷.基于物聯(lián)網(wǎng)的遠程視頻監(jiān)控優(yōu)化方法研究[J].科技通報,2014(6).

[3]張勇.遠程視頻監(jiān)控系統(tǒng)的傳輸技術的實現(xiàn)[D].電子科技大學,2011(9)

篇6

在AlphaGo贏得第一局的比賽時,就激起了人們熱烈的討論,因為很多從事人工智能研究的“技術派”也對電腦圍棋程序戰(zhàn)勝人類棋手沒有足夠的信心。但第一局的結果仍然讓人震驚,因為在五個月前,AlphaGo的棋力水平也只是達到戰(zhàn)勝職業(yè)二段棋手的程度,人們吃驚的是它的棋藝水平提高的速度。

與20年前深藍在國際象棋人機大戰(zhàn)中戰(zhàn)勝世界冠軍卡斯帕羅夫不同,AlphaGo并非僅僅依賴強悍的計算能力和龐大的棋譜數(shù)據(jù)庫取勝,而是具有深度學習的能力,能在實戰(zhàn)和練習中不斷學習和積累經(jīng)驗,這已經(jīng)非常類似于人類棋手的成長過程了,不過它成長的速度非常之快。

普通大眾會認為,機器人獲勝是因為它內(nèi)部存儲有極為豐富的棋譜,以及很多一流棋手的經(jīng)驗,再配合它強大的邏輯判斷能力,是一群人對一個人的戰(zhàn)斗,是機器計算對人腦計算的碾軋,結果是必然的。這樣的歸納未免有些草率和簡單,完全無視機器學習在程序中的作用。

機器學習(Machine Learning,ML)是一種讓計算機在事先沒有明確的程序的情況下做出正確反應的能力,是計算機模擬或?qū)崿F(xiàn)人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身性能的一種方法,是人工智能的核心,也是使計算機具有智能的根本途徑。但是它仍然主要是使用歸納、綜合而不是演繹的方式來進行學習。

早在1959年,塞繆爾的下棋程序就具有了學習能力,能在不斷對弈中改善自己的棋藝。這個程序已經(jīng)涉及到了關于學習的令人頭疼的哲學問題,此后就有各種各樣的棋類程序誕生,演繹出一個又一個電腦程序戰(zhàn)勝人類棋手的傳說,不斷刷新博弈難度的記錄。

而圍棋,因為棋盤的復雜性(大約10的172次方種狀態(tài),是計算機不可能窮盡的天文數(shù)字),則被看作是“人類智力的最后防線”,是僅存的人類能夠擊敗電腦的完全信息博弈游戲。AlphaGo的獲勝,宣告了機器學習的重大突破。

AlphaGo是一套為圍棋優(yōu)化的深度學習引擎,它使用了神經(jīng)網(wǎng)絡和蒙特卡羅算法,可以讓機器充分學習,并能在不斷自我對決中提升水平。

深度學習(Deep Learning)的概念在10年前就已提出,又叫深層神經(jīng)網(wǎng)絡(Deep Neural Networks),是機器學習研究中的一個新領域,通過建立模擬人腦進行分析學習的神經(jīng)網(wǎng)絡,模仿人腦機制來解釋數(shù)據(jù)。深度學習提出了一種讓計算機自動學習出模式特征的方法,有深度置信網(wǎng)絡、卷積神經(jīng)網(wǎng)絡等不同的機器學習模型,但都需要大量的并行計算。非監(jiān)督貪心逐層訓練算法可以解決深層結構相關的優(yōu)化難題,卷積神經(jīng)網(wǎng)絡可以利用空間相對關系減少參數(shù)數(shù)目以提高訓練性能,這些特點正適合用于復雜的博弈程序。

但是,在具有不確定性的對決中,即使深度學習也發(fā)揮不了作用,無法幫助程序來確定對手的狀態(tài)。

篇7

關鍵詞:BP神經(jīng)網(wǎng)絡;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

在軍事電子對抗等多方面的重要應用,通信信號調(diào)制的自動識別分類問題也相繼發(fā)展起來。無線電信號調(diào)制實識別就是要判斷截獲信號的調(diào)制種類。為此,需要事先對其特征進行選定,并確定它們與相應調(diào)制種類相聯(lián)系的取值范圍,然后再對信號進行特征測量,并根據(jù)測量結果對信號的調(diào)制進行分類判決。

如果把無線電信號的調(diào)制識別與分類視為一種模式識別問題,那末,從模式識別理論來看,模式分類是模式識別的一個子系統(tǒng)。因此,在模式識別理論框架下,無線電信號的調(diào)制識別是一個總體概念。而調(diào)制分類則只是調(diào)制識別的一個分支[1]。

1 基于決策理論的模擬調(diào)制方式識別方法

此算法主要實現(xiàn)區(qū)分AM、FM、DSB、LSB、USB、VSB、AM-FM等七種調(diào)制樣式,所分析的對象序列s(n)是由接收機中頻輸出并經(jīng)過采樣得到的,這樣s(n)的采樣頻率和載頻都已知,分別記做Fs和Fc。算法分兩個步驟:

第一步,根據(jù)信號的包絡特征將AM、USB、LSB與FM區(qū)分開,因為前三種信號的包絡不為恒定值,而FM的包絡理論上是恒定值(實際中接近恒定)。因而可以從中提取一個特征參數(shù)R。參數(shù)R反映了零中心歸一化包絡的功率譜特征,FM的零中心歸一化包絡接近零,因其參數(shù)R應遠遠小于前三種信號。實際中若R

第二步,根據(jù)信號頻譜的對稱性,將AM與USB與LSB區(qū)分開,因為AM的單邊頻譜關于載頻是近似對稱的,USB和LSB的單邊頻譜對于載頻來說分別只有上邊頻和下邊頻。因而可以從中提取另一個特征參數(shù) 。理論上,由于AM的上下邊頻對稱,所以AM的P接近零,而LSB和USB的P分別接近1和-1。實際中若|P|< 0.5,判為AM信號,若P>0.5,判為LSB,P

第三步,零中心非弱信號段瞬時相位非線性分量絕對值的標準偏差:σap 。

σap由下式定義:

(1)

式中,at是判斷弱信號段的一個幅度判決門限電平,c是在全部取樣數(shù)據(jù)Ns中屬于非弱信號值的個數(shù),?準NL(i)是經(jīng)零中心化處理后瞬時相位的非線性分量,在載波完全同步時,有:?準NL(i)= φ(i)-φ0

式中:,φ(i)為瞬時相位。用σap來區(qū)分是DSB信號還是AM-FM信號。

第四步,零中心非弱信號段瞬時相位非線性分量的標準偏差:σdp。

σdp由下式定義:

(2)

σdp主要用來區(qū)別不含直接相位信息的AM、VSB信號類和含直接相位信息的DSB、LSB、USB、AM-FM信號類,其判決門限設為t(σdp) 。

2 決策論方法的改進

前面介紹的基于決策理論的模擬調(diào)制方式識別方法存在缺陷針對上述問題,人們又提出了基于神經(jīng)網(wǎng)絡(NN)的識別方法。

2.1 BP網(wǎng)絡作為分類器的模擬調(diào)制方式識別方法

該算法用基于有監(jiān)督訓練的神經(jīng)網(wǎng)絡模型BP網(wǎng)絡作為分類器,用BP模型多層感知網(wǎng)絡與反向傳播學習算法相結合,通過不斷比較網(wǎng)絡的實際輸出與指定期望輸出間的差異來不斷的調(diào)整權值,直到全局(或局部)輸出差異極小值,不難想象該神經(jīng)網(wǎng)絡對模型細節(jié)中的諸多問題均有良好效果。

基于NN的模擬信號調(diào)制識別框圖[2]如圖1所示,該NN采用三層結構即,1個輸入層,1個輸出層,1個中間層。中間層可采用多層。但由于受到計算復雜性的限制,目前采用單層或雙層中間層的NN比較多見。本圖中間層采用單層25個節(jié)點,輸入層和輸出層的節(jié)點數(shù)取決于信號特征參數(shù)的個數(shù)和信號的分類數(shù),因而分別為4和7。

神經(jīng)網(wǎng)絡具有信息分布式存儲、大規(guī)模自適應并行處理和高度容錯特性,適用于模式識別的基礎。其學習能力和容錯特性對不確定性模式識別具有獨到之處[3]。通信信號在傳播過程中受到信道噪聲的污染,接受到的信號是時變的、非穩(wěn)定的,而小波變換特別適用于非穩(wěn)定信號的分析,其作為一種信息提取的工具已得到較廣泛的應用。小波變換具有時頻局部性和變焦特性,而神經(jīng)網(wǎng)絡具有自學習、自適應、魯棒性、容錯性和推廣能力,兩者優(yōu)勢的結合可以得到良好的信號模式自動識別特性,從而形成各種處理方法。

2.2 基于小波的特征提取和識別方法

小波特別適用于非穩(wěn)定信號的分析,作為一種特征提取的工具已得到較為廣泛的應用。小波的重要特點是它能夠提供一個信號局部化的頻域信息。小波變換能夠?qū)⒏鞣N交織在一起的不同頻率組成的混合信號分解成不同頻率的塊信號,它對不同的時間和頻率有不同的解釋,因此,對調(diào)制信號進行小波分解,得到不同水平下的細節(jié)信息,這些信息對于不同類別的調(diào)制信號來說是有差別的[4]。

在實際應用中,小波變換常用的定義有下列兩種:

(3)

(4)

式中,星號*表示共軛。式(3)表示小波變換是輸入信號想x(t)和小波函數(shù)φα, τ(t)的相關積分;式(4)用卷積代替了相關積分。兩種定義在本質(zhì)上是一致的。本為采用后者。

將式(4)中的τ和t離散化,即令τ=kTs,及t=iTs,得連續(xù)小波變換公式(4)的離散形式,又稱小波系數(shù):

(5)

Morlet小波是一種單頻復正弦調(diào)制高斯波,也是最常用的復值小波。其實、頻兩域都具有很好的局部性,它的時域形式如下:

(6)

雖然信號特征有很多種,神經(jīng)網(wǎng)絡在進行信號識別時,主要是依據(jù)譜峰位置的不同,因此提取信號特征主要任務就是尋找信號類別與譜峰位置間的必然聯(lián)系。而小波變換在這里則相當于一個數(shù)學顯微鏡,通過它,可以詳細了解各類信號在不同低頻段上的頻譜構成。

整個系統(tǒng)在PC機上進行仿真,采用Windows2000操作系統(tǒng)和Matlab6.1和Cool Edit2.0進行聲音錄制。

在仿真中,采用44K的采樣率,錄制了一段歌聲和一段笑聲,用Matlab生成22K的正弦載波,并根據(jù)第二章的各調(diào)制樣式的定義,生成了各個仿真的調(diào)制波形。并轉化成.wav文件錄在電腦中。

3 結束語

本文僅限于理論理論研究,用MatLab仿真實現(xiàn),沒有用DSP芯片等物理電路實現(xiàn),僅為實際實現(xiàn)提供理論指導。

參考文獻:

[1] 羅利春.無線電偵察信號分析與處理[M].北京:國防工業(yè)出版社,2003.

[2] 楊小牛,樓才義,徐建良.軟件無線電原理與應用[M].北京:電子工業(yè)出版社,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

針對駕駛員未系安全帶的這種危險駕駛行為,以及為了響應公安部門的需求,目前出現(xiàn)了很多種安全帶檢測方法?,F(xiàn)有的安全帶檢測方法大多是基于邊緣檢測[1-2]和Hough變換[3]的方法進行安全帶檢測。Guo等人[4]提出了安全帶檢測系統(tǒng),包括安全帶檢測和駕駛員區(qū)域定位兩個模塊。該算法利用線性濾波器在HSV顏色空間[5]通過水平方向和垂直方向投影來確定車牌的位置,然后利用邊緣檢測算子(Sobel[6],Canny[7]等)通過邊緣檢測得到車窗的上下邊緣,再通過幾何關系確定駕駛員區(qū)域的位置。該方法容易受到車身顏色影響,穩(wěn)定性較差。

為了解決安全帶檢測過程中的光照、車型、駕駛員著裝等因素對檢測結果的影響,本文提出了一種基于卷積神經(jīng)網(wǎng)絡(CNN[8])的安全帶檢測系統(tǒng)。當采集到圖片后,首先粗定位車輛區(qū)域,并根據(jù)檢測算法得到車窗區(qū)域粗定位模塊,找到圖像上若干個車窗候選區(qū)域,最后通過安全帶檢測模型及支持向量機(SVM)分類器[9]處理得到安全帶檢測結果。

1 基于深度學習的安全帶檢測

1.1 CNN特征提取算法

深度學習[11-12]是通過大量的簡單神經(jīng)元組成,根據(jù)非線性關系將底層特征抽象表示為高層特征。卷積神經(jīng)網(wǎng)絡[13]是一個多層的神經(jīng)網(wǎng)絡,每層由多個二維平面組成,而每個平面包括多個獨立神經(jīng)元。網(wǎng)絡中由一些簡單元和復雜元組成,分別記為S-元和C-元。

1.2 檢測模型的構建

如圖1所示,我們構建了由三個CNNs組成的多尺度的特征提取模型。每個CNN模型共有八層,其中有五個卷積層和三個全連接層。對于每一張圖片,都會自動的提取三個嵌套的越來越小的矩形窗口的特征,分別為車輛區(qū)域、車窗區(qū)域以及安全帶區(qū)域。這三個由CNNs提取的特征送到兩個全連接層,第二個全連接層的輸出被送到輸出層,最后用線性支持向量機分類器對所有子塊進行分類。

2 實驗結果

2.1 車輛及車窗檢測

本實驗訓練集包括戴安全帶和未戴安全帶各2000張的車輛圖像,測試集包括戴安全帶和未戴安全帶各100張的圖像。本文共完成車輛檢測、車窗檢測和安全帶檢測三個實驗。其中,對于車輛和車窗檢測部分,使用檢測率(CIR)和漏檢率(MIR)來作為系統(tǒng)的評價指標,計算方式如下式所示:

對于車輛檢測實驗,選取6000車輛圖片用于訓練模型。然后選取2000張車輛圖片作為測試圖片,并隨機分成10份。檢測結果示例如圖2(a)。平均檢測率為93.3%,平均漏檢率為6.7%。同時,對比了基于Adaboost算法[10]的車輛檢測模型,檢測結果示例如圖2(b),平均檢測率為90.6%,平均漏檢率為9.4%。

由此可以看出,本文算法在相同的數(shù)據(jù)庫上比Adaboost算法表現(xiàn)更好,具有更低的漏檢率和誤檢率。并且車輛檢測結果更適合用于后面的車窗檢測實驗。

車窗檢測實驗的示例如圖3所示。選取6000張車窗正面車窗圖片用于訓練模型,選取2000張圖片作為測試集,并隨機分成10份。平均檢測率為93.6%,平均漏檢率為9.4%。

2.2 安全帶檢測

對于安全帶檢測部分,使用檢測率(CIR)、虛警率(WIR)和漏檢率(MIR)作為安全帶檢測系統(tǒng)的評價指標,計算方式如下式所示:

選取戴安全帶和未戴安全帶圖片各2000張圖片用于訓練模型。選取2000安全帶區(qū)域圖片作為測試圖片,并隨機分成10份,每份包含戴安全帶圖片和未戴安全帶圖片各100張。通過基于深度學習的安全帶檢測算法,檢測結果示例如圖4所示,平均檢測率為92.1%,平均虛警率為6.4%,平均漏檢率為2.5%。

3 結論

安全帶檢測是智能交通系統(tǒng)中的一個重要研究課題。本文提出了一個高效的進行安全帶檢測的系統(tǒng),對于檢測部分,我們采用深度神經(jīng)網(wǎng)絡的特征提取方法,該特征更加適用于訓練檢測模型。同時,我們結合SVM的后處理,提高了安全帶檢測系統(tǒng)的魯棒性,并且很大程度上減低了虛警率和漏檢率。

參考文獻:

[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]. 合肥工業(yè)大學學報(自然科學版), 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] 駱玉榮. 安全帶識別系統(tǒng)的研究與實現(xiàn)[D]. 北京:北京工業(yè)大學, 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神經(jīng)網(wǎng)絡分類器

Key words: K-mean classifier;ISODATA classifier;SOFM neural network classifier

中圖分類號:TP7 文獻標識碼:A 文章編號:1006-4311(2013)04-0182-02

0 引言

K-均值分類器、迭代自組織數(shù)據(jù)分類器和自組織特征映射神經(jīng)網(wǎng)絡分類器在遙感圖像分類方面應用廣泛。王曉軍等人將非監(jiān)督K-均值分類用在合成孔徑雷達SAR圖像各極化通道上進行參數(shù)估計[1]。包健等人將K-均值算法用于高光譜遙感影像的非監(jiān)督分類中,具有較強的實用性[2]。賈明明等人選取對氣候變化敏感的澳大利亞作為研究區(qū)。利用了ISODATA分類結果、NDVI閾值及其時間序列主成分分析特征量對研究區(qū)土地利用/覆被進行分類[3]。李正金等人進行了基于TM衛(wèi)星遙感技術和小麥估產(chǎn)模型的冬小麥產(chǎn)量監(jiān)測研究,采用優(yōu)化的ISODATA分類方法,結合人機交互式判讀解譯作物信息[4]。夏浩銘等提取地物在空間上的聯(lián)系,利用神經(jīng)網(wǎng)絡分類,獲得較好的地物分類精度[5]。文章闡述了三種分類器的工作原理,分析了三種分類器的計算復雜度和分類效果。

1 K-均值分類器

基本K-均值思想很簡單。首先,選擇k個初始聚類中心,其中k是目標分類數(shù)目。每個樣本按照距離函數(shù)計算與所有聚類中心的距離,樣本加入到與之距離最短的聚類中心所在分組。新樣本加入后,更新該分組的聚類中心。重復訓練和更新,直到每類的聚類中心不發(fā)生變化為止。當分類數(shù)目已知時,利用K-均值分類方法能夠方便地計算出樣本聚類中心。但是在實際應用中,分類數(shù)目可能無法估算,這在一定程度上限制了這種方法的應用。

K-均值算法特點是每次調(diào)整樣本后,修改一次聚合中心和準則值,當考察完n個樣本后,一次迭代運算完成,新的聚合中心和準則值也計算出來。在迭代過程中,準則值逐漸減小,直到它的最小值為止。如果在一次迭代前后,準則值沒有變化,說明算法已經(jīng)收斂。

2 ISODATA分類器

ISODATA算法通過對樣本迭代來確定聚類的中心。每一次迭代時,首先是在不改變類別數(shù)目的情況下改變分類。然后將樣本平均矢量之差小于某一閾值的類別合并起來,根據(jù)樣本協(xié)方差矩陣來決定其分裂與否。主要環(huán)節(jié)是聚類、集群分裂和集群合并等處理。

ISODATA分類算法最優(yōu)迭代次數(shù)很難設定,一般遙感圖像的數(shù)據(jù)量大,若迭代誤差取值較小,分類也很難實現(xiàn)。沈照慶等人[6]以某次迭代中“合并”和“分裂”都為零為求最優(yōu)分類數(shù)的迭代條件,而不是預先設定迭代次數(shù);取最大和最小隸屬度取代每一個隸屬度為比對特征值,提高了分類速度和精度;利用等效轉換研究隸屬度矩陣的迭代誤差變化規(guī)律,得出變化速度趨于穩(wěn)定時為求解最優(yōu)隸屬度矩陣的智能迭代控制,減少人為事先干預。

3 SOFM神經(jīng)網(wǎng)絡分類器

神經(jīng)網(wǎng)絡由被稱作神經(jīng)元的相互連接處理單元組成。自組織特征映射(Self-Organizing Feature Map,簡稱SOFM)網(wǎng)絡模擬大腦的神經(jīng)系統(tǒng)自組織特征映射的功能,在學習過程中不需要指導,進行自組織學習。SOFM網(wǎng)絡可用于圖像壓縮、語言識別、機器學習和優(yōu)化問題等。

訓練SOFM網(wǎng)絡時首先初始化連接權重為小的隨機數(shù),訓練開始后,輸入向量送入網(wǎng)絡。每輸入一個樣本矢量,各神經(jīng)元的加權和中必然有一個最大值,經(jīng)過側反饋作用,在最大值點周圍連接權重自適應調(diào)節(jié)。SOFM網(wǎng)絡已經(jīng)證明,網(wǎng)絡通過反復學習輸入模式,可使連接加權矢量空間分布密度與輸入模式的概率分布趨于一致,也就是連接權矢量空間分布能反應輸入模式的統(tǒng)計特征。訓練好的網(wǎng)絡在競爭層產(chǎn)生了一個或幾個最大輸出,它們在競爭層中的位置反映了輸入向量在自身空間的特征。

4 實驗結果分析

實驗選取2003年青島市一景SPOT5圖像作為數(shù)據(jù)源,截取城鄉(xiāng)結合部某地作為實驗區(qū)域,實驗區(qū)域在紅波波段顯示為圖1(a)。對于實驗區(qū)的遙感圖像分別采用上述分類器進行地物分類實驗。

用ENVI 4.3的分類功能根據(jù)K-均值算法分類。參數(shù)設置為:分類數(shù)量15(一般為最終輸出分類數(shù)的2-3倍),最大迭代次數(shù)為40(默認是15),其它參數(shù)取默認值。K-均值關注的是不同波段的灰度信息,系統(tǒng)自動分類時,得到的分類數(shù)目為八類,結果如圖1(b)所示。從分類結果上可以看出,K-均值分類算法對水體的分類效果較好,水體用紅色表示,不但能分出主河道而且顯示出在耕地中有一條灌溉溝渠。綠地在分類圖中用綠色表示,圖上中部的綠地分類正確,但在河道附近,部分耕地錯分為綠地了。耕地被分為藍色、黃色和暗綠色三類。反射系數(shù)高的南北方向道路和屋頂較亮的廠房被歸為一類,東西走向的道路兩邊毛刺現(xiàn)象嚴重。建筑物錯分率也較高。

在ENVI 4.3環(huán)境下,利用ISODATA算法分類。參數(shù)設置為:類別數(shù)范圍[5-15](一般最小數(shù)量不能小于最終分類數(shù),最大數(shù)量為最終分類數(shù)量的2-3倍),最大迭代次數(shù)為40(默認是15),其它參數(shù)取默認值,結果見圖1(c)。從分類結果上看,ISODATA分類算法對灰度值一致性好的水體分類效果較好,水體用紅色表示。能區(qū)分出主河道而且顯示出在耕地中有一條灌溉溝渠,但將圖像下方,靠近南北走向的道路的一間面積較大的廠房錯分為水體。綠地在分類圖中用綠色表示,圖上中部的綠地分類正確較好,但在河道附近,相當一部分耕地錯分為綠地了。耕地分類效果表較好,但有部分錯分為綠地。東西走向的道路線條比較連貫,兩邊有點毛刺現(xiàn)象,但不嚴重。的空地用粉紅色表示,居民區(qū)是暗綠色,部分工廠廠房的屋頂錯分為水體。

SOFM網(wǎng)絡利用MATLAB中的神經(jīng)網(wǎng)絡工具箱實現(xiàn)。設定SOFM網(wǎng)絡的輸入矢量各維的數(shù)據(jù)范圍是像素灰度在[1,32]之間,鄰域像素卷積[25,800]之間,學習率為0.9,距離函數(shù)是歐氏距離函數(shù),訓練步長是5000。輸入訓練樣本,每類500個,5類共2500個樣本,距離為5類,每類表征一種地物類型。網(wǎng)絡對類型的定義儲存在訓練網(wǎng)絡中。利用訓練好的網(wǎng)絡對實驗圖像所有像元進行分類。分類結果用灰度圖像表示,像素的顏色代表分類的類型,像素的位置對于測試圖像同位置的地物,如圖1(d)所示。白色表示道路,淺灰表示建筑物,灰色表示綠地,深灰表示耕地,黑色表示水體。從分類結果圖上看,縱橫貫穿郊區(qū)的主干道和樓區(qū)內(nèi)的道路基本能夠正確分類。由于反射系數(shù)與道路相近,工廠廠房的屋頂也被錯分為道路。建筑物、耕地和綠地總體上分類正確。水體的分類結果令人滿意,主水道和灌溉的溝渠都能清楚地分出。分類器處理樣本圖像的時間接近,都是20分鐘左右。

5 總結

K-均值分類中耕地被分三類,道路兩邊毛刺現(xiàn)象嚴重,建筑物錯分率也較高,分類效果最差。SOFM網(wǎng)絡對道路、水體、耕地和綠地總體上分類正確,分類正確率最高。ISODATA分類對水體、耕地、道路分類基本正確,建筑物錯分較多。

參考文獻:

[1]王曉軍,王鶴磊,李連華,孟藏珍,馬寧.基于C均值分類的極化SAR圖像白化斑點濾波方法[J].系統(tǒng)工程與電子技術,

2008,30(12):2389-2392.

[2]包健,厲小潤.K均值算法實現(xiàn)遙感圖像的非監(jiān)督分類.機電工程,2008,25(3):77-80.

[3]賈明明,劉殿偉,宋開山,王宗明,姜廣甲,杜嘉,曾麗紅.基于MODIS時序數(shù)據(jù)的澳大利亞土地利用/覆被分類與驗證.遙感

技術與應用,2010,25(3):379-386.

[4]李正金,李衛(wèi)國,申雙.基于ISODATA法的冬小麥產(chǎn)量分級監(jiān)測預報.遙感應用,2009,8:30-32.

篇10

隨著時代的發(fā)展,構建在互聯(lián)網(wǎng)生態(tài)模式之上的云計算、大數(shù)據(jù)、人工智能等新技術,正滲透到每一個行業(yè),引發(fā)產(chǎn)業(yè)生產(chǎn)、服務模式的變革,并且已經(jīng)取得一系列重要成果。在此背景下,大學教學如何跟上時代步伐,是值得每一個高校教師深入思考的問題。程序設計作為計算機專業(yè)大學生的必修課程和必須掌握的基本技能,其教學改革在新時代下尤顯必要。

傳統(tǒng)的大學教學中,一直都以C/C++或Java作為教學語言。誠然,C/C++和Java是當今使用人數(shù)最多的語言,但在“互聯(lián)網(wǎng)+”時代,面對大數(shù)據(jù)分析時,特別是面對數(shù)據(jù)采集、仿真建模、結果驗證與數(shù)據(jù)可視化時,他們就不再是最佳選擇。

Python作為一種解釋型超高級語言,具備交互式、可移植、面向?qū)ο蟮奶攸c。它功能強大,適用于多種操作系統(tǒng),有完善豐富的工具包,正在得到越來越多的應用,而且越來越被重視。2017年4月,北京理工大學計算機學院和高等教育出版社聯(lián)合承辦了“第一屆高等學校Python語言及計算生態(tài)教學研討會”,提出了計算生態(tài)的概念[1],大力推動了Python教學。在此背景下,根據(jù)我們在Python教學和科研中的應用經(jīng)驗,對如何進行基于Python計算生態(tài)的教學改革進行探討。

1 Python語言的興起與優(yōu)勢

從20世紀中期到今天,短短的70年間,電子計算機經(jīng)歷了飛速的發(fā)展,出現(xiàn)了許多不同的程序設計語言,例如Pascal、Fortran、C、C++、Java、PHP、C#等,這些不同的語言,都體現(xiàn)了不同的設計哲學,也反映了不同的時代特點。

然而,每種程序設計語言都有其局限性。Python的設計者Guido von Rossum希望有一種語言,既具有C方便地調(diào)用計算機功能接口的能力,又可以像一些腳本語言一樣輕松地編程。Python正是在這種背景下被創(chuàng)造出來。

同C/C++和Java等語言相比,Python有以下優(yōu)勢:

(1)簡單易學。Python是一種代表簡單主義思想的語言,語法簡單,學習起來容易上手。這使學生能夠?qū)W⒂诮鉀Q問題而不是學習語言本身。

(2)解釋性。Python寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。這使得Python更加簡單,更易于移植。

(3)面向?qū)ο?。Python既支持面向過程的編程,也支持面向?qū)ο蟮木幊獭?/p>

(4)可擴展性。為了提升運行效率,可以采用C/C++來編寫關鍵代碼,然后在Python程序中使用它們。

(5)混合編程。Python被稱為膠水語言,是由于可以很容易地將Python與其他語言進行混合編程。這樣方便地利用已有的各種工具包,提高開發(fā)效率。

(6)豐富的庫。Python有強大的標準庫,并且Python的生態(tài)系統(tǒng)開始拓展到第三方包,例如用于Web框架的web.py ,用于科學計算的numpy,以及用于數(shù)據(jù)可視化的matplotlib等。

Python作為一種跨平臺編程語言,已經(jīng)被移植在以Linux、Windows、Mac、Android為代表的許多平臺上。由于Python的開放性,有豐富的來自開源社區(qū)的成熟庫支持,從而可以基于Python完成各種工作,例如數(shù)據(jù)采集(如網(wǎng)絡爬蟲)、圖像處理、機器學習、科學計算等。

2 針對Python的應用支持與國內(nèi)外課程建設情況

正由于Python具有上述優(yōu)點,它獲得了業(yè)界的廣泛支持。例如在Google公司,Python是繼C++和Java之后,使用率排名第三的編程語言,使用Python的開發(fā)團隊也是Google的第三大研發(fā)部門。

(1)Tensorflow:TensorFlow是由Google Brain小組開發(fā)的用于機器學習和深度神經(jīng)網(wǎng)絡的工具。據(jù)統(tǒng)計,Tensorflow是目前使用人數(shù)最多的開源深度學習框架[2]。TensorFlow本身是使用C++實現(xiàn)的,然后用Python封裝。Tensorflow可以根據(jù)用戶給出的所有指令創(chuàng)建一個計算圖,該圖被內(nèi)部優(yōu)化和編譯成可執(zhí)行的C++代碼。這樣Tensorflow就可以利用Python 帶來的開發(fā)速度和C++帶來的執(zhí)行速度。

(2)Google App Engine:Google App Engine(GAE),是谷歌推出的云平臺,它完全把CPU、內(nèi)存等硬件基礎設施抽象化,這樣只需要關注代碼的編寫,不需要關注硬件、操作系統(tǒng)或者物理位置。Python是GAE最早支持編程的語言之一,任何使用Python編寫的程序,都可以配合Google Python API,很方便地在GAE上創(chuàng)建、部署、運行Python程序。

(3)Caffe(Convolutional Architecture for Fast Feature Embedding):Caffe是由Berkeley AI Research(BAIR)和Berkeley Vision and Learning Center (BVLC)社?^貢獻者開發(fā)的另一個深度學習框架。同Tensorflow一樣,Caffe也是采用C++進行編寫,然后提供Python封裝,從而既可以利用C++的高執(zhí)行效率,也可享受Python的高開發(fā)效率。

(4)在好萊塢,工業(yè)光魔公司(Industrial Light) 采用Python制作商業(yè)動畫,在“阿貝斯(Abyss)”“星球之旅(Star Trek)”“Indiana Jones”等超級大片中驚艷登場。

(5)ERP和CRM軟件的開發(fā)也開始基于Python完成;Red Hat曾用Python和Tk一起成功開發(fā)配置和管理操作系統(tǒng)的可視界面,整個系統(tǒng)可以全面控制Linux操作系統(tǒng),并根據(jù)用戶選擇對配置文件作自動更新。

正由于Python是受到業(yè)界的歡迎,國外很多高校(如麻省理工學院、斯坦福大學、加州大學洛杉磯分校等)已經(jīng)用Python作為程序設計語言的教學對象。在Coursera等在線教育平臺上,可以發(fā)現(xiàn)有來自密歇根大學、萊斯大學、約翰霍普金斯大學等眾多高校的Python課程;國內(nèi)南京大學張莉老師的課程也在其中。然而國內(nèi)這方面的工作做得還遠遠不夠。截至2015年,我國開設Python語言教學的高校不超過10所[3]。目前在國內(nèi)大力推動Python教學改革的主要有北京理工大學嵩天老師等人,已編著并出版相應的大學教材[4],受到廣泛歡迎。哈爾濱工業(yè)大學車萬翔老師等人分析了C語言作為入門語言的不足和Python作為入門語言的優(yōu)勢,闡述了計算機專業(yè)高級語言程序設計課程的改革方案和實施效果[5]。南京大學張莉老師發(fā)表了《基于MOOC的“用Python玩轉數(shù)據(jù)”翻轉課堂實踐與研究》,研究證明:采用Python教學可以較好地提高學生的主動學習能力、學習興趣和熱情以及問題求解能力[6]。

3 基于Python的教學科研應用改革案例

3.1 輸入輸出

輸入輸出(I/O)是每個程序都必須具備的重要功能。常見的I/O可以分為3類:標準I/O(終端打印等)、文件I/O和網(wǎng)絡I/O。以?K端I/O為例:

/* Basic I/O in C */

#include

int main()

{

char name[20]; /* char數(shù)組,保存第一行輸入,作為名字輸出 */

scanf("%s", name); /*讀取第一行輸入 */

printf("Hello %s\n", name);

return 0;

}

以上用C語言編寫的有效代碼共計8行,輸入輸出都采用標準庫函數(shù)。由于C語言本身設計方面的缺陷(如果第一行輸入超出char數(shù)組大?。?,可能導致嚴重的緩沖區(qū)溢出問題。針對這一問題,C++對數(shù)組越界進行了保護,從而提高系統(tǒng)安全性。

如果采用Java實現(xiàn),則有效代碼共10行。由于Java的面向?qū)ο缶幊趟枷耄旅孢@個示例程序中多了很多對象構造的流程,引用的庫看起來也相對較多,如下所示。我們只需要對這段代碼進行稍微修改,就可以實現(xiàn)網(wǎng)絡I/O和文件I/O。例如,替換“System.in”,就能夠?qū)崿F(xiàn)對文件或者網(wǎng)絡流讀取。將“Reader”和“InputStream”替換,就能夠?qū)崿F(xiàn)寫入。

/ * 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程序的入口函數(shù) */

/* 新建輸入對象,用來讀取標準輸入。其中對象構造有嵌套*/

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”可以實現(xiàn)對文件讀取。對于動態(tài)類型的Python來說,所有的變量都不需要繁復的聲明,直接用就可以,再加上解釋執(zhí)行的特點,無需定義入口函數(shù)即可運行。

以上是對C/C++、Java、Python在基本終端I/O操作上的比較,當推廣到文件I/O和網(wǎng)絡I/O后,Python的優(yōu)勢會更突出,詳見表1。

3.2 數(shù)據(jù)操作

數(shù)據(jù)處理是大數(shù)據(jù)時代我們面臨的首要問題。然而,由于信息化系統(tǒng)建設過程中,數(shù)據(jù)可能以不同的結構存在,可能是純文本文件、CSV格式,也可能是Excel格式,或者是各種不同廠商的數(shù)據(jù)庫格式。

當然,可以采用C++或Java來讀取各種異構數(shù)據(jù)源,但過程相當繁瑣,需要利用各種底層驅(qū)動,甚至是一些商業(yè)化組件。以Excel文件讀取為例,為了處理Excel數(shù)據(jù),C/C++代碼需要用到libxl商業(yè)庫,而Java也需要用到Apache POI開源庫。而利用Python對Excel文件進行讀取則需要利用Pandas開源數(shù)據(jù)處理分析庫,示例代碼如下:

/* Read Excel in Python */

import pandas

df = pandas.read_excel('sample.xls')

print df.columns /* 輸出列名 */

values = df['列名'].values /* 獲取某一列的所有數(shù)據(jù) */

FORMAT = ['列名1', '列名2', '列名3'] /* 獲取指定列組成的數(shù)據(jù)幀 */

df_selected = df[FORMAT]

總的來說,在數(shù)據(jù)庫操作方面,C++、Java和Python的支持都非常好。C++和Java都為SQL提供了標準的連接、驅(qū)動管理類,不同的數(shù)據(jù)庫只需要加載不同的驅(qū)動就可以。Java對數(shù)據(jù)庫有比較好的語言級別支持,相應的驅(qū)動也比較豐富。Python也提供語言級別的支持,同時第三方庫十分豐富,甚至一種數(shù)據(jù)庫有多個不同的連接庫。另外值得一提的是, 盡管當前很多流行的分布式大數(shù)據(jù)平臺及分布式數(shù)據(jù)庫使用Java編寫,但利用Python同樣能夠方便地基于第三方庫實現(xiàn)操作Hbase、Hive以及其他非關系數(shù)據(jù)庫,如Mongodb、Redis等,這種特點是C/C++不能比擬的。表2為Python與C++、Java在數(shù)據(jù)庫操作上的比較。

由于Python對各種文件和數(shù)據(jù)庫的支持都非常好,它十分適合編寫數(shù)據(jù)庫之間,數(shù)據(jù)庫與文件之間相互導入導出數(shù)據(jù)的腳本,是大數(shù)據(jù)處理的首選語言。

3.3 數(shù)據(jù)可視化

豐富的可視化數(shù)據(jù)圖形能夠更好地對數(shù)據(jù)進行展示。利用數(shù)據(jù)可視化,可方便分析人員從宏觀上了解數(shù)據(jù)的形態(tài)和分布,或者進行最后的結果展示。

Python提供了豐富的數(shù)據(jù)可視化工具,如pandas、Seaborn、Bokeh、matplotlib等。下面以matplotlib為例說明如何利用Python完成數(shù)據(jù)繪圖與可視化。

假定我們要展現(xiàn)的數(shù)據(jù)用CSV格式保存,內(nèi)容見表3。目標是基于matplotlib進行直觀的數(shù)據(jù)總體分布展示,例如利用直方圖統(tǒng)計年齡分布、利用箱體圖展示薪資水平、利用散點圖繪制年齡與收入的相關關系。完整代碼如下:

import matplotlib.pyplot as plt

import pandas as pd

df = pd.read_csv("example.csv") /* ?x取數(shù)據(jù) */

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的開放性還表現(xiàn)為利用支持庫,實現(xiàn)如圖1所示的各類統(tǒng)計效果和復雜的展示(如地圖、熱力圖以及復雜網(wǎng)絡等)。此外,除了構建在Python之上的原生庫,還有大量其他的數(shù)據(jù)可視化工具包(如基于Javascript的Plot.ly、百度的Echart等),這些工具包同時也提供Python的調(diào)用封裝,豐富了基于Python的可視化效果,體現(xiàn)了強大的Python計算生態(tài)。

3.4 圖像處理與深度神經(jīng)網(wǎng)絡

深度學習的出現(xiàn)點燃了研究者對神經(jīng)網(wǎng)絡和機器學習的研究熱情,特別是基于Google Tensorflow的AlphaGo接連擊敗世界圍棋冠軍,更加吸引了人們對深度學習的關注。在深度學習領域,很多優(yōu)秀的開源平臺與框架(如Tensorflow、Caffe、Theano、MXNet等)都提供Python接口。這也從側面反映出Python計算生態(tài)已經(jīng)建立。下面以Tensorflow提供的Python接口為例,介紹Python在圖像處理與深度神經(jīng)網(wǎng)絡方面的應用。

卷積神經(jīng)網(wǎng)絡是深度學習的一個重要模型。Tensorflow已經(jīng)屏蔽了關于卷積神經(jīng)網(wǎng)絡的具體結構,如神經(jīng)元函數(shù)、拓撲連接狀態(tài)等。程序員只需要通過參數(shù)指定,就能完成網(wǎng)絡模型的設計,例如

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、激活函數(shù)、padding方法、核大小等參數(shù),就可以唯一確定輸入層、卷積層、池化層,再通過調(diào)整參數(shù)并選擇一定的學習算法,結合pillow、scikit-image等基于Python的圖像處理工具包,從而可以利用深度網(wǎng)絡自動完成特征學習,完成模式識別或圖像分類工作。