在2017年5月舉辦的嵌入式視覺峰會(EmbeddedVisionSummit)上,我有幸聽到了加州大學伯克利分校的JitendraMalik教授的一場精彩的主題演講。Malik在計算機視覺領(lǐng)域擁有30年的研究和教學積累,他解釋說,他一直對深度神經(jīng)網(wǎng)絡(luò)(DNN)對計算機視覺的價值持懷疑態(tài)度,但是在面對日益增長的令人印象深刻的結(jié)果時,他最終改變了主意。
毫無疑問,DNN已經(jīng)改變了計算機視覺領(lǐng)域。DNN在識別目標、在圖像內(nèi)定位目標以及確定哪個像素屬于哪個目標等方面,都能提供更好的結(jié)果。即使是像光流和立體匹配這樣的已經(jīng)能用傳統(tǒng)技術(shù)很好地解決的問題,現(xiàn)在也可以用深度學習技術(shù)獲得更好的解決方案。深度學習的成功,遠遠超出了計算機視覺領(lǐng)域,它還涉及到語音識別等眾多領(lǐng)域。
由于這些令人印象深刻的成功,深度學習在科研和產(chǎn)業(yè)領(lǐng)域吸引了大量的關(guān)注和投資。這些關(guān)注和投資,正在加速深度學習算法和有效實施這些算法方面的進展,從而使深度學習技術(shù)能夠集成到越來越多的系統(tǒng)中,包括那些具有顯著的成本和功率限制的系統(tǒng)。
深度學習真的適合所有問題嗎?
這自然就提出了一個問題:如果你正在將計算機視覺功能集成到你的系統(tǒng)或應(yīng)用中,你是否應(yīng)該考慮除了深度學習以外的其他任何技術(shù)?在我的咨詢實踐中,越來越多的客戶希望通過深度學習來解決計算機視覺問題。但是我們發(fā)現(xiàn),在某些情況下,其他類型的算法更合適解決問題。
為什么?
首先,視覺世界是無限變化的,系統(tǒng)設(shè)計者有無數(shù)種方法使用視覺數(shù)據(jù)。其中有一些應(yīng)用案例,如目標識別和定位,都可以通過深度學習技術(shù)得到很好的解決。因此,如果你的應(yīng)用需要一種算法來識別家具,那么你很幸運:你可以選擇一種深度神經(jīng)網(wǎng)絡(luò)算法,并使用自己的數(shù)據(jù)集對其進行重新編譯。
我們要先談?wù)勥@個數(shù)據(jù)集。訓練數(shù)據(jù)對有效的深度學習算法至關(guān)重要。訓練一個DNN通常需要數(shù)千個帶標記的訓練圖像(即用所需輸出標記的圖像),以及數(shù)千個帶標記的圖像來評估候選訓練算法。當然,這些數(shù)據(jù)的性質(zhì)非常重要:訓練和驗證數(shù)據(jù),必須能夠代表算法要處理的情況的多樣性。如果很難或者不可能獲得足夠多樣化的訓練數(shù)據(jù),那么最好還是使用傳統(tǒng)技術(shù)。
考慮使用其他技術(shù)而非DNN的另一個原因是,如果你要執(zhí)行一項計算機視覺任務(wù),而在以往的報道記載中,尚未使用DNN算法來解決這樣問題。在這種情況下,你可以嘗試使用為其他目的而創(chuàng)建的現(xiàn)有DNN算法;或者你也可以嘗試創(chuàng)建一個新的DNN算法來滿足自身需求。不管怎樣,你都是處在研究領(lǐng)域。這可能會令人望而生畏,因為很少有人和組織有開發(fā)新型深度神經(jīng)網(wǎng)絡(luò)算法的經(jīng)驗。而且,很難知道你是否能在可用的時間、精力和計算資源限度內(nèi)取得成功。
傳統(tǒng)技術(shù)與DNN的結(jié)合
當我們深入研究客戶的需求時,我們經(jīng)常發(fā)現(xiàn),最初看起來像單一視覺問題的任務(wù),往往可以分解為幾個子任務(wù)。通常,在這些子任務(wù)中,自然有一些子任務(wù)是適合使用DNN解決的,而另一些子任務(wù)則不適合用DNN來解決。對于這些項目,結(jié)合DNN和傳統(tǒng)技術(shù)的解決方案,通常是更好的選擇,而不是試圖將整個問題都強制轉(zhuǎn)向DNN解決方案。
記住機器學習技術(shù)是多種多樣、變化多端的,這一點也非常重要。早在深度神經(jīng)網(wǎng)絡(luò)普及之前,其他機器學習技術(shù)(如支持向量機,SVM)就已經(jīng)被用于解決很多視覺問題,并且今天仍然很有用。
鑒于DNN在研究和技術(shù)方面的巨大投資,很明顯,DNN作為首選解決方案的適用范圍,將會繼續(xù)迅速擴大。然而,在可預見的未來,許多應(yīng)用將通過傳統(tǒng)技術(shù)(包括其他形式的機器學習)或通過深度學習和傳統(tǒng)算法的組合,來獲得最好的解決方案。