卷积网络中的通道(Channel)理解
卷積網絡中的通道(Channel)理解
卷積網絡中有一個很重要的概念,通道(Channel),也有叫特征圖(feature map)的。
卷積網絡中主要有兩個操作,一個是卷積(Convolution),一個是池化(Pooling)。
其中池化層并不會對通道之間的交互有影響,只是在各個通道中進行操作。
而卷積層則可以在通道與通道之間進行交互,之后在下一層生成新的通道,其中最顯著的就是Incept-Net里大量用到的1x1卷積操作。基本上完全就是在通道與通道之間進行交互,而不關心同一通道中的交互。
一般我們說圖像的通道,有兩種含義的解釋
一是圖像的色彩通道(如RGB),二是特征圖(卷積過濾器的輸出結果)的輸出通道(out_channel)
實際上,兩者本質上是相同的,都是表示之前輸入上某個特征分布的數據。
那么先來看看為什么可以說它們是相同的。
一、圖像的色彩通道
通道這個概念最初指的是電子圖片中RGB通道,或者CMYK通道這樣的配色方案,比如說一張RGB的64x64的圖片,可以用一個64x64x3的張量來表示。這里的3指的就是通道,分別為紅色(Red)、綠色(Green)、藍色(Blue)三個通道。
因為這三種顏色是三原色,所以基本上可以合成任何人眼可分辨的顏色。而三個通道的圖片也基本上可以表示所有圖片了。
在計算機視覺處理中,一般圖片數據除了是單通道的灰度圖片外,就是RGB通道的彩色圖片了。
對RGB圖片進行卷積操作后,根據過濾器的數量就可以產生更多的通道。事實上,多數情況還是叫后面的卷積層中的通道為,特征圖。但實際上在張量表示下,特征圖和前面提到的通道差不多,有時候后面的也都叫通道了。
當把通道和特征圖當成是一個東西,然后來看RGB圖片中的通道是怎么獲得的就會非常有意思了。
首先通道需要卷積操作來完成,也就是說我們需要三個過濾器來生成RGB通道。那么這個過濾器是什么呢,又是以什么為輸入呢。
拿以上數碼相機成像過程來類比卷積的話,就會發現,這里的紅綠藍三色的濾光片,正好可以類比成卷積中的過濾器,外界射進來的光就是輸入,通過這三個特征過濾器,獲得了一個三通道的輸出。
那么卷積核大小是多大呢,這里可以說是感光元件上一個像素大小,而原始的射入的光的精度則是光子級別的,對這個光的一個像素大小的范圍進行卷積,獲得這個范圍當前過濾器捕捉特征的強度。也就是綠光、紅光、藍光的強度。
二、通道與特征
這樣看來,圖片中的通道就是某種意義上的特征圖。一個通道是對某個特征的檢測,通道中某一處數值的強弱就是對當前特征強弱的反應。
如一個藍色通道中,如果是256級的話,那么一個像素如果是255的話那么就表示藍色度很大。從這個角度來看灰度圖片的話,就會發現其實灰度圖片就是一個白色過濾器生成的特征圖。
于是卷積網絡中的特征圖,也能夠很直接地理解為通道了。
之后通過對一定范圍的特征圖進行卷積,可以將多個特征組合出來的模式抽取成一個特征,獲得下一個特征圖。之后再繼續,對特征圖進行卷積,特征之間繼續組合,獲得更復雜的特征圖。
又因為池化層的存在,會不斷提取一定范圍內最強烈的特征,并且縮小張量的大小,使得大范圍內的特征組合也能夠捕捉到。
對單個特征圖進行視覺化的話,會發現它是在對什么特征進行捕捉。最近一個很有意思的Blog文章就展示了這方面的結果,很有意思。
通過特征角度來看卷積網絡的話,那么1x1卷積也就很好理解了。即使1x1卷積前后的張量大小完全不變,比如說16x16x64 -> 16x16x64這樣的卷積,看上去好像是沒有變化。但實際上,可能通過特征之間的互動,已經由之前的64個特征圖組成了新的64個特征圖。
有時候我理解一個這樣的1x1卷積操作,就會把它當成是一次對之前特征的整理。
三、通道的終點
這樣子不停卷積下去,直到最后一層,剩下一個一維向量時,每個標量代表著一個通道,捕捉到的特征又是什么呢。
如果是物體分類任務的話,就正是我們需要輸出判別的一個個物體類別。
比如說第一個數是代表貓特征,第二個數代表狗特征,第三個代表人… 這個時候去從里面選數值最大那個當做分類的種類就好了。
到這里可能仔細的人會注意,最后幾層不是沒卷積操作嗎,而是全連接網絡。
一個概念上需要澄清的是,雖然說1x1卷積,而且也從融合特征角度,給了它特殊的理解。但如果再仔細看看的話,就會發現實際上1x1卷積就是全連接網絡。所以我們可以把最后的1x1網絡當成某種程度上的1x1卷積。
上面的網絡最后幾層,將張量展平然后輸入全連接網絡。因為剩下的特征圖中都保留了很重要的信息,為了利用所有的信息,并且讓它們獲得足夠的交互,所以直接輸入全連接網絡,獲得最后的特征向量。
這個特征向量能夠用來干什么呢。一個很有趣的應用案例是Siamese網絡。輸入一張臉,輸出一個128的特征向量,于是這個向量就類似于ID號碼。
之后再輸入一張臉,得到一個特征向量,這時候只需要比較一下獲得的兩個特征向量就能夠知道這兩張臉是不是同一個人。
如果將最后的特征向量視覺化,或許我們還能發現,向量中每個標量所代表的特征,比如說眼睛之間的間距,膚色…
用本文的通道來說的話,最后獲得了一個128個通道向量表示。
四、通道的參數
首先,對于卷積核(或稱為卷積過濾器)的大小,一個卷積核的通道數與它進行卷積的輸入必須是相同。
例如:32*32*3的圖像的卷積核通道數必須是3,如5*5*3。
在這個卷積核中卷積層數的參數3與輸入的通道數3是相同的(對于三個通道的輸入而言)。
其次,對于卷積運算,一個卷積核經過計算得到的一定是一個映射,一個數字。
接著,對于卷積核的深度,就是有幾個卷積核。下圖中就是有五個卷積核,即卷積核的深度是5。
例子:
假設現有一個為 6×6×3的圖片樣本,使用 3×3×3 的卷積核(filter)進行卷積操作。此時輸入圖片的 channels 為 3
而卷積核中的 in_channels 與 需要進行卷積操作的數據的 channels 一致(這里就是圖片樣本,為3)。
然后進行卷積,卷積核中的27個數字與分別與樣本對應相乘后,再進行求和,得到第一個結果。依次進行。由于只有一個卷積核(卷積核數為1),所以最終得到的結果為 4×4×1, out_channels 為 1
在實際應用中,都會使用多個卷積核。這里如果再加一個卷積核(卷積核數為2),就會得到 4×4×2 的結果
總結
以上是生活随笔為你收集整理的卷积网络中的通道(Channel)理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全栈项目【尚医通】预约挂号系统项目介绍
- 下一篇: 2012年5月《苹果的安全之缺》