Xception演算法詳解

2021-08-17 07:42:14 字數 2881 閱讀 3941

演算法詳解:

xception是google繼inception後提出的對inception v3的另一種改進,主要是採用depthwise separable convolution來替換原來inception v3中的卷積操作。

要介紹xception的話,需要先從inception講起,inception v3的結構圖如下figure1。當時提出inception的初衷可以認為是:特徵的提取和傳遞可以通過1*1卷積,3*3卷積,5*5卷積,pooling等,到底哪種才是最好的提取特徵方式呢?inception結構將這個疑問留給網路自己訓練,也就是將乙個輸入同時輸給這幾種提取特徵方式,然後做concat。inception v3和inception v1(googlenet)對比主要是將5*5卷積換成兩個3*3卷積層的疊加。

於是從inception v3聯想到了乙個簡化的inception結構,就是figure 2。

再將figure2延伸,就有了figure3,figure3表示對於乙個輸入,先用乙個統一的1*1卷積核卷積,然後連線3個3*3的卷積,這3個卷積操作只將前面1*1卷積結果中的一部分作為自己的輸入(這裡是將1/3channel作為每個3*3卷積的輸入)。再從figure3延伸就得到figure4,也就是3*3卷積的個數和1*1卷積的輸出channel個數一樣,每個3*3卷積都是和1個輸入chuannel做卷積。

鋪墊了這麼多,終於要講到xception了。在xception中主要採用depthwise separable convolution,什麼是depthwise separable convolution?這是mobilenet裡面的內容,可以參考另一篇博文:mobilenets-深度學習模型的加速。這裡簡單介紹下:下圖就是depthwise separable convolution的示意圖,其實就是將傳統的卷積操作分成兩步,假設原來是3*3的卷積,那麼depthwise separable convolution就是先用m個3*3卷積核一對一卷積輸入的m個feature map,不求和,生成m個結果;然後用n個1*1的卷積核正常卷積前面生成的m個結果,求和,最後生成n個結果。因此文章中將depthwise separable convolution分成兩步,一步叫depthwise convolution,就是下圖的(b),另一步是pointwise convolution,就是下圖的(c)。

其實depthwise separable convolution和上面的figure4是很像的。差別有兩個:1、順序不一樣,在depthwise separable convolution中是先進行乙個channel-wise的spatial convolution,也就是上圖的(b),然後是1*1的卷積。而在figure4中是先進行1*1的卷積,再進行channel-wise的spatial convolution,最後concat。2、在figure4中,每個操作後都有乙個relu的非線性啟用,但是在depthwise separable convolution中沒有。

那麼作者為什麼要採用depthwise separable convolution操作呢?就是從figure1到figure4的關於inception v3結構的不斷延伸,然後figure4基本上和depthwise separable convolution沒有太大的區別,於是就有了引入depthwise separable convolution修改inception v3結構的xception。

figure5是xception的結構圖。這裡的sparsableconv就是depthwise separable convolution。另外,每個小塊的連線採用的是residule connection(圖中的加號),而不是原inception中的concat。

實驗結果:

table1表示幾種網路結構在imagenet上的對比。

table2表示幾種網路結構在jft資料集上的對比。大資料上的提公升會比table1好一點。

總結:

xception作為inception v3的改進,主要是在inception v3的基礎上引入了depthwise separable convolution,在基本不增加網路複雜度的前提下提高了模型的效果。有些人會好奇為什麼引入depthwise separable convolution沒有大大降低網路的複雜度,因為depthwise separable convolution在mobilenet中主要就是為了降低網路的複雜度而設計的。原因是作者加寬了網路,使得引數數量和inception v3差不多,然後在這前提下比較效能。因此xception目的不在於模型壓縮,而是提高效能。

深度學習 Xception

創新點網路結構 總結 位址 參考部落格 xception是google繼inception後提出的對inception v3的另一種改進,主要是採用depthwise separable convolution來替換原來inception v3中的卷積操作。inception 最初提出的版本,其核心...

輕量級網路 Xception

xception是google繼inception後提出的對inception v3的另一種改進,主要是採用depthwise separable convolution來替換原來inception v3中的卷積操作。xception在參數量上同inception v3基本等同,在imagenet上...

A 演算法詳解

第一部分 a 演算法簡介 寫這篇文章的初衷是應乙個的要求,當然我也發現現在有關人工智慧的中文站點實在太少,我在這裡 拋磚引玉,希望大家都來熱心的參與。還是說正題,我先拿a 演算法開刀,是因為a 在遊戲中有它很典型的用法,是人工智慧在遊戲中的代表。a 演算法在人工智慧中是一種典型的啟發式搜尋演算法,為...