1. 程式人生 > >基於深度神經網路的目標檢測系列文章二:緒論

基於深度神經網路的目標檢測系列文章二:緒論

注:本文源自本人的碩士畢業論文,未經許可,嚴禁轉載! 原文請參考知網:知網本論文下載地址

第一章 緒論

1.1 研究背景與意義

當人類首次發明計算機時,就已經開始思考如何讓計算機變得智慧。如今,人工智慧(artificial intelligence)已經成為一個非常火熱的領域,並且具有眾多活躍的研究課題以及惠及生活方方面面的實際應用。這個領域目前正在以幾何倍的速度增長著,並且未來也將持續健康發展。人們希望可以藉助人工智慧自動地處理一些主觀的,非規範性的事物,如識別影象等。

在人工智慧發展初期,計算機很容易處理一些人類很難甚至是無法解決的問題,這些問題可以用一種形式化的數學規律來描述。人工智慧真正面臨的任務是那些很難用形式化符號描述的任務,當然對於人類來說很容易執行。舉個例子,人們能夠輕鬆識別對方說的話,也能夠輕易識別影象中的物體。對於這類問題,計算機卻無法給出自己的判斷。

計算機很擅長助理抽象和形式化的任務,但是人類卻覺得這是很困難的腦力勞動。早在上個世紀,計算機就在國際象棋方面戰勝了人類選手。但一直到最近幾年,計算機才在語音和影象識別任務中達到人類一般水平。通常一個人的思維發育需要海量有關外界的知識。相當一部分領域的知識是主觀的,並且很難用形式化的結構表示清楚。同人類一樣,計算機也要獲得同樣數量級的知識才能表現得智慧化。因此,對於研究人工智慧領域的學者來說,關鍵的挑戰就是如何將這些主觀的、非形式化的知識教會計算機來學習。

早期的研究專案有一些基於知識庫方法,這種方法用近似於窮舉的方式將知識用結構化的符號進行儲存,然後設計相應的邏輯規則讓計算機來理解這些符號的宣告。可想而知,這樣的工程耗時又費力,失敗也是意料之中的。究其原因,這些結構化符號和宣告是由人類主觀選取的,人類尚無法構造出可以精確地描述世界的演算法規則。

近代一些研究學者針對這些比較主觀的問題探討一種解決方案。這種方案是設計一種方法讓計算機從海量經驗中學習,通過構建層次化的結構來擬合事物,並且層次之間通過相對簡單的關係來定義。這種方案讓計算機自主從海量知識中捕獲經驗,好處當然是避免了人類給計算機指定學習內容,因為人類無法完全知曉應學習的特徵。科學家破天荒地提出層次化的概念,是藉助了人腦工作的方式,從而使計算機藉助於構建簡單的模型來學習複雜的特徵。我們稱這種方法為深度學習(deep learning),是因為計算機最終構造出一張“深層次”的圖,層與層之間通過簡單的規則進行連線。

人工智慧系統需要具備從原始資料中擬合模型的能力,也就是自主學習的能力。我們通常稱這種擬合的能力叫機器學習(machine learning)。利用機器學習,計算機能夠擬合出關於真實事物的近似模型,並對相似事物做出判斷。目前主流的機器學習的工作都是經過兩個步驟,首先人工選定一個特徵集合,然後將原始資料提交給模型,根據選定特徵擬合出決策模型。

現實中的事物極其複雜,人們很難深入到事物內部看清本質,很難知道哪些特徵是重要的,甚至不知道什麼才是真正的特徵。研究生物神經網路帶給我們的啟示就是可以讓機器自主發掘隱藏在知識中的規律,而不只是簡單把知識灌輸給計算機,這會讓計算機像個頑皮的孩子一樣學完就忘了。人類從原始資料中提取高度抽象的特徵是極其困難的,而計算機通過模擬人腦就可以用較簡單的模型來表示複雜概念,解決了特徵提取這一關鍵問題。深度學習逐漸發展成以人工神經網路(artificial neural network)演算法為核心的演算法體系。

人工神經網路為人工智慧的研究帶來了前所未有的期望。人工神經網路並不是近代的產物,上世紀50年代就驗證了其可行性,為什麼直到最近幾年才被普遍接受?這也是研究深度網路演算法的意義之所在。首先日俱增的資料量得以儲存,出現了很多專門用於研究神經網路的資料集,這些資料集越來越大並且質量都很高,如圖1-1所示。人們迫切希望有一種演算法能從海量資料中發現事物的本質。其次是大規模的模型已經出現,經過近幾十年的發展,模型中神經元的連線數已經達到了數十億級,逐漸接近人類大腦的連線數。科學家預計這種增長勢頭將穩定持續到未來若干年。最後人工神經網路模型做決策的能力一直在提高,各大資料集上的準確率不斷被重新整理。深度學習發展迅速,但仍然很年輕,還有很多未知領域的研究和實際應用等著人類去發掘。 在這裡插入圖片描述 圖1-1 與日俱增的資料量

1.2 國內外發展現狀

從深度學習誕生以來,就吸引了很多公司和個人加入到這個領域的研究。最近幾年關於深度學習方向的著作和應用如雨後春筍般湧現出來。閱讀深度學習領域的著作,我們能夠快速掌握該領域的熱點和趨勢。2015年發表在《自然》雜誌上一篇名為《Deep Learning》的文章正式將深度學習推向高潮。隨後一大批高校和科研單位投入進深度學習的研究中,並且碩果累累,新的觀點層出不窮。

國際上有很多大公司在做深度學習方面的研究。谷歌、微軟、蘋果、亞馬遜等公司都積極投入到深度學習的研究中,大多一方面做研究專案,如“谷歌大腦”,另一方面做實際應用,如微軟公司推出的聊天機器人“小冰”、蘋果的智慧語音助手“siri”等。

我國關於深度學習的研究屬於後起之秀,並且大有追趕國際的勢頭。一些大型科技公司都開始涉足這個領域。國內的阿里、騰訊、百度、華為等公司也加緊了這方面的研究。另外還有很多初創公司,將這項技術應用於生物、醫療、廣告等各行各業。

1.3 物體識別技術的發展

1.3.1 傳統物體識別的發展

物體檢測一直是計算機視覺領域經久不衰的研究方向。物體檢測同樣是一個主觀的過程,對於人類來說相當簡單。就連一個沒受過任何訓練的孩子通過觀察圖片中不同的顏色、區域等特徵就能輕易定位出目標物體。但計算機收到這些RGB畫素矩陣,不會直接得到目標(如行人、車輛等)的抽象概念,更不必說定位其位置了。再加上目標形態千差萬別,目標和背景重合等問題,使得目標檢測難上加難。

傳統的目標檢測演算法包括三個階段,首先生成目標建議框,接著提取每個建議框中的特徵,最後根據特徵進行分類。以下是這三個階段的具體過程:

1,生成目標建議框。當輸入一張原始圖片時,計算機只認識每一個畫素點,想要用方框框出目標的位置以及大小,最先想到的方法就是窮舉建議框,具體的做法就是用滑動視窗掃描整個影象,還要通過縮放來進行多尺度滑窗。很顯然這種方法計算量很大,很多都是重複的計算,並且效率極低。

2,提取每個建議框中的特徵。在傳統的檢測中,常見的HOG[20]演算法對物體邊緣使用直方圖統計來進行編碼,有較好的表達能力。然而傳統特徵設計需要人工指定,達不到可靠性的要求。

3,分類器的設計。傳統的分類器在機器學習領域非常多。具有代表性的SVM將分類間隔最大化來獲得分類平面的支援向量,在指定特徵的資料集上表現良好。

然而傳統的演算法在預測精度和速度上都很不理想,隨著深度學習演算法在計算機視覺領域大放異彩,並逐漸成為霸主,傳統識別演算法漸漸暗淡。

1.3.2 基於深度學習的物體識別技術發展

自從深度神經網路演算法首次在ImageNet資料集上大放異彩,物體檢測領域逐漸開始利用深度學習來做研究。隨後各種結構的深度模型被提出,資料集的準確率一再被重新整理。實際上,深度學習模型在分類任務上將傳統的方法遠遠地甩在身後。影象分類上明顯的提升也帶動了檢測領域的快速發展。

到目前為止,高效能的檢測演算法都基於深度學習。最早的R-CNN(Region-based CNN)[23]首次使用深度模型提取影象特徵,以49.6%的準確率開創了檢測演算法的新時代。早期的物體檢測,都以滑動視窗的方式生成目標建議框,這種方式本質上與窮舉法無異。

實際上,重複計算問題仍然沒有得到解決。Fast R-CNN[25]的出現正是為了解決冗餘計算這個問題。Fast R-CNN添加了一個簡化的SPP[24]層,使得它的訓練和測試過程能夠合併在一起。

Fast R-CNN[26]使用Selective Search來生成目標候選框,但是速度依然達不到實時的要求。Faster R-CNN則直接利用RPN(Region Proposal Networks)網路來生成目標候選框。RPN輸入任意畫素的原始影象,輸出一批矩形區域,每個區域對應一個目標座標資訊和置信度。從R-CNN到Faster R-CNN,是一個合併的過程,它把傳統檢測的三個步驟整合到同一個深度網路模型中。

基於迴歸演算法的檢測模型又將檢測領域帶到一個新的高度。其中以YOLO[28]和SSD[30]方法為代表的檢測方法做到了真正意義上的實時效果。

R-CNN到Faster R-CNN,再到SSD等是檢測方法發展的主要軌跡。實際應用中還有許多特定物體的檢測方法,如人臉檢測、行人檢測等。隨著技術的發展,相信未來檢測方法也會更加智慧。

1.4 本論文主要工作

本論文主要研究了深度神經網路,尤其是卷積神經網路在影象物體檢測領域的研究與應用。論文首先闡述了深度學習的背景和物體識別領域的國內外研究現狀,以及物體識別技術的新舊交替。然後,論文詳細介紹了深度網路的相關概念和技術要點。接著,論文研究並實現了基於DenseNet(密集連線網路)改進的卷積神經網路,取得更好的分類效果。之後,論文研究了物體檢測演算法SSD的結構和原理,並用密集連線策略對其進行改進,取得更好的識別效果。最後,利用前面的研究成果,實現了一個基於神經網路演算法的物體識別系統,達到了實際應用的目的。

1.5 本論文的結構安排

第一章簡要介紹了物體識別演算法的研究意義和背景,國內外發展狀況,以及從傳統方法到基於深度學習演算法的變更。研究人員逐漸捨棄了基於人工提取影象特徵的傳統演算法,開始大範圍使用卷積網路讓網路自己來提取特徵。最終提高演算法在分類上的準確度,進而提高影象物體檢測的準確性。

第二章詳細講述了深度網路的基本原理(包括其結構形態、基本單元、工作模式等),以及對影象資料敏感的卷積網路。之後又介紹了一些經典的卷積網路結構和它們用到的優化方法。

第三章詳細介紹了基於DenseNet(密集連線網路)改進的卷積網路。論文分析了其結構和原理,實現了程式碼編寫,並證明了與同類方法相比分類效果更優。

第四章詳細介紹了物體識別(也叫目標檢測)的策略,即在卷積網路的基礎上增加了候選框建議和邊框迴歸的策略,重點介紹了SSD演算法。然後將第三章介紹的改進版DenseNet應用到SSD演算法上,使得網路的識別率更高,並且對小目標的識別效果更好。

第五章實現了一個基於深度網路的物體識別系統。首先介紹了系統的詳細設計(包括架構,流程等),然後使用已有的資料集訓練模型。最後對測試結果進行闡述和分析。