1. 程式人生 > 其它 >TF01—卷積計算過程

TF01—卷積計算過程

TF01—卷積計算過程

在之前我們使用六步法構建了全連線網路,訓練了Minist資料集和Fashion資料集,實現了影象識別應用

全連線網路中的每一個神經元小球,與前後相鄰層的每一個神經元都有連線關係,實踐證明,全連線網路對識別和檢測都有非常好的效果

在Minist影象識別的輸入全連線網路的是一幅28行28列的784個畫素點的灰度值,僅兩層全連線網路就有十萬多個帶訓練引數

  • 全連線NN:每個神經元與前後相鄰層的每一個神經元都有連線關係,輸入是特徵,輸出為預測的結果

實際專案中輸入神經網路的的圖片多是高解析度彩色圖,使得送入全連線網路的輸入特徵數過多,隨著隱藏層層數的增加網路規模過大,待優化引數過多容易導致模型過擬合

在實際應用時,會先對原始影象及逆行特徵提取,再把提取到的特徵送給全連線網路,讓全連線網路輸出識別結果

比如上圖中,這副彩色圖片進入神經網路時,會對它進行若干層特徵提取,把提取到的特徵送入全連線網路進行識別

卷積(Convolutional)

  • 卷積計算可認為是一種有效提取影象特徵的方法
  • 一般會用一個正方形的卷積核,按指定步長,在輸入特徵圖上滑動,遍歷輸入特徵圖中的每個畫素點,每一個步長,卷積核會輸入特徵圖出現重合區域,重合區域對應元素相乘、求和再加上偏置項得到輸出特徵的一個畫素點

如果輸入特徵是單通道灰度圖,使用這樣深度為1的單通道卷積核

如果輸入特徵是三通道彩色圖,可以使用這樣一個3*3*3

的卷積核或者這樣一個5*5*3的卷積核

總之要使卷積核的通道數與輸入特徵圖的通道數一致,因為要想讓卷積核與輸入特徵圖對應點匹配上,必須讓卷積核的深度與輸入特徵圖的深度一致,所以輸入特徵的深度(channel數),決定了當前層卷積核的深度

由於每個卷積核在卷積計算後,會得到一張輸出特徵圖,所以當前層使用了幾個卷積核,就有幾張輸出特徵圖,所以當前層卷積核的個數,決定了當前層輸出特徵圖的深度

如果你覺得某層模型的特徵提取能力不足,可以在這一層多用幾個卷積核提高這一層的特徵提取能力

上圖,是我們剛才用的三個卷積核,裡面的每一個小顆粒,都儲存著一個待訓練引數,在執行卷積計算時,卷積核裡的這些引數是固定

的,在每次反向傳播時,這些小顆粒中儲存的待訓練引數,會被梯度下降法更新,卷積就是利用立體卷積核,實現了引數的空間共享

對於輸入特徵圖是單通道的,選擇單通道卷積核,上圖例子的輸入特徵圖5行5列單通道,選用3*3單通道卷積核,滑動步長是1,在這個輸入特徵圖上滑動,每滑動一步,輸入特徵圖與卷積核裡的9個元素重合他們對應的元素相乘求和再加上偏置項b,例如上圖滑動位置時,利用下面的算式得到輸出特稱圖上的一個特徵值:

對於輸入通道時三通道的,選擇三通道卷積核,這裡的例子的輸入特徵圖,是5行5列紅綠藍三通道資料,這裡選用了3*3三通道卷積核,滑動步長是1,每滑動一步,輸入特徵圖與卷積核裡的27個元素重合,他們對應的元素相乘求和再加上偏置項b,比如卷積核滑動到這個位置,紅綠藍三層分別與卷積核的三層特徵資料重合,他們對應元素相乘求和加上偏置項b,得到輸出特徵圖中的一個畫素值

以上就是卷積計算過程,動態視覺化如下,當輸入特徵圖被遍歷完成,得到一張輸出特徵圖,完成了一個卷積核的卷積計算過程,當有n個卷積核時,會有n張輸出特徵圖: