深度可分離卷積

Galois發表於2020-03-11

模型結構

深度可分離卷積是普通卷積操作的一個變種,它可以替代不同卷積從而構成卷積神經網路。
zK8kADaDFf.png!large

在卷積神經網路裡,把上圖中左圖結構替換成右圖結構,就構成了深度可分離卷積神經網路。右圖中 1x1 卷積就是普通卷積。

右圖中 3x3 的深度可分離卷積是怎麼一回事,這要從「Inception V3」模型結構說起,「Inception V3」是 Google 在 2016 年提出來的網路模型結構,這結構的思想,啟發了深度可分離卷積。

fCfR3uLpJT.png!large

可以看到「Inception V3」模型結構中輸入被分成了四個分支,最後被合併起來輸入給下一個子結構。
這樣做分支能得到不同尺寸「視野域」。
圖同視野域提取的影像特徵尺寸不同。

W70kF1nF0x.png!largekSvPAAIWiS.png!large

分支操作除了能得到不同的「視野域」,使資料資訊更充分,相對於不做分支的模型結構還能提升效率。

深度可分離卷積模型結構

nMok1QD4oF.png!large

分到極致:

kKRXMsuwsb.png!largesWEk9oICqJ.png!large

輸出影像中的一個通道只和輸入影像中的一個通道有關係,而不是和輸入影像中的所有通道有關係。所以深度可分離卷積比起普通卷積,計算量少了很多。
普通卷積計算量:

D_K\cdot D_K\cdot M\cdot N\cdot D_F\cdot D_F\\{}\\ D_K^2=Kernel_{size}\\{}\\ D_F^2=Input_{size}\\{}\\ M=Input_{\#channel}\\{}\\ N=Output_{\#channel}=\#Kernel

一般情況下,會把卷積核設定成正方形的,所以是D_K\cdot D_K,輸入影像的大小也會設定成正方形,所以是D_F\cdot D_F。計算量公式中由於加法很簡單,複雜度沒有乘法高,所以忽略了加法計算。
深度可分離卷積計算量:

D_K\cdot D_K\cdot M\cdot D_F\cdot D_F\\{}\\ _{深度可分離計算量}\\{}\\ M\cdot N\cdot D_F\cdot D_F\\{}\\ _{1\times1卷積計算量}

深度可分離卷積與普通卷積的計算量加速比:

\displaystyle _{最佳化比例}\\{}\\ \frac{D_K\cdot D_K\cdot M\cdot D_F\cdot D_F+M\cdot N\cdot D_F\cdot D_F}{D_K\cdot D_K\cdot M\cdot N\cdot D_F\cdot D_F}\\{}\\ =\frac{1}{N}=\frac{1}{D_K^2}

本作品採用《CC 協議》,轉載必須註明作者和本文連結
不要試圖用百米衝刺的方法完成馬拉松比賽。

相關文章