关于「Xception」和「DeepLab V3+」的那些事
作者丨崔權(quán)
學(xué)校丨早稻田大學(xué)碩士生
研究方向丨深度學(xué)習(xí),計(jì)算機(jī)視覺(jué)
知乎專欄丨サイ桑的煉丹爐
前言
最近讀了 Xception [1]?和 DeepLab V3+ [2] 的論文,覺(jué)得有必要總結(jié)一下這個(gè)網(wǎng)絡(luò)里用到的思想,學(xué)習(xí)的過(guò)程不能只是一個(gè)學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)這么簡(jiǎn)單的過(guò)程,網(wǎng)絡(luò)設(shè)計(jì)背后的思想其實(shí)是最重要的但是也是最容易被忽略的一點(diǎn)。
Xception (Extreme Inception)?
卷積層的學(xué)習(xí)方式
在一層卷積中我們嘗試訓(xùn)練的是一個(gè) 3-D 的 kernel,kernel 有兩個(gè) spatial dimension,H 和 W,一個(gè) channel dimension,也就是 C。
這樣一來(lái),一個(gè) kernel 就需要同時(shí)學(xué)習(xí) spatial correlations 和 cross-channel correlations,我把這里理解為,spatial correlations 學(xué)習(xí)的是某個(gè)特征在空間中的分布,cross-channel correlations 學(xué)習(xí)的是這些不同特征的組合方式。?
Inception的理念?
首先通過(guò)一系列的 1x1 卷積來(lái)學(xué)習(xí) cross-channel correlations,同時(shí)將輸入的維度降下來(lái);再通過(guò)常規(guī)的 3x3 和 5x5 卷積來(lái)學(xué)習(xí) spatial correlations。這樣一來(lái),兩個(gè)卷積模塊分工明確。Inception V3 中的 module 如下圖。
Inception的假設(shè)
corss-channels correlations 和 spatial correlations 是分開(kāi)學(xué)習(xí)的,而不是在某一個(gè)操作中共同學(xué)習(xí)的。?
Inception到Xception的轉(zhuǎn)變
首先考慮一個(gè)簡(jiǎn)版的 Inception module,拿掉所有的 pooling,并且只用一層 3x3 的卷積來(lái)提取 spatial correlations,如 Figure2。
▲?簡(jiǎn)版Inception
可以將這些 1x1 的卷積用一個(gè)較大的 1x1 卷積來(lái)替代(也就是在 channel 上進(jìn)行 triple),再在這個(gè)較大卷積產(chǎn)生的 feature map 上分出三個(gè)不重疊的部分,進(jìn)行 separable convolution,如 Figure3。?
這樣一來(lái)就自然而然地引出:為什么不是分出多個(gè)不重疊的部分,而是分出三個(gè)部分來(lái)進(jìn)行 separable convolution 呢?如果加強(qiáng)一下 Inception 的假設(shè),假設(shè) cross-channel correlations 和 spatial correlations 是完全無(wú)關(guān)的呢??
沿著上面的思路,一種極端的情況就是,在每個(gè) channel 上進(jìn)行 separable convolution,假設(shè) 1x1 卷積輸出的 feature map 的 channel 有 128 個(gè),那么極端版本的 Inception 就是在每個(gè) channel 上進(jìn)行 3x3 的卷積,而不是學(xué)習(xí)一個(gè) 3x3x128 的 kernel,取而代之的是學(xué)習(xí) 128 個(gè) 3x3 的kernel。
將 spatial correlations 的學(xué)習(xí)細(xì)化到每一個(gè) channel,完全假設(shè) spatial correlations 的學(xué)習(xí)與 cross-channel correlations 的學(xué)習(xí)無(wú)關(guān),如 Figure4 所示。
Xception Architecture
一種 Xception module 的線性堆疊,并且使用了 residual connection,數(shù)據(jù)依次流過(guò) Entry flow,Middle flow 和 Exit flow。
順便寫一點(diǎn)讀 Xception 時(shí)的小發(fā)現(xiàn),Xception 的實(shí)驗(yàn)有一部分是關(guān)于應(yīng)不應(yīng)該在 1x1 卷積后面只用激活層的討論,實(shí)驗(yàn)結(jié)果是:如果在 1x1 卷積后不加以激活直接進(jìn)行 depthwise separable convolution,無(wú)論是在收斂速度還是效果上都優(yōu)于在 1x1 卷積后加以 ReLU 之類激活函數(shù)的做法。
這可能是因?yàn)?#xff0c;在對(duì)很淺的 feature(比如這里的 1-channel feature)進(jìn)行激活會(huì)導(dǎo)致一定的信息損失,而對(duì)很深的 feature,比如 Inception module 提取出來(lái)的特征,進(jìn)行激活是有益于特征的學(xué)習(xí)的,個(gè)人理解是這一部分特征中有大量冗余信息。
DeepLab V3+
論文里,作者直言不諱該框架參考了 spatial pyramid pooling (SPP) module 和 encoder-decoder 兩種形式的分割框架。前一種就是 PSPNet 那一款,后一種更像是 SegNet 的做法。?
ASPP 方法的優(yōu)點(diǎn)是該種結(jié)構(gòu)可以提取比較 dense 的特征,因?yàn)閰⒖剂瞬煌叨鹊?feature,并且 atrous convolution 的使用加強(qiáng)了提取 dense 特征的能力。但是在該種方法中由于 pooling 和有 stride 的 conv 的存在,使得分割目標(biāo)的邊界信息丟失嚴(yán)重。?
Encoder-Decoder 方法的 decoder 中就可以起到修復(fù)尖銳物體邊界的作用。?
關(guān)于Encoder中卷積的改進(jìn)
DeepLab V3+ 效仿了 Xception 中使用的 depthwise separable convolution,在 DeepLab V3 的結(jié)構(gòu)中使用了 atrous depthwise separable convolution,降低了計(jì)算量的同時(shí)保持了相同(或更好)的效果。?
Decoder的設(shè)計(jì)
Encoder 提取出的特征首先被 x4 上采樣,稱之為 F1;
Encoder 中提取出來(lái)的與 F1 同尺度的特征 F2' 先進(jìn)行 1x1 卷積,降低通道數(shù)得到 F2,再進(jìn)行 F1 和 F2 的 concatenation,得到 F3;
為什么要進(jìn)行通道降維?因?yàn)樵?encoder 中這些尺度的特征通常通道數(shù)有 256 或者 512 個(gè),而 encoder 最后提取出來(lái)的特征通道數(shù)沒(méi)有這么多,如果不進(jìn)行降維就進(jìn)行 concate 的話,無(wú)形之中加大了 F2' 的權(quán)重,加大了網(wǎng)絡(luò)的訓(xùn)練難度。
對(duì) F3 進(jìn)行常規(guī)的 3x3 convolution 微調(diào)特征,最后直接 x4 upsample 得到分割結(jié)果。
還有值得關(guān)注的一點(diǎn)是,論文提出了 Xception 的改良版,可以用來(lái)做分割:
與 Xception 不同的幾點(diǎn)是:?
層數(shù)變深了
所有的最大池化都被替換成了 3x3 with stride 2 的 separable convolution
在每個(gè) 3x3 depthwise separable convolution 的后面加了 BN 和 ReLU
作者也把 Xception 當(dāng)作了 Encoder,沒(méi)有使用 DeepLab V3 中的 multi-grid 方法,得到的效果是所有模型中最好的。?
在 PASCAL VOC 2012 驗(yàn)證集上的表現(xiàn):
在 PASCAL VOC 2012 測(cè)試集上的表現(xiàn):?
一點(diǎn)總結(jié)
縱觀語(yǔ)義分割的模型發(fā)展,從最初的 Encoder-Decoder 框架,到后來(lái)的 DeepLab、PSPNet 框架,到去年的 RefineNet 框架,每個(gè)框架都有其獨(dú)到之處,但是 DeepLab V3+ 綜合了 DeepLab、PSPNet 和 Encoder-Decoder,得到的效果是最好的,是思想的集大成者,或許在 RefineNet 類的框架和其他的框架之間也有可以探尋的結(jié)構(gòu)。
相關(guān)鏈接
[1] Xception: Deep Learning with Depthwise Separable Convolutions
https://www.paperweekly.site/papers/1460
https://github.com/kwotsin/TensorFlow-Xception
[2] Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
https://www.paperweekly.site/papers/1676
https://github.com/tensorflow/models/tree/master/research/deeplab
點(diǎn)擊以下標(biāo)題查看相關(guān)內(nèi)容:?
DeepLabv3+:語(yǔ)義分割領(lǐng)域的新高峰
#榜 單 公 布?#
2017年度最值得讀的AI論文 | NLP篇 · 評(píng)選結(jié)果公布
2017年度最值得讀的AI論文 | CV篇 · 評(píng)選結(jié)果公布
? ? ? ? ??
?我是彩蛋
?解鎖新功能:熱門職位推薦!
PaperWeekly小程序升級(jí)啦
今日arXiv√猜你喜歡√熱門職位√
找全職找實(shí)習(xí)都不是問(wèn)題
?
?解鎖方式?
1. 識(shí)別下方二維碼打開(kāi)小程序
2. 用PaperWeekly社區(qū)賬號(hào)進(jìn)行登陸
3. 登陸后即可解鎖所有功能
?職位發(fā)布?
請(qǐng)?zhí)砑有≈治⑿?#xff08;pwbot02)進(jìn)行咨詢
?
長(zhǎng)按識(shí)別二維碼,使用小程序
賬號(hào)注冊(cè)paperweek.ly
關(guān)于PaperWeekly
PaperWeekly 是一個(gè)推薦、解讀、討論、報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺(tái)。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號(hào)后臺(tái)點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點(diǎn)擊 |?閱讀原文?| 訪問(wèn)作者知乎專欄
總結(jié)
以上是生活随笔為你收集整理的关于「Xception」和「DeepLab V3+」的那些事的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 让你的文字被很多很多人看到,喜欢我们不如
- 下一篇: 自然语言处理中的自注意力机制(Self-