基於卷積神經網路的物體識別研究與實現
作者:楊眷玉電子科大專業碩士2013
Research and Implementation of Object Detection Based On Convolutional Neural Networks
摘要
物體識別是計算機視覺中的一個研究方向,也是當前比較熱門的研究領域。在人們的需求不斷增長的今天,物體識別在安全、科技、經濟方面正在起著舉足輕重的作用,安防領域和交通監管部門也對物體識別提出了迫切的要求,所以研究物體識別對社會的未來有非常重要的意義。2006年一種新的方法深度神經網路的出現,標誌著以深度學習為新紀元的時代的到來,卷積神經網路作為深度學習方法之一,憑藉著優秀的性能和無限的潛力成為了競相研究的對象,並且已經在圖像識別領域取得巨大的成功。因此,基於卷積神經網路的物體識別已經成為了物體識別領域的一個研究熱點。
本論文重點闡述了一個改進YOLO的卷積神經網路模型,改進後網路性能得到了較為明顯的提升,具體的工作如下:
1.改進的模型修改了YOLO網路的損失函數。改進YOLO的模型將比例的形式替換了原有差值的形式。相對於舊的損失函數,新的損失函數顯得更加靈活,對網路誤差的優化更合理。
2.改進的模型在YOLO網路中增加了1×1的卷積核。這樣就減少該層的參數數量,使網路各層提取的特徵過渡更加平滑。
3.改進的模型採用了新的inception結構。因為Inception結構本身就有加深和加寬網路的能力,並且在增強網路性能的同時,還能減少網路參數的數量。
4.改進的模型添加了一層時空金字塔下採樣層,這樣就能更充分地利用原圖像中的信息,增強網路的識別性能。另外,由於時空金字塔下採樣層本身具有的優勢,使得網路在時間性能上也有提高。
最後,在pascal voc2007資料庫和pascal voc2012資料庫上對改進YOLO的卷積神經網路進行了實驗,並用混淆矩陣、時間複雜度和信息可視化三種工具對實驗數據進行了分析和總結。實驗的結果表明,改進YOLO發網路無論在識別性能方面還是在時間效率方面都領先於其他網路,並且在國際領先水平的網路面前也有一定的競爭能力。由於在時間性能上的良好表現,所以本文將該網路模型的研究成果投入到實際應用中,開發並實現了一個改進YOLO的卷積神經網路系統。
關鍵詞:卷積神經網路,inception結構,時空金字塔下採樣,物體識別
Keywords: convolution neural network, inception structure model, spatio-temporal pyramid, Object recognition
第一章緒論
1.1研究工作的背景與意義
物體識別技術是指對日常生活中圖像或視頻中的物體進行識別所採用的各項技術,體現了在任意環境下對觀察到的物體進行檢測、分割和識別的能力。
1.2國內外發展現狀
物體識別在計算機視覺領域指的是在一張圖像或一組視頻序列中找到給定的物體,並且能夠用物體框框出物體的具體位置。
物體識別的主要步驟包括:
傳統的物體識別方法可以從底層特徵提取、特徵編碼、特徵匯聚和使用分類器分類這四個方面來敘述。
底層特徵提取:
(近年來深度學習領域有一個重要的觀點,就是直接從圖像像素學習到的特徵比手工特徵更有效,所以凡是基於深度學習方法的演算法,都儘可能的去除了手工提取特徵的方法,而直接從原始圖像中提取特徵。)
特徵編碼:
特徵匯聚:
使用分類器分類:
深度學習的三點巨大的優勢:
卷積神經網路(CNN)
1.3本文的主要研究內容
改進YOLO的卷積神經網路在物體識別領域方向的應用
對當前物體識別和卷積神經網路CNN的現狀進行了歸納和總結,並對物體識別的基礎有條理地進行了匯總和概括。
結合其他技術設計了改進YOLO模型的卷積神經網路,該網路既保留並有效延續了原有網路的優勢,同時又在原有網路的基礎上融入了新的理念和設計,解決了原網路中的諸多不足,大大增強了該網路對於物體識別的性能,提高了網路的識別率和時間效率。
使用pascal voc2007資料庫和pascal voc2012資料庫對改進YOLO的神經網路進行訓練與測試,並從識別性能和時間性能的角度對實驗數據進行分析和歸納。另外,通過特徵可視化和權重可視化,將結果數據以圖像的形式顯示出來,這樣就能使網路的性能表現更一目了然、也更有說服力。
以實際生活為場景將改進YOLO的卷積神經網路模型應用到實際生活中,以說明該網路的實用導向,另外也對網路的體系、優勢與不足作了分析和總結。
1.4本論文的結構安排
第一章首先對物體識別的研究背景作了總結性的敘述,概括性的介紹了物體識別的發展歷史和各階段所用的理論思想和相關技術,最後對當前物體識別和卷積神經網路CNN的現狀進行了歸納和總結。
第二章主要描述了一些本論文中需要用到的理論基礎和相關技術。
第三章主要講解了改進YOLO的卷積神經網路模型。
第四章主要講述了本論文中演算法的流程、實現思想和基礎理論,以及在pascal voc資料庫上的實現結果,並用混淆矩陣、時間複雜度和信息可視化這三種方式分別對實驗結果進行了詳盡的分析。
第五章主要描述了一個改進YOLO的卷積神經網路的物體識別系統的實現。
第二章基礎理論和相關技術
2.1物體識別的主要流程
核心技術
2.1.1數據預處理
數據預處理(data preprocessing)
原因:
高質量的挖掘結果依賴於高質量的數據。
在沒有經過處理的原始數據中其實存在許多的問題。
因用戶方面的要求,需要將數據轉換為一種更容易處理的格式。
方法:
2.1.2特徵提取
出於對特徵提取的需要,在神經網路中加入了卷積層、採樣層、全連接層。
2.1.3分類器
主要涉及softmax分類器
2.2相關的理論結構
2.2.1 inception模型結構
正是因為Googlenet網路框架中融入了Inception module的理念及設計,才使得Googlenet在檢測和識別中大放異彩,將國際領先水平又提升到一個新的高度。
它將上一層的輸出作為本層的輸入,之後分4條不同的分支,分別做3種不同的卷積和最大池化這4種操作,然後在前者的後3條分支的基礎上,又各自增加一個1x1大小的卷積核的級聯操作,以此來減小網路參數的厚度,來達到優化網路的目的。最後再將這4種操作後的輸出合併在一起,共同進入下一層的操作。
Inception Module既能保留網路結構的稀疏性,又能利用密集矩陣的高計算性能。
Inception Module的好處是能增加網路的寬度(不同尺度的卷積核並聯,可以實現對多尺度特徵的利用,就更全面地利用圖像中隱藏的信息)
Inception主要的思想就是如何找出最優的局部稀疏結構並將其覆蓋為近似的稠密的組件。
2.2.2時空金字塔下採樣層
為解決由於圖像尺寸不一致導致的圖像扭曲問題,引入時空金字塔下採樣技術(Spatial Pyramid Pooling,簡稱SPP),它能將任意大小的圖像池化生成固定長度的圖像表示。
優點
對於輸入的任意大小尺寸或任意比例的圖像,它可以輸出固定大小的圖像。
可以對任意尺度提取的特徵進行池化。
分類器(SVM或softmax)或全連接層需要固定長度的向量,這種向量可以用Bag-of-Words (Bo W)的方法來獲得,但時空金字塔下採樣提升了Bow的性能,因為它可以通過池化區域空間來保留空間信息。因此,這也就使得時空金字塔下採樣在提高網路性能的同時,也大大縮短了所需要的計算時間。
時空金字塔是由許多多種解析度的特徵圖組成的。為獲得不同解析度的特徵圖,我們需要從輸入的特徵圖中進行不同大小的窗口和不同步長的下採樣。在得到的這些特徵圖後,再將每個輸出的單元拉直成一個向量,最後再接入全連接層。
三級金字塔結構模型,其每一級的解析度分別為3×3,2×2,1×1,圖中256是最後一個卷積層卷積核的數目。一般使用時空金字塔時,都是將緊跟最後一個卷積層的池化層使用時空金字塔下採樣代替,將其輸出的特徵圖作為後續全連接層的輸入。因為卷積神經網路的卷積層不需要固定尺寸的圖像,只有全連接層是需要固定大小輸入的,所以網路一般將時空金字塔下採樣層放到卷積層的後面。
總的來講,時空金字塔下採樣思想就是將圖像按照不同大小比例進行池化,然後將得到的不同的矩形向量進行拉直,這樣就將圖像中的精細空間劃分到了粗糙空間,最後將拉直的特徵向量再進行聚集。
在卷積神經網路中使用時空金字塔下採樣思想的意義就在於,它能使網路提取到更多不同尺度的特徵信息,使得所提取的特徵更豐富,從而提高了網路的識別性能。
2.3卷積神經網路
卷積神經網路(convolutional neural network,簡稱CNN)一種前向傳播和後向傳播結合的人工神經網路。
Lenet-5網路結構也被視為學習卷積神經網路入門的經典結構。
2.3.1神經網路
神經網路的訓練階段,可分為兩個步驟,分別是前向傳播和後向傳播,前向傳播是提取特徵和計算輸出差值,後向傳播是利用梯度下降演算法進行層層傳播誤差,這樣前向和後向相互交替,就能實現網路模型與實際模型的最優化,也就很好的實現了網路模型的預測性。
2.3.2 CNN理論
卷積神經網路有三個比較明顯且先進的技術:局部感知,參數共享,下採樣。
多套參數進行學習的方式來提取特徵。
這樣既保證了參數數量比較少,也保證了可以提取足夠多種類的特徵。
通過下採樣操作,去除了圖像的多餘信息,保留了對圖像最本質最關鍵的特徵。
2.3.3 CNN模型
卷積神經網路的代表模型Le Net5,它是一種卷積層加下採樣層的級聯結構。按層敘述依次是輸入層,第一個卷積層(也就是C1),第一個下採樣層(也就是S2),第二個卷積層(即圖中C3),第二個下採樣層(即圖中S4),最後是全連接層和輸出層。
2.3.4 CNN相關演算法
(1)NIN網路
使用多層感知器做卷積的層被稱為MLP卷積層,包含這種卷積層的網路稱為NIN(Network in Network)。
(2)Google Net網路
Google Net有22層,比大多數的卷積神經網路的深度要多出許多層。
在Google Net中有許多1×1的卷積核和inception結構,這種結構設計能夠大大降低特徵圖的厚度,從而可以提高整體的效率。
Googlenet模型大大增加了網路的深度,並且去掉了最頂層的全連接層。
2.4 YOLO演算法
YOLO(You Only Look Once)的實現基於R-CNN的框架,但是它是基於一種端到端的思想,利用一個網路同時完成分類和標註物體框,為了優化邊框的位置,後續又加入了線性單元,用於調整物體框坐標,從而提高分類準確率。
區別於之前的方法是用分類器來做檢測,YOLO作者對邊框和對應的類概率進行回歸。
R-CNN的每個檢測步驟是分離的,不便整體優化,而YOLO則是利用一個單一的CNN,完成了在整個圖像上邊框和類別概率的預測。這既使得它可以實現end-to-end的優化,同時也提高了框架的速度。
在系統流程圖中,輸入圖像劃分為S*S個網格,如果一個物體的中心落在某個網格內,則對應的網格負責檢測該物體。 每個小網格預測B個邊框和其對應的置信度得分。這些得分反映了框含有物體的置信度大小與框是否含有物體的概率大小。如果這個小網格中不含有物體,則置信度為,否則作者希望置信度得分等於預測出的box和ground truth box的IOU(交集除以並集)。最後,將置信度定義為:
每個邊框包含5個預測值:x,y,w,h和置信度。(x,y)表示相對於小網格邊界的框中心點坐標,w和h表示相對於整張圖片框的寬和高,最後,置信度表示預測出的框與任一ground truth box的IOU。
24個卷積層和2個全連接層,其中也大量運用了卷積的級聯結構。網路的初始卷積層完成從圖像中提取特徵的功能,最後的全連接層預測類概率和邊框,在激活函數的選取上,除最後一層使用邏輯激活函數外,其他層均是使用的ReLU。另外,為了避免過擬合,網路使用了dropout結構。
為了解決由於大部分區域的預測概率為導致訓練過程發散的問題,作者引入了一個變數來解決這個問題:即某位置是否有物體存在的概率Pr(Object)。
在每個位置都對Pr(Object)進行更新,而只在有物體存在時才對Pr(DogObject)更新。
YOLO的網路損失函數使用平方和誤差來表示,並引入尺度因子λ對類概率和邊框的誤差進行加權,同時為了反映出在大的邊框中的補償度的影響比較小,所以最後作者使用邊框寬高的平方根。
2.5本章小結
第三章改進YOLO的卷積神經網路模型
本文的改進的網路有以下的幾個新特點:
(1)優化了YOLO網路的損失函數。
(2)將inception模型結構融入到新網路模型中。
(3)使用了時空金字塔下採樣層。
3.1基於YOLO網路的改進
YOLO的不足:
在YOLO演算法的損失函數中,損失函數對大小不同的邊框採取相同的誤差,而在識別中大尺寸的物體發生的誤差和小尺寸的物體發生的誤差對整個網路的影響是不同的,這也就體現了該函數的不足。
當出現兩類或多類相近的物體時,YOLO網路就往往會將其誤識別為同一類,這就表明YOLO網路對於細節的區分度太差,網路有待優化。
該模型對長寬比例比較懸殊的物體識別性能不是太好。當同一副圖片中既有大的物體也有小的物體,並且大小物體在整幅圖片中所佔的比例懸殊比較大時,則在測試效果中大物體可以識別,但小的物體往往不能被檢測出來。
改進:
3.2基於損失函數的改進
在卷積神經網路中,經常使用方差函數來作為網路的損失函數
在改進的網路損失函數中,利用了對比度這種歸一化思想來對其進行改進,考慮到了圖片中物體大小不一的情況。具體損失函數如公式3-3所示。
3.3改進的INCEPTION結構模型
加入inception前網路的這部分結構就是不同數目的1×1卷積核和3×3大小的卷積核的級聯,而加入後卻是像網狀一樣散開再進行聚合。另外在inception的前一層也稍作了些改動,就是增加了64個1×1大小的卷積核,這些核的作用和inception模型的功能是一樣的。
一,改進YOLO的卷積神經網路比YOLO網路具有更強大的提取圖像特徵的能力,提取到的特徵表達更豐富。
二,改進YOLO的卷積神經網路比YOLO網路在時間上的性能更優越。
3.4改進的SPP結構模型
時空金字塔下採樣SSP的優點包括:
1.對於輸入的任意大小尺寸或任意比例的圖像,它可以輸出固定大小的圖像。
2.可以對任意尺度提取的特徵進行池化。
3.分類器(SVM或softmax)或全連接層需要固定長度的向量,這種向量可以用Bag-of-Words (Bo W)的方法來獲得,但時空金字塔下採樣提升了Bow,因為它可以通過池化區域空間來保留空間信息。
綜上所述,使用時空金字塔下採樣層不但能獲得圖像更豐富的特徵信息,還大大提高了網路的時間效率
3.5改進YOLO的卷積神經網路結構
改進YOLO的卷積神經網路的結構和理念就是:藉助於YOLO模型中的單一網路一體化實現整個物體識別的思想,利用YOLO模型的大框架,結合inception模型和SPP Layer結構,加上優化過的損失函數作為改進點,實現基於卷積神經網路的物體識別。
在改進YOLO模型的卷積神經網路中,共分為七個模塊,首先是網路的輸入層,接著是卷積層加下採樣層的組合模塊,第三個模塊是inception module和下採樣層的組合,第四個模塊兩組級聯的卷積層,第五個模塊是一個時空金字塔層spp layer,第六模塊是一個全連接層,第七模塊是一個輸出層,其中下採樣層和時空金字塔層都採用最大下採樣。
3.6與其他網路模型的對比
從網路結構、理論思想和損失函數三個方面,將改進YOLO的卷積神經網路模型與兩組網路模型R-CNN和YOLO進行對比。
3.6.1網路結構的對比
在網路結構方面,
R-CNN模型所用的網路結構是基於Alexnet網路,只是它將Alexnet的最後一層的softmax移除了。
YOLO模型的網路結構是基於Google Net的簡化和改進而形成的,它用1×1和3×3大小的卷積核的級聯結構代替了Google Net中原有的inception結構,刪除了一些Google Net中的網路分支,並且將最後的輸出層也做了修改。
而新模型用的網路結構是在YOLO原有模型的基礎上,又將Googlenet和在ILSVRC 2015場景分類競賽中奪冠模型進行了組合,新網路融入了Googlenet中的inception模型和場景分類冠軍網路中的SPP模型。
新網路與R-CNN(即Alexnet)和YOLO之間的對比。
1.淺層網路的對比。
Alexnet在第一個卷積層使用了相當大的感受野(11×11的卷積核,步長為4),而新網路和YOLO都使用了較小的感受野(7×7,步長為2),一方面是使用小的卷積核可以加深網路的深度,達到盡量不丟失圖像的信息的目的,另一方面使用較小的卷積核也減少了網路參數。
2.卷積核的對比。
相比於Alex網路使用的5×5、3×3、11×11的卷積核,YOLO和新網路均使用了很多1×1的卷積核,但是YOLO模型僅僅是將1×1的卷積核進行了級聯,而新網路不僅進行了級聯,還運用了並行結構。
3.局部結構上的對比。
Alexnet使用都是卷積層加下採樣層的形式,而這種簡單的操作並不能很好的完成提取圖像信息的任務。YOLO模型也只是簡單的進行了卷積操作的級聯,改進YOLO的網路中用inception結構替換了YOLO模型的級聯卷積結構。
4. SPP層的優勢。
時空金字塔下採樣層的加入同樣也為新網路帶來了很多優勢。時空金字塔下採樣解決的問題是,不管輸入的圖片是什麼尺度,都能夠正確的傳入網路。
3.6.2思想理論的對比
R-CNN模型的主體思想是,它利用Selective Search的方式對圖像進行分割分組,得到多個侯選框的層次組(大約得到2000個物體候選框),然後再將這些所得的候選框進入CNN網路,利用網路自動提取圖像特徵的能力,將網路輸出的特徵用SVM分類器進行分類,最終就得到了所需識別物體的類別。
Yolo和新模型的主體思想是,基於R-CNN的框架,都是先利用區域提案來生成邊框,然後利用CNN在邊框中提取特徵,再利用分類器進行分類。而且為了優
化邊框的位置,後續加入了線性單元,用於調整邊框坐標,從而提高分類準確率。
改進YOLO的卷積神經網路模型相比與R-CNN最大的優勢就是時間的對比。
另外,改進YOLO的神經網路模型還針對YOLO模型的損失函數的不足進行了改進,使其更合理,更加適應對複雜多變的圖像的識別,提升網路的識別能力。
3.7本章小結
第四章改進YOLO模型的設計與實現
改進YOLO網路模型的實現,以及改進的模型在PASCAL VOC2007資料庫和PASCAL VOC2012資料庫上進行的實驗。
4.1演算法設計
分別從前向演算法和後向演算法來作具體闡述。
4.1.1總體設計
前向傳播是說輸入流由網路輸入層進入,經過每一級每一層網路,最後經過網路輸出層輸出。
反向傳播講的是網路輸出值與數據的標籤值之間總會有差值,然後從網路的末端輸出層開始,將誤差一級一級向前傳播,直至輸入層,並且網路就是根據層與層之間的誤差來進行更新網路權重。
網路訓練階段的具體演算法步驟
網路測試階段的具體演算法步驟
整體演算法的偽代碼
4.1.2前向傳播流程
4.1.3反向傳播流程
4.2演算法實現
純C語言編寫
1.首先將訓練數據集以及標籤準備完畢,運行網路程序,讓圖片庫去訓練網路的參數。
2.然後當訓練結束時,我們可以得到網路在訓練階段產生的一系列權重文件,之所以會有這麼多文件,是為了幫助網路在運行過程中中斷時,能夠根據上次產生的文件繼續訓練而不需要從頭開始。
3.最後當網路運行迭代到我們規定的4萬輪時,網路會產生最終的權重文件,這也是最終的結果文件,利用該權重文件,我們就可以實現物體檢測了。
4.3實驗結果和對比
4.3.1圖片資料庫
PASCAL VOC 2007資料庫和PASCAL VOC 2012資料庫
4.3.2實驗結果
4.3.3結果對比
改進YOLO的卷積神經網路在Pascal VOC 2007資料庫和Pascal VOC 2012資料庫進行了訓練和測試,並與R-CNN網路、YOLO網路和RPN網路進行結構的對比。
4.4結果分析
1.通過對混淆矩陣的分析,可以觀察新網路對什麼樣的樣本識別性能比較好,什麼樣的樣本識別性能不好,以及對容易混淆的圖像的區分度怎麼樣,進而推測網路的優劣勢在哪地方。
2.通過對該網路模型時間複雜度的分析,例如對網路參數的的數量對比,可以比較新網路的架構和之前網路架構在時間上的優化性能如何。
3.通過特徵可視化,更能直觀地看到經過網路所產生的特徵效果如何,然後通過對不同層之間的特徵的對比,可以看出哪些層的提取能力更好,更有效。
4.4.1混淆矩陣
4.4.2時間複雜度
網路的整個的計算量,與網路輸入層的圖片大小、卷積核大小、卷積核數量、網路的深度和寬度都有很大的關係。所以若想減輕網路的計算量,提高網路的時間上的效率,可以減少卷積核的數量、減少卷積核的大小、減小輸入的大小、降低網路的寬度和深度,還有一點就是可以優化網路的結構。
4.4.3信息可視化
4.5本章小結
第五章物體識別系統的實現
改進YOLO的卷積神經網路的物體識別系統的實現,包括系統的任務需求,總體設計,系統流程以及系統的測試結果,實現一個以卷積神經網路為基礎,結合其他前沿的理論和相關演算法的面嚮應用的物體識別系統。
5.1系統任務需求
5.2系統總體設計
結構設計、流程設計和界面設計。
5.2.1結構設計
5.2.2流程設計
1.網路訓練的流程
2.網路測試的流程
3.信息可視化的流程
5.2.3界面設計
5.3系統識別結果
具體的測試流程如下。
1.準備好所需要測試的樣本。
2.載入網路的權重模型和網路參數。
3.網路讀取需要檢測的圖像。
4.運行網路測試程序。
5.測試完成,顯示測試結果,如圖5-5、圖5-7所示。
6.測試結束。
5.4本章小結
第六章全文總結與展望
6.1全文總結
本論文的創新點如下:
1.修改了原YOLO網路的損失函數,用比例的形式替換了原函數中的差值的形式。因為在原式中存在不公平的優化:對大物體的優化更好,對小物體的優化更差。相對於舊的損失函數,新的損失函數更靈活,優化得更好。
2.將原網路的第一二層之間添加了64個1×1的卷積核。這樣就能減少該層的權重參數的數量,所提取的特徵過渡比較平滑。
3.將原網路的第三大層和第四大層結構用新的inception結構來替換。Inception結構本身就有加深和加寬網路的能力,並且在增強網路後還會使得網路的參數減少很多。這就為網路的識別性能和運行時間提供了理論依據。
4.將原網路的卷積層和全連接層之間添加了一層空間金字塔下採樣層。這樣將更充分地利用原圖像中的信息,加上時空金字塔原有的優化時間的功能,這樣
就不僅增強網路的識別性能,還提升了網路的時間效率。
6.2後續工作展望
VGG網路和inception結構網路這兩套網路模型
識別不出來或者誤識別。


TAG:全球大搜羅 |