吳恩達深度學習筆記(73)-更多的邊緣檢測方法

更多邊緣檢測內容(More edge detection)

你已經見識到用卷積運算實現垂直邊緣檢測,在本筆記中,你

將學習如何區分正邊和負邊,這實際就是由亮到暗與由暗到亮的區別,也就是邊緣的過渡。你還能瞭解到其他類型的邊緣檢測以及如何去實現這些算法,而不要總想著去自己編寫一個邊緣檢測程序,讓我們開始吧。

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

還是上一個筆記中的例子,這張6×6的圖片,左邊較亮,而右邊較暗,將它與垂直邊緣檢測濾波器進行卷積,檢測結果就顯示在了右邊這幅圖的中間部分。

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

現在這幅圖有什麼變化呢?

它的顏色被翻轉了,變成了左邊比較暗,而右邊比較亮。現在亮度為10的點跑到了右邊,為0的點則跑到了左邊。如果你用它與相同的過濾器進行卷積,最後得到的圖中間會是-30,而不是30。如果你將矩陣轉換為圖片,就會是該矩陣下面圖片的樣子。現在中間的過渡部分被翻轉了,之前的30翻轉成了-30,表明是由暗向亮過渡,而不是由亮向暗過渡。

如果你不在乎這兩者的區別,你可以取出矩陣的絕對值。但這個特定的過濾器確實可以為我們區分這兩種明暗變化的區別。

再來看看更多的邊緣檢測的例子,我們已經見過這個3×3的過濾器,它可以檢測出垂直的邊緣。所以,看到右邊這個過濾器,我想你應該猜出來了,它能讓你檢測出水平的邊緣。提醒一下,一個垂直邊緣過濾器是一個3×3的區域,它的左邊相對較亮,而右邊相對較暗。相似的,右邊這個水平邊緣過濾器也是一個3×3的區域,它的上邊相對較亮,而下方相對較暗。

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

這裡還有個更復雜的例子,左上方和右下方都是亮度為10的點。如果你將它繪成圖片,右上角是比較暗的地方,這邊都是亮度為0的點,我把這些比較暗的區域都加上陰影。而左上方和右下方都會相對較亮。如果你用這幅圖與水平邊緣過濾器卷積,就會得到右邊這個矩陣。

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

再舉個例子,這裡的30(右邊矩陣中綠色方框標記元素)代表了左邊這塊3×3的區域(左邊矩陣綠色方框標記部分),

這塊區域確實是上邊比較亮,而下邊比較暗的,所以它在這裡發現了一條正邊緣。而這裡的-30(右邊矩陣中紫色方框標記元素)又代表了左邊另一塊區域(左邊矩陣紫色方框標記部分),這塊區域確實是底部比較亮,而上邊則比較暗,所以在這裡它是一條負邊

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

再次強調,我們現在所使用的都是相對很小的圖片,僅有6×6。

但這些中間的數值,比如說這個10(右邊矩陣中黃色方框標記元素)代表的是左邊這塊區域(左邊6×6矩陣中黃色方框標記的部分)。這塊區域左邊兩列是正邊,右邊一列是負邊,正邊和負邊的值加在一起得到了一箇中間值。但假如這個一個非常大的1000×1000的類似這樣棋盤風格的大圖,就不會出現這些亮度為10的過渡帶了,因為圖片尺寸很大,這些中間值就會變得非常小。

總而言之,通過使用不同的過濾器,你可以找出垂直的或是水平的邊緣。但事實上,對於這個3×3的過濾器來說,我們使用了其中的一種數字組合。

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

但在歷史上,在計算機視覺的文獻中,曾公平地爭論過怎樣的數字組合才是最好的,所以你還可以使用這種:

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

這個叫做Sobel的過濾器,它的優點在於增加了中間一行元素的權重,這使得結果的魯棒性會更高一些。

但計算機視覺的研究者們也會經常使用其他的數字組合,比如這種:

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

這叫做Scharr過濾器,它有著和之前完全不同的特性,實際上也是一種垂直邊緣檢測,如果你將其翻轉90度,你就能得到對應水平邊緣檢測。

隨著深度學習的發展,我們學習的其中一件事就是當你真正想去檢測出複雜圖像的邊緣,你不一定要去使用那些研究者們所選擇的這九個數字,但你可以從中獲益匪淺。把這矩陣中的9個數字當成9個參數,並且在之後你可以學習使用反向傳播算法,其目標就是去理解這9個參數。

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

當你得到左邊這個6×6的圖片,將其與這個3×3的過濾器進行卷積,將會得到一個出色的邊緣檢測。這就是你在下節筆記中將會看到的,把這9個數字當成參數的過濾器,通過反向傳播,你可以學習這種

吳恩達深度學習筆記(73)-更多的邊緣檢測方法

的過濾器,或者Sobel過濾器和Scharr過濾器。還有另一種過濾器,這種過濾器對於數據的捕捉能力甚至可以勝過任何之前這些手寫的過濾器。相比這種單純的垂直邊緣和水平邊緣,它可以檢測出45°或70°或73°,甚至是任何角度的邊緣。

所以將矩陣的所有數字都設置為參數,通過數據反饋,讓神經網絡自動去學習它們,我們會發現神經網絡可以學習一些低級的特徵,例如這些邊緣的特徵。儘管比起那些研究者們,我們要更費勁一些,但確實可以動手寫出這些東西。不過構成這些計算的基礎依然是卷積運算,使得反向傳播算法能夠讓神經網絡學習任何它所需要的3×3的過濾器,並在整幅圖片上去應用它。這裡,這裡,還有這裡(左邊矩陣藍色方框標記部分),去輸出這些,任何它所檢測到的特徵,不管是垂直的邊緣,水平的邊緣,還有其他奇怪角度的邊緣,甚至是其它的連名字都沒有的過濾器。

所以這種將這9個數字當成參數的思想,已經成為計算機視覺中最為有效的思想之一。

在接下來的課程中,我們將詳細去探討如何使用反向傳播去讓神經網絡學習這9個數字。但在此之前,我們需要先討論一些其它細節,比如一些基礎的卷積運算的變量。

在下面兩節筆記中,我將與你們討論如何去使用padding,以及卷積各種不同的發展,這兩節內容將會是卷積神經網絡中卷積模塊的重要組成部分,所以我們下節筆記再見。


分享到:


相關文章: