為什麼深度學習沒有取代傳統的計算機視覺?

2021-08-17 05:32:57 字數 2952 閱讀 6444

摘要: 深度學習大潮為什麼淹沒傳統的計算機視覺技術?聽聽大牛怎麼說~

這篇文章是受到論壇中經常出現的問題所創作的:

深度學習是否可以取代傳統的計算機視覺?

這明顯是乙個很好的問題,深度學習(

dl)已經徹底改變了計算機視覺(

cv)和人工智慧。許多曾經看起來不可能解決的問題都解決了,

機器獲得比人類更好的結果

。影象分類可能就是最好的例子。

但深度學習仍然只是解決計算機視覺領域內問題的工具之一。它並不是解決該所有問題的萬能藥。在這篇文章中,我想詳細說明這一點。也就是說,我想闡述一下為什麼傳統的計算機視覺技術仍然非常有用。

但在我討論這些論點之前,我認為有必要首先詳細解釋什麼是

「傳統的計算機視覺

」、深度學習是什麼以及它為什麼如此有破壞力。

特徵提取

的步驟,特徵提取是非常

「有趣的

」。我這篇文章中將要提到一些傳統的計算機視覺技術(包括諸如邊緣檢測

,角點檢測

,物體檢測

等等)。

在使用這些技術時,例如在特徵提取和影象分類方面,我們想的是從一類物件(例如椅子,馬等)的影象中提取盡可能多的特徵,並將這些特徵視為一種「定義」(被稱為「袋」)的物件。然後,你會在其他影象中搜尋這些「定義

」。如果乙個袋子中的大量特徵位於另乙個影象中,則該影象被分類為包含該特定物件(即椅子,馬等)。

這種影象分類特徵提取方法的難點在於,你必須選擇在每個給定影象中查詢哪些特徵。當你嘗試分類的類別數量開始增加,例如10或20

時,這會變得很麻煩並且變得幾乎不可能。你是否尋找邊緣?紋理資訊?使用不同型別的功能可以更好地描述不同類別的物件。如果你選擇使用許多特徵,則必須處理大量引數,所有這些引數都必須由你進行微調。

那麼,深度學習介紹了端到端的學習概念,其中(簡而言之)機器被告知要針對每個特定類別的物件學習要尋找什麼。它為每個物件提供了最具描述性和顯著的特徵。換句話說,神經網路已經被告知發現影象類別中的底層模式。

因此,通過端到端的學習,你不再需要手動決定使用傳統計算機視覺技術來描述你的特徵。

有線雜誌

這樣說道:

例如,如果你想教乙個神經網路來識別乙隻貓,那麼你不要告訴它尋找鬍鬚,耳朵,毛皮和眼睛。你只需要展示成千上萬張貓的**,最終就能解決問題。如果它將狐狸誤分類為貓,你不需要重寫**,你只需要做的是繼續訓練。

下面的描繪了特徵提取(使用傳統的方法)和端到端學習之間的差異:

所以,這是整篇文章的背景。接下來,讓我們來看看為什麼傳統的計算機視覺仍然是必要的,有益的。

首先,深度學習需要資料,很多很多的資料。上面提到的那些著名的影象分類模型都是在大資料集上進行訓練的,這些用於訓練的資料集的前三名是:

比一般影象分類更容易的任務不需要這麼多的資料,但你仍然需要很多資料。如果你無法獲得那麼多的資料,你根本不知道會發生什麼?(確實也有一些技巧可以提高你的訓練資料量,但這些是人為的方法)。

沒有充足的資料,訓練出來的模型一般表現都不好,因為一台機器沒有洞察能力,它不能在沒有看到資料的情況下概括它看到的東西。

對於你來說,看到訓練好的模型並且手動調整一些東西太困難了,因為深度學習模型裡面有數百萬個引數,其中每個引數在訓練過程中都會被調整。從某種意義上說,深度學習模式是乙個黑匣子。

傳統的計算機視覺為你提供了充分的透明度,使你能夠更好地評估和判斷你的解決方案是否可以在訓練環境之外進行工作。你可以深入了解演算法中存在的問題,如果有任何不妥,你可以很容易地弄清楚在**以及需要調整什麼。

這可能是我支援傳統計算機視覺技術研究的最佳理由。訓練深度神經網路需要很長時間,你需要專用硬體(例如,高效能

gpu),在很長的時間內訓練最新的最先進的影象分類模型。

此外,如果你的訓練模型表現不佳,會發生什麼?你必須返回並用不同的訓練引數重做整個過程,而且這個過程有時可能重複數百次。

但有時候這些都是不必要的,因為有時傳統的

cv技術可以比

dl更有效地解決問題,並且**行數更少。

例如,我曾經參與過乙個專案,以檢測通過傳送帶的每個錫罐是否有紅色的勺子。現在,你可以訓練乙個深度神經網路來檢測勺子,或者你可以對紅色上編寫簡單的顏色閾值演算法(紅色的某個範圍內的任何畫素都是白色的,每個其他畫素是黑色的),然後計算你有多少白色畫素。

了解傳統的計算機視覺可能會為你節省大量時間和減少一些不必要的麻煩。

理解傳統的計算機視覺實際上可以幫助你更好地進行深度學習。

例如,計算機視覺中使用的最常見的神經網路是

卷積神經網路

。但什麼是卷積?它實際上是一種廣泛使用的影象處理技術(例如參見

sobel

邊緣檢測

)。了解這可以幫助你了解你的神經網路做了什麼,因此可以更好地設計和調整你嘗試解決的任務。

然後還有一件事叫做預處理。這是經常對你提供的模型的資料進行準備以進行訓練。這些預處理步驟主要通過傳統的計算機視覺技術來完成。例如,如果你沒有足夠的訓練資料,則可以執行稱為資料增加的任務。資料增加可以包括對訓練集中的影象執行隨機旋轉,移位,剪下等,以建立「新」

影象。通過執行這些計算機視覺操作,你可以大大增加你擁有的訓練資料量。

在這篇文章中,我解釋了為什麼深度學習沒有取代傳統的計算機視覺技術,為什麼後者仍應該學習。首先,我發現了

dl經常需要大量資料才能執行的問題。其次,深度學習對於特定任務來說可能會出現過度擬合現象。在這樣的任務中,標準的計算機視覺可以比

dl更有效地解決問題,並且**行數更少。第三,認識傳統的計算機視覺實際上可以讓你更好地進行深度學習。這是因為你可以更好地了解

dl到底正在做什麼,並且你可以執行某些預處理步驟來改善

dl結果。

簡而言之,深度學習只是計算機視覺的工具,當然不是萬能藥。不要只用它,因為它現在是新潮。傳統的計算機視覺技術仍然非常有用,知道它們可以為你節省時間和解決許多麻煩。

為什麼需要深度學習

為了科研專案的需求,作為在博一快結束時轉而進行機器學習領域的研究。周圍沒有同事從事相關的研究,用最快的速度完成了對機器學習和深度學習的了解。我感覺經常問自己的乙個問題就是為什麼要從機器學習到深度學習?對我的科研工作有沒有幫助。我主要看了兩個資料 deep learning book mit intr...

為什麼是深度學習

是不是深度學習的hidden layer越多越好,我們並不是單純的研究引數增多的所帶來的效能改善,我們關注的是相同的引數情況下,是不是深度越深越好。那麼是什麼樣的原因出現上邊的情況呢?乙個合理的解釋就是modularization。modularization把本來複雜的問題變簡單,即使traini...

深度學習 為什麼深度學習需要大記憶體?

本文主要譯介自graphcore在2017年1月的這篇部落格 why is so much memory needed for deep neural networks。介紹了深度學習中記憶體的開銷,以及降低記憶體需求的幾種解決方案。考慮乙個單層線性網路,附帶乙個啟用函式 h w 1x w 2h w...