天天看點

深度學習與傳統計算機視覺(第一部分,第二部分)

作者:Engineer Fu

版權聲明: 本翻譯文章為原文《Deep Learning vs. Traditional Computer Vision》原始來源:https://arxiv.org/pdf/1910.13796.pdf。(作者:Niall O' Mahony, Sean Campbell, Anderson Carvalho, Suman Harapanahalli, Gustavo Velasco-Hernandez, Lenka Krpalkova, Daniel Riordan, Joseph Walsh)。作者和貢獻者對原文内容享有版權。請閱讀原文以了解詳細資訊和權限限制。翻譯權歸本翻譯者所有,非商業用途,僅用于學術研究和交流目的。未經授權,不得用于商業目的或其他侵權行為。本翻譯保留所有權利。如有引用或使用,請注明原文出處和作者。本翻譯文章中的内容僅供參考,可能存在錯誤或不準确之處,請讀者自行核實原文内容。

[ ]内為參考文獻,請參閱原PDF内連結。

摘要:深度學習已經推動了數字圖像處理領域的可能性極限。然而,這并不意味着在深度學習興起之前多年中不斷發展的傳統計算機視覺技術已經過時。本文将分析每種方法的優勢和劣勢。本文旨在促進對是否應該保持對經典計算機視覺技術的了解進行讨論。文章還将探讨如何将計算機視覺的兩個方面結合起來。本文回顧了幾種最近的混合方法,這些方法已經表現出提高計算機視覺性能并解決深度學習不适用的問題的能力。例如,将傳統計算機視覺技術與深度學習相結合在新興領域(如全景視覺和3D視覺)中非常流行,這些領域的深度學習模型尚未完全優化。

關鍵詞:計算機視覺,深度學習,混合技術。

1 引言

深度學習(DL)被用于數字圖像處理領域來解決複雜的問題(例如圖像着色、分類、分割和檢測)。卷積神經網絡(CNNs)等DL方法主要通過大資料和豐富的計算資源來提高預測性能,并推動了可能性的邊界。曾經被認為無法解決的問題現在以超乎人類準确率的方式被解決。圖像分類就是一個典型的例子。自從2012年Krizhevsky、Sutskever和Hinton重新點燃了這個領域以來[1],DL由于與傳統方法相比具有顯著的性能優勢而一直主導着該領域。

DL是否正在使傳統計算機視覺(CV)技術過時?DL是否已經取代了傳統的計算機視覺?在DL似乎如此有效的情況下,是否仍然需要學習傳統CV技術?這些都是近年來社群中提出的問題[2],本文旨在解答這些問題。

另外,DL并不能解決所有CV問題。在某些問題上,傳統的具有全局特征的技術可能是更好的解決方案。DL的出現可能為利用傳統技術克服DL帶來的諸多挑戰打開許多可能性(例如計算能力、時間、準确性、輸入特征和數量等等)。

本文将對深度學習與更傳統的手工特征定義方法進行比較,後者在計算機視覺領域占主導地位。近年來,深度學習取得了很大進展,以至于本文無法涵蓋深度學習在計算機視覺領域中處理目前最相關問題的許多方面和子領域。本文将回顧計算機視覺中的傳統算法方法,尤其是它們作為深度學習的适當替代品的應用,以及在補充深度學習和解決深度學習無法應對的問題方面的應用。

接下來,本文将回顧将深度學習與計算機視覺相結合的一些最新活動,重點關注最先進的技術在新興技術(如3D感覺,即對象配準、對象檢測和3D點雲的語義分割)方面的應用。最後,我們将讨論使3D深度學習性能達到與2D深度學習同等高度的發展和可能的方向,并展望增加3D使用量對計算機視覺領域的總體影響。

2 深度學習與傳統計算機視覺的比較

2.1 深度學習是什麼

要對深度學習有基本的了解,我們需要考慮描述性分析和預測性分析之間的差別。

描述性分析涉及定義一個可了解的數學模型,描述我們希望觀察的現象。這包括收集關于一個過程的資料,形成關于資料中的模式的假設,并通過将我們形成的描述性模型的結果與實際結果進行比較來驗證這些假設[3]。然而,産生這樣的模型是有風險的,因為科學家和工程師常常由于對某些複雜、隐藏或非直覺現象的無知或了解不足而忽略了未模組化的變量[4]。

預測性分析涉及發現潛在現象的規律,并形成預測模型,考慮到所有可能的幹擾因素,最小化實際結果與預測結果之間的誤差[3]。機器學習拒絕了傳統的程式設計範式,其中問題分析被訓練架構所取代,系統接受大量的訓練模式(一組已知期望輸出的輸入集),它通過學習這些模式并用于計算新的模式[5]。

DL是機器學習的一個子集。DL主要基于人工神經網絡(ANNs),這是一種受人腦功能啟發的計算範式。與人腦類似,它由許多計算單元或“神經元”組成,每個神經元執行簡單的操作并互相互動以做出決策[6]。深度學習關注的是在神經網絡的許多層之間準确、高效且無需監督地進行學習或“信用配置設定”,并且由于處理硬體的進步,它近來備受關注[7]。自組織和利用小單元之間的互相作用已被證明對于複雜的非線性過程模型表現更好,具有更好的容錯性和對新資料的适應性[7]。

2.2 深度學習的優勢

深度學習的快速進展以及裝置性能的提升,包括計算能力、記憶體容量、功耗、圖像傳感器分辨率和光學技術,已經提高了性能和成本效益,進一步加速了基于視覺的應用的傳播。與傳統計算機視覺技術相比,深度學習使得計算機視覺工程師在圖像分類、語義分割、目标檢測和同時定位與地圖建構(SLAM)等任務中能夠實作更高的準确性。由于深度學習中使用的神經網絡是經過訓練而不是程式設計的,是以采用這種方法的應用通常需要較少的專家分析和微調,并能夠充分利用當今系統中大量的視訊資料。此外,深度學習提供了更強大的靈活性,因為卷積神經網絡模型和架構可以使用定制資料集進行重新訓練,适用于任何用例,這與計算機視覺算法通常更加依賴特定領域的特點形成了對比。

以在移動機器人上進行目标檢測的問題為例,我們可以比較計算機視覺中的兩種算法類型:

傳統方法是使用成熟的計算機視覺技術,例如特征描述符(如SIFT、SURF、BRIEF等)來進行目标檢測。在深度學習出現之前,對于圖像分類等任務,需要進行特征提取的步驟。特征是圖像中小的“有趣”、描述性或資訊豐富的區域。在這一步驟中可能涉及到邊緣檢測、角點檢測或門檻值分割等多個計算機視覺算法。從圖像中提取盡可能多的特征,并且這些特征形成每個目标類别的定義(稱為“詞袋”)。在部署階段,搜尋這些定義在其他圖像中的比對。如果另一幅圖像中有足夠數量的特征與某個詞袋相比對,則将該圖像分類為包含特定目标(例如椅子、馬等)的圖像。

這種傳統方法的困難之處在于需要選擇每個給定圖像中哪些特征是重要的。随着需要分類的類别數量增加,特征提取變得越來越繁瑣。由CV工程師的判斷和長時間的試錯過程來決定哪些特征最能描述不同類别的目标。此外,每個特征定義都需要處理大量參數,而所有這些參數都必須由CV工程師進行精細調整。

深度學習引入了端到端學習的概念,其中機器僅接收一個圖像資料集,并對其中每個圖像進行注釋,标明圖像中存在哪些類别的目标[7]。然後,深度學習模型在給定資料上進行“訓練”,其中神經網絡發現圖像類别的潛在模式,并自動确定針對每個特定目标類别的最具描述性和顯著性特征。深度神經網絡已經被證明在性能上遠遠優于傳統算法,盡管在計算需求和訓練時間方面有一些權衡。随着計算機視覺中所有最先進的方法采用這種方法,CV工程師的工作流程發生了巨大的變化,其中提取手工設計特征的知識和專業技能已被替換為疊代深度學習架構的知識和專業技能,如圖1所示。

深度學習與傳統計算機視覺(第一部分,第二部分)

圖1. (a) 傳統計算機視覺工作流程 vs. (b) 深度學習工作流程。圖檔來源:[8]。

近年來,卷積神經網絡(CNNs)的發展在計算機視覺領域産生了巨大的影響,并大幅提升了對象識别的能力[9]。這一進展的爆發得益于計算能力的增加,以及用于訓練神經網絡的資料量的增加。最近,各種深度神經網絡架構在計算機視覺中的廣泛采用已經顯而易見,可以看出這一點,即具有裡程碑意義的論文《使用深度卷積神經網絡進行ImageNet分類》已經被引用了3000多次[2]。

CNNs利用卷積核(也稱為濾波器)來在整個圖像上檢測特征(例如邊緣)。卷積核實際上是一個矩陣,其中包含了被訓練用于檢測特定特征的權重值。正如其名稱所示,CNNs的主要思想是在給定輸入圖像上進行空間卷積,以檢查是否存在它所要檢測的特征。為了提供代表特定特征是否存在的置信度值,通過計算卷積操作,即卷積核與覆寫卷積核的輸入區域的點積來實作(卷積核所關注的原始圖像區域稱為感受野[10])。

為了友善學習卷積核的權重,卷積層的輸出與偏置項相加,然後輸入到非線性激活函數中。激活函數通常是非線性函數,如Sigmoid、TanH和ReLU(修正線性單元)。根據資料的性質和分類任務的不同,相應地選擇這些激活函數[11]。例如,ReLU具有更好的生物學表示(大腦中的神經元要麼激活,要麼不激活)。是以,在圖像識别任務中,它産生了有利的結果,因為它不太容易受到梯度消失問題的影響,并且能夠生成更稀疏、更高效的表示[7]。

為了加速訓練過程并減少網絡消耗的記憶體量,卷積層通常後面會跟一個池化層,用于去除輸入特征中的備援。例如,最大池化在輸入上移動一個視窗,然後輸出該視窗内的最大值,進而有效地減少圖像中的重要像素[7]。如圖2所示,深度CNN可能有幾對卷積和池化層。最後,全連接配接層将前一層的體積展平為特征向量,然後通過一個密集網絡計算輸出類别/特征的得分(置信度或機率)。然後,該輸出傳遞給一個回歸函數,例如Softmax [12],将所有元素映射到一個元素之和為一的向量[7]。

深度學習與傳統計算機視覺(第一部分,第二部分)

圖2. 卷積神經網絡的構模組化塊。圖檔來源:[13]。

但深度學習仍然隻是計算機視覺的工具。例如,在計算機視覺中最常用的神經網絡是卷積神經網絡(CNN)。那麼什麼是卷積?實際上,它是一種廣泛使用的圖像處理技術(例如,可以看到Sobel邊緣檢測)。深度學習的優勢是顯而易見的,對于回顧最先進的技術,這超出了本文的範圍。然而,深度學習并不是解決所有問題的靈丹妙藥,正如我們将在本文後續的部分中看到,有些問題和應用仍更适合使用傳統的計算機視覺算法。

2.3 傳統計算機視覺技術的優勢

本節将詳細介紹傳統特征為基礎的方法,如下所列,它們在提高計算機視覺任務性能方面被證明是有效的:

  • 尺度不變特征變換(Scale Invariant Feature Transform,SIFT)[14]
  • 加速穩健特征(Speeded Up Robust Features,SURF)[15]
  • 加速段測試特征(Features from Accelerated Segment Test,FAST)[16]
  • 霍夫變換(Hough transforms)[17]
  • 幾何哈希(Geometric hashing)[18]

例如,像SIFT和SURF這樣的特征描述符通常與傳統機器學習分類算法,如支援向量機和K-最近鄰算法結合使用,以解決上述計算機視覺問題。

深度學習有時會過度複雜,因為通常傳統計算機視覺技術可以比深度學習更高效地解決問題,并且代碼行數更少。像SIFT和甚至簡單的顔色門檻值和像素計數算法都不是針對特定類别的,它們非常通用,對于任何圖像都執行相同的操作。相比之下,從深度神經網絡中學到的特征是特定于您的訓練資料集的,如果資料集構造不好,那麼在與訓練集不同的圖像上性能可能不好。是以,SIFT和其他算法通常用于諸如圖像拼接/三維網格重建等不需要特定類别知識的應用。這些任務已經證明可以通過訓練大型資料集來實作,但這需要巨大的研究工作,對于一個封閉的應用而言并不實際。在選擇針對特定計算機視覺應用的方法時,需要運用常識。例如,在裝配線傳送帶上對兩類産品進行分類,一類産品塗有紅漆,另一類塗有藍漆。如果能收集到足夠的資料進行訓練,深度神經網絡是有效的選擇。然而,同樣的目标也可以通過簡單的顔色門檻值處理來實作。有些問題可以用更簡單、更快速的技術來解決。

如果深度神經網絡在訓練資料之外表現不佳怎麼辦?如果訓練資料集有限,那麼機器可能會過度拟合訓練資料,無法對手頭的任務進行泛化。由于深度神經網絡内部有數百萬個參數,并且它們之間存在複雜的互相關系,手動調整模型參數将非常困難。是以,深度學習模型在這方面被批評為“黑盒子” [5]。傳統計算機視覺技術具有完全的透明性,可以判斷解決方案在訓練環境之外是否有效。計算機視覺工程師可以從問題中獲得洞見,然後将其轉化為算法,并且如果出現任何問題,可以調整參數以在更廣泛的圖像範圍内良好地工作。

如今,當問題可以簡化以便在低成本微控制器上部署,或者通過突出資料中的某些特征、增加資料[19]或輔助資料集注釋[20]來限制深度學習技術的問題時,傳統技術仍然得到應用。在本文後續部分中,我們将讨論許多圖像轉換技術如何用于改進神經網絡的訓練。最後,計算機視覺領域還存在許多更具挑戰性的問題,例如:機器人技術[21]、增強現實[22]、自動全景拼接[23]、虛拟現實[24]、3D模組化[24]、運動估計[24]、視訊穩定化[21]、動作捕捉[24]、視訊處理[21]和場景了解[25]等問題,并不容易通過深度學習的可微分方法輕松實作,而使用“傳統”技術的解決方案則能夠從中受益。

繼續閱讀