禪與奶罩識別藝術

在昨天的卷積:如何成為一個很厲害的神經網路 - 知乎專欄中,熱心網友提出了這樣的問題:

該文在卷積神經網路的構成上講解的比較直觀,但是沒有深入地探討數學原理。本文將詳細介紹卷積濾波器的具體機理,當然不要擔心數學問題,只要能熟練掌握百以內加減法九九乘法表就可以。

之前在微博上關於神經網路的探討中,話題走向奇怪地走向了奶子(計劃通り),並且王司圖也做出了召喚柏木由紀的承諾,所以這次就以柏木由紀的照片為例,講解圖像處理的基本法。

01. 暗中觀察

現在我們談的「人工智慧」都是弱人工智慧,更確切地說,還是輔助計算工具。我們不能因為有了神經網路,就像卡茲一樣停止思考。

所以不管藉助神經網路解決任何問題,第一步也是最關鍵的一步,就是了解你的問題本身。反映在具體的應用上,就是要摸清業務背後的邏輯關係,而不是把數據往黑盒裡一扔,開始準備煉丹。如果一遍摸不清,那就再摸一遍。

現在我們要做一個物體識別的程序,上圖中可供識別的物體並不多,唯一涼鞋、一褲頭、一奶罩而已,那就奶罩吧。作為一個入門程序,現在那麼早就處理彩色圖片,是不理智、不合適的。所以我們要進行一些簡化,從皮相中剝離出骨相,把最核心的數學原理公然露出,放置Play。

經過「灰度->閾值」兩步,彩圖變成了黑白圖。接下來我們要從計算機視覺的角度去司圖,所以眼前的黑不是黑,你說的白也不是白,所見諸相非相,只是像素值,0 or 1。

02. 見微知著

暫時拋開圖片背景, 經過觀察可知,要從人的身體上識別出奶罩和褲頭,本質上是從白花花中尋找黑乎乎,其實就是從0中找到1。

那我們是不是需要整個奶罩呢?非也,只需要探測出奶罩的邊緣就可以了,這就如同棋道,金角銀邊爛肚皮,只要圍住了眼,就佔住了氣,從而控住了勢。

卷積濾波器是一個比圖片尺寸小的矩陣,這裡設為3x3。我們把圖片縮放至像素級(猜猜這是哪個部位),這裡每一個小方格背後就是0或1了。卷積核在輸入圖像上來回滾動、摩擦,那麼基本上會遇到三種區域(橙框):

  • 全白(肉體)
  • 全黑(奶罩)
  • 黑白(肉體和奶罩的邊緣)

和下圖的對應關係應該也很明顯。

這時候,我們的卷積核就像情趣羽毛,掃遍每一個角落, 撩撥你的動感地帶。

03. 掐指一算

在上文的圖表中,我們已經見識到了多種濾波器和對應的濾鏡效果,比如邊緣檢測、銳化、均值模糊、高斯模糊。

來看第三種邊緣檢測卷積核,其矩陣為:

filter = nleft[ begin{matrix}nn     -1 & -1 & -1nn     -1 &   8 & -1 nn     -1 & -1 & -1nnend{matrix}nright]

再取包含邊緣的5x5區域,對應矩陣:

image = nleft[ begin{matrix}nn     0 & 0 & 1 & 1 & 1nn     0 & 0 & 1 & 1 & 1 nn     0 & 0 & 1 & 1 & 1 nn     0 & 0 & 1 & 1 & 1 nn     0 & 0 & 1 & 1 & 1 nnnend{matrix}nright]

現在這個3x3矩陣(濾波器)要在5x5矩陣上摸一遍,當然摸不是為了爽,而是為計算一個值。計算方式如下圖,黃色方格與紅色數字即是卷積濾波器,而計算的方式就是重疊的對應元素相乘,再相加。(注意:這不是真正的「矩陣乘法」)

1 times 1 + 1 times 0 + 1 times 1 + 0 times 0 + 1 times 1 + 1 times 1 + 1 times 0 + 0 times 1 + 0 times 0 + 1 times 1 = 4

因為這裡的image在豎直方向上是不變的,所以只需要讓filter沿著最上端滑一圈就行了,總共有三次計算:

1.

2.

3.

最後生成的完整特徵映射(Feature Map)將是:

特徵映射的單元位置對應的是卷積核中心(8)的位置,特徵映射的取值有三種:

  • -3:探測到奶罩邊緣,且卷積核位於奶罩外側
  • 3:探測到奶罩邊緣,且卷積核位於奶罩內側
  • 0: 沒有探測到邊緣特徵

現在你應該已經明白了,為什麼濾波器可以提取圖片的特徵。

歡迎在評論中提問、交流,也可以到集智的社區中留言。

近期,我們與「深度學習Keras」群(119427073)的群主@BigMoyan 、@SCP-173 達成了戰略合作,專門設立了「深度學習Keras」版塊,現在已經開始了資料分享和技術問答,歡迎感興趣的朋友們關注。

推薦閱讀:

底圍67 上圍86 到底應該穿神馬size的內衣!!!!?

TAG:卷积神经网络CNN | 柏木由纪 | 奶罩 |