歡迎登錄中國視覺網!
行業新聞頻道
INDUSTRY NEWS
當前位置:首頁 >> 行業新聞 >> 熱點聚焦 >> 深度學習在機器視覺系統中的應用詳解

深度學習在機器視覺系統中的應用詳解

發布時間:2019-04-30     來源:中國視覺網       訪問次數:2197

   雖然深度學習,人工智能和認知系統的概念并不新鮮,但也是近些年它們才真正應用于機器視覺系統。
   隨著機器視覺技術的不斷發展,系統在不需要計算機編程的情況下也可以具有分析和分類對象的能力。而人工智能(AI)和深度學習是推動機器視覺發展的重要技術手段。
   然而,描述這些概念背后的潛在科學更為簡單。例如,在傳統的機器視覺系統中,可能需要讀取零件上的條形碼、判斷其尺寸或檢查其是否有缺陷。為此,系統集成商通常使用現成的軟件,這些軟件提供了標準工具。例如,可以部署這些工具來確定數據矩陣代碼,或者使用圖形用戶界面來測量零件尺寸的工具集。
   因此,部件的測量可以分為好或壞,這取決于它們是否符合某些預定標準。與這種測量技術不同,所謂的“深度學習”工具更好地歸類為圖像分類器。與專門讀取條形碼數據的軟件不同,它們被設計用于確定圖像中的對象是存在還是好或壞。因此,這些工具是互補的。
   神經網絡等深度學習工具將拓展其他機器視覺技術。例如,這樣的神經網絡可以判斷數據矩陣代碼存在于圖像中的概率,但要解碼它,將使用傳統的條形碼算法。
神經網絡
   基于神經網絡的工具通常用于確定零件的存在或圖像中的物體是好是壞。這些工具屬于一組稱為圖像分類器的算法,從基于實例的分類器(如k-nearest neighbor (k-NN))到決策樹分類器。在Jason Brownlee 2013年11月的《機器學習算法之旅》(A Tour of Machine Learning Algorithms)中可以找到不同類型分類器的圖表。
   其中許多可以用于機器視覺應用程序。MVTec Software已經在其HALCON軟件包中提供了預先訓練的神經網絡、支持向量機(SVM)、高斯混合模型(GMM)和k-NN分類器。需要注意的是,深度學習網絡訓練從無到有,每一個錯誤類別都需要幾十萬張樣本圖像才能獲得有效的識別結果。然而,HALCON集成了廣泛的深度學習網絡。因此,訓練只需要相對較少的樣本圖像,節省了大量的時間和金錢。
   Stemmer Imaging公司也在其Common Vision Blox(CVB)Manto軟件中使用SVM。
   當不同組的特征值顯著重疊時,SVM可用于生成多維特征空間以隔離不同的缺陷組。PR Sys Design在其perClass軟件中提供許多這樣的分類器。它具有一系列分類器,如k-NN、神經網絡、隨機森林和SVM。圖像分析軟件是一個基于MATLAB的工具箱,允許開發人員以交互方式處理數據,選擇數據中的最佳特征進行圖像分類、訓練多種類型的分類器并優化其性能。
模仿大腦
   就像許多不同的分類器可以用來識別圖像中的對象一樣,也有許多類型的神經網絡可以用來執行圖像分類功能。這種神經網絡試圖模仿人類視覺系統和大腦中使用的生物神經網絡。其中最簡單的是Frank Rosenblatt于1957年發明的感知器(圖1)。



圖1:由Frank Rosenblatt于1957年發明的感知器,它通過一組二進制輸入對大腦中的神經元進行建模,每個輸入乘以一個連續的值權重,并對這些加權輸入的和進行閾值化,模擬生物神經元。


   Perceptron通過采用一組二進制輸入(附近的神經元)對每個輸入進行建模,將每個輸入乘以連續值權重(每個附近神經元的突觸強度),然后閾值化這些加權輸入的總和,如果總和足夠大,則輸出“1”,否則輸出“0”,類似于生物神經元發射或不發射(參見”神經網絡與深度學習的歷史“,作者:Andrey Kurenkov)。
   如今,更復雜的網絡使用兩層或更多這樣的“神經元”來執行圖像分類任務。這些“隱藏層”可以在呈現給神經網絡的圖像數據中找到特征。從簡單的感知器到深度前饋(DFF)和卷積神經網絡(CNN),許多神經網絡架構都可以用于筆跡分析和語音識別等應用(參見Andrew Tch的《神經網絡的基本完整圖表》)。
   CNN可能是機器視覺系統中應用最廣泛的神經網絡。這有幾個原因。首先,CNN的架構旨在更緊密地模仿人類視覺皮層和模式識別機制,CNN被分成幾個執行不同功能的神經元階段(圖2)。



圖2:在CNN中,卷積層用于執行特征提取,就像使用卷積運算符來查找邊緣等特征一樣。在傳統的圖像處理中,諸如高斯模糊和中值濾波的圖像濾波器執行該任務。另一方面,CNN架構模擬人類視覺系統(HVS),其中視網膜輸出執行諸如邊緣檢測的特征提取。


   在該簡化圖中,為了說明的目的,分別示出了卷積層和池化層。在實踐中,它們構成了完整的CNN的一部分。在CNN中,卷積層用于執行特征提取,就像使用卷積運算符來查找邊緣等特征一樣。
在傳統的圖像處理中,可以將諸如高斯模糊和中值濾波的圖像濾波器分解成現場可編程門陣列(FPGA)來執行該任務。
   另一方面,CNN架構模擬人類視覺系統(HVS),其中視網膜輸出執行諸如邊緣檢測的特征提取。在CNN中,該卷積用于執行特征提取,因此表示輸入圖像的特征。這些卷積層排列成特征圖,每個神經元都有一個接收域,通過一組可訓練的權重連接到前一層的神經元,這些權重用于確定可能應用的濾波器類型。
   在提取這些特征之后,使用所謂的“合并層”來減小圖像數據表示的空間大小,以提高計算速度。然后將該圖像數據饋送到最終網絡層以進行進一步的數據處理。
無需編程
   神經網絡不像其他方法那樣需要傳統的或FPGA編程技術。相反,CNNs可以被訓練以三種不同的方式識別物體。在第一個監督學習中,圖像被手工標記,并使用這些數據生成一個輸出模型來分類未知的圖像。監督學習需要對圖像數據進行標記,而非監督學習方法可以在圖像數據中發現模式,并從多個未知圖像中構建模型。然后,通過對這些結果的解釋,可以開發出更精確的監督分類器。
   這種無監督學習系統通常是不準確的,可以受益于半監督學習技術,其結合標記數據以減少需要訓練的圖像的數量。



表1:許多機器視覺公司現在推出的產品經常使用開源工具包開發專門針對機器視覺應用的軟件。


   “關于這些不同的方法,我們的大多數工具都是基于監督培訓,”Adaptive Vision總經理Micha?Czardybon說道。 “這是最有效的,因為沒有必要手動設計算法。但是,需要提供標記的訓練數據。我們的一個工具Anomaly Detection使用半監督方法,開發人員提供了大量“良好”的對象圖像,并且訓練網絡只是為了識別與這些對象的任何偏差。
   Czardybon說:“對于那些希望此類軟件在無監督模式下運行的人來說,我們的技術還沒有準備好。然而,我們正在進一步研究半監督學習,即少量帶標記的樣本與數百個未帶標記的樣本同時存在,以提高準確性?!?br />    在構建這樣的網絡時,開發人員可以同時使用商用和開源開發工具。而商業上可用的工具,如Wolfram的Version 11,MathWorks的深度學習工具箱Artelnics,可以用來開發基于神經網絡的應用程序,其他公司提供開源代碼來執行這項任務。
開源解決方案
   英特爾、IBM、NVIDIA、微軟等大公司和Google都提供開源代碼來開發機器學習算法。
有趣的是,Keras是一個用python編寫的高級神經網絡應用程序編程接口(api)的開發人員,在一張圖表中顯示了一個比較基于11個數據源的深度學習框架的圖表,谷歌的TensorFlow機器學習庫是最廣泛使用的機器學習軟件(圖3)。



圖3:Keras已經證明,基于11個數據源,Google的TensorFlow機器學習庫是最廣泛采用的機器學習軟件。


   Keras的創始人Fran?oisChollet表示,雖然Keras提供了一個高級別的界面,但它并不能處理低級操作。相反,這些可以由Google的TensorFlow或Theano的開源代碼執行的,這是一個在蒙特利爾大學蒙特利爾學習算法研究所(MILA)開發的開源項目。
   使用這些工具,開發人員正在部署基于視覺的應用程序。例如,英特爾已經展示了其與飛利浦合作使用其OpenVINO工具包的系統,該系統可以在不使用GPU的情況下對X射線和計算機斷層掃描(CT)進行深度學習推斷。而使用通用CPU可能需要數小時或數天才能進行此類分析。
   為了擴展現有CPU架構的性能,飛利浦部署了OpenVINO工具包和深度學習方法,提供了比標準CPU方法快200倍的速度來進行深度學習,從而避免了使用gpu的需要。然而,這類工具在醫學成像領域得到了應用。
機器視覺目標
   有了所有這些開發工具,毫無疑問,眾多機器視覺公司正在推出經常使用這些工具包開發專門針對機器視覺應用的軟件的產品(表1)。雖然不愿意討論可以使用哪些工具或者是否也在其產品中使用其他分類工具,但這些公司為開發人員提供了一種評估機器視覺中神經網絡潛力的方法。
   現在已經有許多部署這樣軟件包的案例,例如:在渝美壓鑄公司在基于英特爾計算機視覺和深度學習軟件的系統中部署了英特爾的聯合邊緣計算平臺,以檢測零件鑄造時的缺陷。
   Cognex意識到這些方法的強大功能,于2017年購買了ViDi Systems及其ViDi軟件套件。最近,該軟件由AIS Technologies部署用于氣缸孔檢測系統。



圖4:Cyth Systems展示了其神經視覺軟件如何應用于以下應用:(a)半導體引線框架檢查(b)醫療器械檢查(c)機器人拾取和放置系統



   另一家公司d-fine為Seidenader Maschinenbau開發了一套系統,測試CNNs在醫療產品檢測系統中的性能。現在,研究人員正在分析這些方法與傳統機器視覺方法的有效性。
   Cyth Systems公司擁有自己的基于AI軟件,名為Neural Vision。該軟件已用于各種應用,包括半導體引線框檢測,醫療器械檢查和機器人拾取與定位系統(見圖4) 。
智能相機系統
   盡管許多系統都在基于pc的系統上部署了這樣的軟件,但是相機供應商已經意識到提供智能相機來完成這項任務的機會。比如:IDS成像開發系統和FLIR Systems。
   利用一種專門開發的人工智能視覺應用,IDS的NXT攝像機可以加載預先訓練好的人工神經網絡,而基于fpga的人工智能加速則增加了推理時間。在VISION 2018上,該相機被展示為一個基于人工智能的目標識別系統。此外,FLIR公司的FireFly集成了英特爾公司的Movidius Myriad 2視覺處理單元(VPU),訓練好的神經網絡可以直接加載到該單元上。
   智能相機將運行傳統的機器視覺算法和基于神經網絡的分類器,從而使開發人員在使用算法時具有靈活性。推動這一趨勢的可能是來自谷歌、英特爾和微軟等公司的開源代碼,商業成像軟件開發商將利用這些代碼更快地將此類產品推向市場。