輕量級網路 Xception

2021-10-08 09:45:56 字數 1585 閱讀 9385

xception是google繼inception後提出的對inception v3的另一種改進,主要是採用depthwise separable convolution來替換原來inception v3中的卷積操作。xception在參數量上同inception v3基本等同, 在imagenet上的表現二者也很接近(在另乙個更大規模的google私有資料集jft上,xception的優勢要稍微明顯些)。

其中,separableconv是一種depthwise convolution 和 1x1 卷積的結合。我們先看一下傳統卷積是怎麼實現的:

再來看一下depthwise convolution的實現:

由上圖可知,depthwise convolution卷積中每乙個卷積核只對應輸入的乙個channel,因此這也要求輸入通道數與輸出通道數相同。 (大家可以注意到,xception保持了中間重複模組的feature map的channel始終為728)

完整的乙個separableconv是下面的乙個組合:

在xception中主要採用這種類似於depthwise separable convolution的separableconv,區別主要有兩點:

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

下圖顯示了xception的演變:

等價形式表示對於乙個輸入,先用乙個統一的1*1卷積核卷積,然後連線3個3*3的卷積,這3個卷積操作只將前面1*1卷積結果中的一部分(不重疊)作為自己的輸入(這裡是將1/3channel作為每個3*3卷積的輸入)。極端模式就是3*3卷積的個數和1*1卷積的輸出channel個數一樣,每個3*3卷積都是和1個輸入channel做卷積。

從實驗結果來看, xception在參數量上同inception v3基本等同, 在imagenet上的表現二者也很接近(在另乙個更大規模的google私有資料集上,xception的優勢要稍微明顯些)。

Swift 輕量級網路層設計

普遍我們的網路層設計的時候直接是如下結構apimanager.post url,parameter,completehandle 伺服器配置在apimanager.m檔案中進行配置。這樣乙個簡單便捷網路請求類便寫好了,但細心思考我們會發現如下一些問題 相同api可能分散各處導致每次需要填寫的引數ke...

輕量級重量級

輕量級重量級某種程度上是以啟動程式需要的資源來決定。比如,ejb啟動的時候,需要消耗大量的資源,記憶體,cpu等,所以是重量級。而spring則不,所以是輕量級框架。量級主要是看對容器的依賴性所決定的,依賴性越小,越輕量.ejb往往內部做了很多服務,網上的說法是買一得三 而且你不想要就不行!比方說我...

輕量級容器

什麼是輕量級容器?為什麼我們需要輕量級容器?什麼是輕量級容器 所謂容器 container 指應用 的執行框架。業務物件在容器裡執行,被容器管理。像ejb就是過去管理j2ee業務物件時最常用的容器。任何容器都應該包含如下服務 上面講的是容器核心模組應該提供的服務,但是容器還必須提供其它一些服務,增加...