什么是神經網絡?為什么它會成為工業圖像處理系統的熱點話題?因為神經網絡不僅使開發人員從復雜的差異化標準界定程序中解脫出來,還能夠自主識別并學習這一標準,并將這一“能力”應用于精確的任務中。但神經網絡并不能保持持續可靠地運作,也無法主動實現與時俱進的更新。它們必須先接受專業且深入的培訓。本文詳細描述了應該如何進行這一培訓,所需的準備工作以及與建立神經網絡有關的各個開發步驟。
1 簡介
1.1 蘋果和梨
有人說蘋果和桔子根本不具備可比性,而如果談及機器視覺系統的話,蘋果和梨這一組合似乎也找不到任何共同點。即便如此,我們仍然急切地需要能夠精確處理不同任務的系統,類似能夠基于圖像數據區分兩種不同類型水果的任務。
一般來說,開發人員總是會陷入“區分兩種水果需要基于怎樣的標準”這樣一個怪圈。可以設想一個比較簡單的區分方法:蘋果是淡紅色的,而梨是綠色的。這樣一來,設定的標準之一即與顏色相關的信息。但請記住:有些蘋果也是綠色的,比如當它們還未成熟時。因此如果將顏色視作唯一的區分標準,那么不成熟的蘋果也會被誤認為是梨。為確保更加精確的結果,增加一個衡量標準是很有必要的:比如形狀。蘋果通常更偏向于圓形,而梨則呈現比較細長的橢圓形。
圖1:通過基于相機的機器視覺系統可視化呈現蘋果和梨的分類結果。
在這個分類示例中,對物體進行區分顯然是比較簡單的。制定這一區分標準(通常稱為“特征識別”)并不難。那么當我們需要對不同種類的蘋果進行分類時,又該怎么做呢?顏色和形狀在這種情況下已經不足以成為區分不同蘋果的標準。在這個例子中,我們自定義(“手工定制”)的特征識別功能達到了極限。
針對不同對象的區分和分類越困難,對于開發人員來說,設計出一種能夠自動檢測出不同對象之間差別和特征的演算法就顯得愈加重要。
機器學習算法是前景非常廣闊的一種工具和解決方法,尤其是卷積神經網絡(簡稱CNN)。卷積神經網絡能夠自動學習區分不同對象所需的標準。這使得它們不僅能夠勝任最棘手的分類任務,同時也適用于靈活性極高的各種應用案例。
1.2 卷積神經網絡(CNN):成功案例
卷積神經網絡并不是一個最近才出現的新概念。早在1968年,加拿大神經生物學家David Hubel與瑞典神經生理學家Torsten Wiesel針對貓科動物視覺皮層進行了合作研究。視覺皮層是大腦皮層中主要負責將視覺數據處理成可用信息的部分。因此他們的目標是尋求如何從大腦接受到眼睛所采集的視覺圖像信息(比如“我看到一個蘋果”)中,獲得目標對象有用信息方式的答案。這兩名研究人員給貓演示不同走向的光條,在這一過程中發現視覺皮層的不同細胞會根據光條的走向被激活并做出反應。他們同時還發現復雜的光線圖案,比如眼睛的形狀,能夠激活視覺皮層更深層部位的細胞。
通過Hubel和Wiesel的努力,最終研發出一個能夠演繹細胞激活和轉發特定圖像信息過程的模型。這也為計算機輔助圖像分類建模奠定了基礎。
30年后,法國計算機科學家Yann LeCun再次為Hubel和Wiesel所取得的成就所激勵。他將視覺皮層功能的演繹疊加到一個演算中 -- 并從中成功創建出第一個卷積神經網絡應用。
但即便如此,卷積神經網絡在之后的很多年仍未能適用于實際操作和應用。其中最主要的原因是卷積神經網絡需要投入大量的計算能力。使用串行技術處理數據的CPU處理器需要對數據記錄挨個進行分析,意味著在這一網絡能夠最終應用于工作之前需要花費多年時間。
直到圖形處理器單元(GPU)的出現,能夠對數據實現并行處理,卷積神經網絡才再一次被人們記起 -- 實際上近年來卷積神經網絡的發展已經有了很大的起色。研究人員對卷積神經網絡在筆記識別、醫療診斷、自動駕駛車輛預警系統,機器人物體識別以及生物識別技術應用方面取得的巨大成功感到欣慰。與其它競爭性學習技術相比,卷積神經網絡在具有挑戰性的應用中通常能夠產生更好的結果。包括Google、IBM、微軟和Facebook等大型企業所投資的數十億美元巨額資金無不表現出其對這一領域的極大興趣以及這一技術本身所具有的巨大潛力。
卷積神經網絡不僅需要密集的處理器運作;同樣對數據有極大需求。對卷積神經網絡進行一次徹底培訓,需要輸入大量已經分類的圖像數據。目前開發人員能夠自由訪問與此相關的數據庫。最常用的圖像數據庫之一是ImageNet1。 它包含超過1400萬幅分類圖像。同時還有一系列針對具體分類問題而存在的專門數據庫。比如,一個名為德國交通標志識別基準的數據庫中就保存了5萬余幅關于交通標志的圖像。在這一例子中,卷積神經網絡在2012年測試中取得了高達99.46%的成功率 -- 超過人工分類取得的98.84%。然而,在實踐過程中,開發人員通常會面臨高度專業化的分類問題,因此無法獲取自己的圖像數據庫。但幸運的是,現在他們并不需要采集數百萬張圖像。一項被稱為“遷移學習”的技術小竅門能夠大大減少所需的圖像數量,有時甚至只需要幾百或幾千幅圖像。
軟件堆棧的主要部分都可以供開發人員自由使用。目前已經開發出一系列適用于卷積神經網絡的深度學習框架:包括Caffe,Torch和Theano在內的眾多軟件庫都是專為這一課題而研發。2015年11月,Google甚至為此開放了內部機器學習軟件TensorFlow,這一軟件是從圖像搜索到Google Photo等多種Google產品的基本組成部分。
卷積神經網絡同時也開始在機器視覺應用領域中發揮越來越大的作用。根據2016年嵌入式視覺聯盟進行的嵌入式視覺開發者調查2,77%的受訪者表示目前正在或計劃將要利用神經網絡來處理分類工作。這一趨勢正在上升:于2015年3進行的同一項調查顯示,僅61%的受訪者有此打算。2016年進行的該項調查還發現,86%的卷積神經網絡被用于分類算法。這一結果表明,除了像Google或Facebook這樣擁有龐大規模和豐富資源的大公司之外,普通的公司也能夠自主研發基于卷積神經網絡的產品或服務。
2 卷積神經網絡開發步驟
設想一下,作為工業級水果分選線的一部分,您確實需要將蘋果和梨子區分開,此外還需要根據其質量將不同的水果自動分批。那么接下來將要經過以下步驟:
1. 采集圖像數據
2. 卷積神經網絡結構的設計
3. 執行自學習算法
4. 對培訓過的卷積神經網絡進行評估(并根據需要對步驟1、2、3進行修改)
5. 訓練有素的卷積神經網絡部署
下述文字將對各步驟進行詳細介紹。
2.1 采集圖像數據
機器學習的基本原理(或者準確地說是“監督式的機器學習”)涉及到如何利用大量示例教電腦識別待解決的問題。對于水果分選線來說,這將涉及到拍攝大量能夠顯示不同種類、品質和大小的蘋果和梨的圖像。同時,還必須記錄下關于每幅圖像最精確詳盡的描述,這意味著所有三個屬性(見圖2)的具體值(“標簽”)。這將創建一組輸入/輸出對,并通過電腦視覺處理,相當于直接將其展示給“電腦的眼睛”,并由電腦指示哪幅圖像應該對應哪個回答(“Braeburn, Class I, Size M”)。
圖2:具有附加文本輸出的圖像數據。神經網絡能夠利用這些輸入/輸出對學習區分。
在數據記錄過程中,非常重要的一點是需要在圖像上展示出需要測量的所有可能的屬性組合(在這種情況下指類型、品質和大小)。通常來說,必須注意的是應用程序的視覺變化(不僅是水果的類型,同時也包括不同的光源條件,圖像中水果的背景和位置等)在圖像樣本中也必須有所體現。從實際的角度來看,在最終的生產環境下、以完全相同的方式拍攝圖像是比較可取的做法。記錄每幅圖像中的水果類型、品質和大小等屬性這一任務應該由經過培訓的專家進行:只有實際的水果銷售者,而不是系統程序員,才有資格正確評估商品的質量。
數據采集過程中產生的另外一個極其重要的問題是所需圖像樣本的數量:可以想象,圖像差異越大,所需的樣本數量就越多。如介紹中所述,類似ImageNet的應用程序可能在短時間內就需要上百萬幅圖像。這樣的數據采集操作既不實際也不劃算,但是顯然還有其它的解決方式。與傳統的圖像處理系統一樣,可以在生產環境進行更加嚴格的管控。此外,通過對已拍攝圖像的色調,圖像偏斜和縮放進行系統改變,所采集的數據量同樣能夠被人工擴大(數據擴增),并用于新的樣本中。當然也可以通過眾包方式與服務合作伙伴合作,以實現經濟可行的數據采集。
2.2 卷積神經網絡結構的設計
由于具備不同層次的各種功能,最頂尖的卷積神經網絡技術得以脫穎而出。與老式的基礎多層感知器4不同,現有的網絡由一系列交替卷積層和匯聚層組成(見圖3)。
圖3:建立一個最頂尖的卷積神經網絡。輸入(一幅圖像)可以通過輸出在一系列不同的層之間進行處理。
卷積層通過進行一項數學“卷積”操作將輸出圖像相鄰區域的像素值轉換為單個值。卷積運算類似于特征檢測器,僅需查找圖像中的特定屬性(如識別水平定向邊緣)。匯聚層是在處理鏈中進一步被建立起來的,它能夠總結用于較大圖像區域的特征檢測器的幅度。這些層形成了一個牢固的金字塔結構,產生了越來越多針對更大范圍的圖像區域進行操作的專門的特征檢測器。回到最初的水果分選線上來,可以設想網絡的第一層對應的是具有梨特征的斑點圖案;而相對的上一層則證實特定蘋果類型的莖、陰影及上半部分的視覺一致性都能夠保證網絡最終計算出哪種水果類型、品質和大小是可見的)。
圖4:經過培訓的網絡具有所謂的特征檢測器,使其能夠對圖像中的特定結構做出相應反應。當網絡的第一層更傾向于對具有梨特征的斑點圖案做出反應時,更高層則能夠對莖干和陰影的視覺一致性做出反應。
卷積神經網絡的精確結構實際上是由開發人員開發出的網絡的變形,如AlexNet5、VGG Net6或GoogLeNet7。在這一過程中通常需要進行必要的調整,因為特定的任務在輸入圖像的分辨率或可用的計算能力方面會有特定的要求。這些網絡是通過上述開源深度學習框架被編程的,這些框架能夠提供包括卷積層在內的所有核心元素以作為軟件功能之一。根據要求,這需要一定程度的專業知識。一個初步的可行性研究通常可以通過幾項定制內容來實現,而一個真正100%的最優化解決方案則需要富有經驗的專家高強度的工作才能實現。
2.3 執行自學習算法
一旦建立起卷積神經網絡的數據和設計方案,就必須相應地執行一項所謂的自學習算法。以不同的變體形式,它將成為被部署的深度學習框架的一部分。這些算法均是基于反向傳播算法這一概念,其核心是一個(隨機)優化的過程。這些算法負責卷積神經網絡自由參數(“權重”)的配置,以便網絡能夠適用于所提供的數據。因此,自學習算法通常用于卷積神經網絡的“培訓”。
執行這種自學習算法是應用程序解決方案整個開發過程中最消耗處理器的一個步驟:如果您需要使用數百萬幅示例圖像,那么您需要一個或多個更好的GPU服務器(更多詳情請參閱下一節),通常需要花費幾天到幾周時間才能進行數據的處理。只有一種方法能夠避免這一多余的復雜操作:即在您的應用程序中使用遷移學習技巧。
與網絡的設計一樣,不同級別的質量預期可能需要相應不同級別的專業知識:每種可用的自學習算法也都具有能夠影響其性能的不同參數(如學習或衰減速率,批量大小等)。還有一些如Dropout,Batch和Layer Normalization procedure這樣的小技巧有助于使卷積神經網絡最終能夠發展得更加強大和堅固。還有一點必須明確的是,沒有任何一種自學習算法具有完全的確定性;它們總是包含隨機組件。這意味著開發人員通常必須對中期結果進行評估,并對算法的執行進行手動更改。
2.4 網絡評估
經過自學習算法進行培訓的卷積神經網絡必須進行統計評估。為進行這一評估,需要將一組已知內容的樣本圖像與電腦計算值進行對比。這將產生一個出錯率,表示由網絡正確識別出的圖像內容屬性的百分比。如果結果不符合預設質量要求--比如說,將5%的Braeburn蘋果識別為Granny Smiths是肯定不能接受的--那么就必須回到最初的三個開發步驟并對其進行改進。
原則上來說,需要滿足該評估所需的數據是隨時可用的,因為這些數據正是為了培訓網絡而采集而來。關鍵是絕對不要使用在培訓過程中已經用的圖像來對網絡進行測試。這樣做會自動導致對系統真實性能的低估,同時真正的錯誤只會在生產過程中才被發現。在特殊情況下,當測試數據與培訓數據完全一致時,網絡會記住這些圖像,并在評估過程中做出完美的表現,但在新的圖像被輸入生產系統中時則會失敗。為避免這一問題的出現,非常重要的一點是如何部署諸如交叉驗證這樣的過程,從而在培訓和評估階段將數據系統地分開。
2.5 訓練有素的卷積神經網絡部署
一旦最后一步取得了令人滿意的結果,那么接下來的步驟則是將培訓后的網絡植入生產系統中。最普遍使用的深度學習框架提供了一系列豐富的工具,能夠將網絡不同的必要元素整合輸入軟件,以便它們能夠與系統其它組件相連接,比如與相機連接或對檢測到的圖像內容做出的反應進行控制。
如果在卷積神經網絡對圖像進行評估的過程中對運行性能有特定要求,則會產生額外的工作量。這通常是因培訓網絡(GPU服務器)時與生產環境下的硬件設置的不同所導致。在某些情況下也有可能會被迫使用特殊的方法(如量化法)來減少已培訓過的網絡,以適應目標系統的需要。然而,通過完善的網絡設計能夠避免這種在技術上具有挑戰性的行為。
3 遷移學習
正如此前已經提到的,如果單以其原始的模式來看,卷積神經網絡對數據有極大的需求,在培訓過程中同樣對處理器有著極高需求。好在(對于開發人員來說)總有一種能夠簡化一切的更好的方法,特別是眾所周知的遷移學習法。這也讓已經使用大量通用圖像(如ImageNet數據庫中的圖像)進行培訓的網絡能夠與僅使用少量特定領域的圖像的具體應用進行適配。開發人員向一個網絡,如AlexNet,VGG Net或GoogLeNet“展示”應用程序特定的培訓圖像,然后將結果值儲存在網絡最后一層以作為特征向量。這些向量代表的是以高度緊湊的方式展示給網絡的圖像,并且能夠通過標準的機器學習程序(如邏輯回歸、支持向量機或“簡單”多層感知器)進行分類。通過這種方式,卷積神經網絡能夠取代傳統的圖像處理工具,如Hough transformation、SIFT Feature,Harris Corner或Canny Edge detectors。近年來,科學研究的對比分析和許多實際應用都清楚地表明,卷積神經網絡中學習的特征向量比傳統的手工特征檢測器更加實用和具有操作性。
4 卷積神經網絡處理器
如上所述,在卷積神經網絡的發展過程中,培訓與應用步驟之間的區別是顯而易見的。這兩個步驟對于硬件的需求是截然不同的。
培訓 - GPU
推理 - FPGA
圖5:圖形處理器單元(GPU)是卷積神經網絡培訓過程中的首選硬件。對于嵌入式視覺系統中的集成和應用,現場可編程門陣列(FPGA)通常被用作培訓后的網絡運行所需的處理單元。
在可能的情況下,高性能GPU處理單元應該被用于卷積神經網絡的培訓過程中。像NVIDIA這樣的制造商能夠提供專門為此任務而定制的DGX-1這樣的AI超級計算機;而使用更加經濟實惠的NVIDIA TitanX卡同樣也是可行的。NVIDIA公司報告指出,它們能夠以比普通CPU快80倍的速度對卷積神經網絡進行培訓。
一旦網絡接受了培訓,就將被傳輸至具有低硬件需求和處理單元的嵌入式視覺系統。對于處理單元來說,則推薦使用現場可編程門陣列(FPGA),因為它們能夠并行高速處理圖像數據。
因此,這種嵌入式視覺系統的關鍵部件是一臺能夠記錄要分類的圖像數據的相機;一根傳輸該圖像數據的線材;以及用于對圖像數據進行分類的卷積神經網絡處理單元。
圖6:適用于卷積神經網絡實際應用的嵌入式視覺系統。嵌入式相機(Baslerdart BCON)通過柔性帶狀線材與具有FPGA(XilinxZynq)的處理單元相連接。圖像數據的分類在FPGA上運行,因此可以進行實時計算。
配置了FPGA的嵌入式視覺系統具備一系列能夠完美適用于卷積神經網絡的優點:
FPGA能夠執行卷積操作和網絡所需的其它數學運算,以便對圖像進行并行和高速分類任務。此設置提供實時圖像分析和分類功能。
相比GPU,FPGA所需功耗更小,因此更適合低功耗的嵌入式系統。微軟研究院最近發布的一份報告8顯示,FPGA能夠比GPU節省10倍功耗。
FPGA的大型片上存儲和帶寬使卷積神經網絡能夠對更高分辨率的圖像進行實時分類。
能夠與FPGA直接連接的相機(如Basler‘s dart BCON相機)能夠將數據直接傳送到FPGA。這是處理器密集型應用程序(如卷積神經網絡)的一個主要優勢,因為通過USB傳輸的數據在到達FPGA之前必須通過不同的硬件組件(比如主機控制器)運行。實現相機與FPGA的直接連接能夠保證更加高效的工作性能。
5 簡要概述
1. 當負責解決傳統分類問題的開發人員還在焦頭爛額于手動制定的“屬性”或標準時,卷積神經網絡已經能夠自行學習這些差異化標準。
2. 網絡通過使用一組已知內容的圖像自動學習差異化標準。在所需圖像的數量以及處理能力方面,這是一個高度資源密集型的學習過程。
3. 然而,遷移學習的原理使得少量圖片和處理能力也可能實現生產就緒的解決方案。
4. 卷積神經網絡非常適用于具有相機與FPGA直接連接的嵌入式視覺系統(如Basler BCON相機)。
5. 根據2016年嵌入式視覺聯盟進行的嵌入式視覺開發者調查9,77%的受訪者表示目前正在或計劃將要利用神經網絡來處理機器視覺應用程序中的分類工作
-
神經網絡
+關注
關注
42文章
4781瀏覽量
101178 -
機器視覺
+關注
關注
162文章
4406瀏覽量
120744
發布評論請先 登錄
相關推薦
評論