作 者: 心有寶寶人自圓
聲 明: 歡迎轉(zhuǎn)載本文中的圖片或文字庶溶,請(qǐng)說(shuō)明出處
寫(xiě)在前面
自從FCN提出以來(lái)克滴,越來(lái)越多的語(yǔ)義分割任務(wù)開(kāi)始采用采用全卷積網(wǎng)絡(luò)結(jié)構(gòu)算柳,隨著FCN結(jié)構(gòu)使用的增加旅掂,研究人員發(fā)先了其結(jié)構(gòu)天生的缺陷極大的限制了分割的準(zhǔn)確度:CNNs在high-level (large scale) tasks中取得了十分優(yōu)異的成績(jī)搁骑,這得益于局部空間不變性(主要是池化層增大了感受野悲龟,也丟棄了部分細(xì)節(jié)信息)使得網(wǎng)絡(luò)能夠?qū)W習(xí)到層次化的抽象信息屋讶,但這卻恰恰不利于low-level (small scale) tasks
許多研究對(duì)FCN的網(wǎng)絡(luò)架構(gòu)進(jìn)行優(yōu)化:其中一類(lèi)的目的是減少細(xì)節(jié)信息的丟失,因此優(yōu)化大都是針對(duì)Encoder進(jìn)行的须教;還有另外一類(lèi)研究目的是減少將Encoder輸出結(jié)果映射(上采樣)到原始輸入空間的損失皿渗,減少FCN中簡(jiǎn)單的雙線性插值造成的信息損失,因此設(shè)計(jì)了可end-to-end訓(xùn)練的Decoder轻腺。FCN中的雙線性插值可以使用可訓(xùn)練的卷積層進(jìn)行替代乐疆,但為了彌補(bǔ)下采樣帶來(lái)的損失,會(huì)將Decoder中某層上采樣的結(jié)果與Encoder在同層的結(jié)果相加贬养,這又樣帶來(lái)了額外的存儲(chǔ)空間消耗挤土。
SegNet的目標(biāo)就是設(shè)計(jì)一種快速、存儲(chǔ)空間較小的適應(yīng)用于實(shí)時(shí)應(yīng)用的深度網(wǎng)絡(luò)模型煤蚌。
SegNet的創(chuàng)新點(diǎn)在于:使用記錄maxpool層最大響應(yīng)特征位置的tensor(pooling indices)來(lái)進(jìn)行上采樣耕挨,避免了FCN中學(xué)習(xí)上采樣帶來(lái)的消耗,而后再使用可訓(xùn)練的卷積層使稀疏的feature map密集尉桩,這將避面上面描述保存feature map產(chǎn)生的額外空間消耗筒占。
1. Introduction
DCNNs在high-level vision tasks(如圖像分類(lèi)、目標(biāo)檢測(cè)等)取得優(yōu)異得表現(xiàn)蜘犁,這些工作都有共同的主題:end-to-end訓(xùn)練的方法比人工的特征工程方法更優(yōu)翰苫。這得益于CNNs內(nèi)在的局部空間不變性,然而對(duì)應(yīng)low-level vision tasks(語(yǔ)義分割)來(lái)說(shuō),我們需要準(zhǔn)確的位置信息而非空間信息抽象后的層次化信息奏窑。
DCNNs應(yīng)用于low-level vision tasks主要難點(diǎn)是:
- 信號(hào)的下采樣使細(xì)節(jié)信息丟失
- 網(wǎng)絡(luò)對(duì)多尺度目標(biāo)的泛化能力較差
- 空間的局部不變性導(dǎo)致位置信息不再準(zhǔn)確
其中最主要的是下采樣問(wèn)題导披,它是池化層和stride的聯(lián)合影響造成两波,是準(zhǔn)確性和速度糙置、空間消耗的權(quán)衡(即過(guò)大的卷積核運(yùn)算極度耗時(shí)、參數(shù)過(guò)大)绿淋。其目的是為了使較小的卷積核能夠去學(xué)習(xí)空間中有用的信息(因此需要增大感受野)墨叛,但這種下采樣必然造成信息的損失止毕。網(wǎng)絡(luò)對(duì)于小目標(biāo)的性能較差、局部不變性同樣是由于池化層丟失了部分邊界信息帶來(lái)的問(wèn)題漠趁,也就是說(shuō)最大的問(wèn)題集中在了池化層的處理扁凛。即使DeepLabv2使用了帶洞的卷積來(lái)顯式地控制感受野的大小,但網(wǎng)絡(luò)訓(xùn)練的難度決定了網(wǎng)絡(luò)模型中仍必須有下池化層的存在闯传,所以需要將低分辨率的特征圖映射(上采樣)到高分辨率的輸入空間谨朝,同時(shí)映射必須能準(zhǔn)確地進(jìn)行邊界定位的手段。
作者同樣關(guān)注了在推理期間的內(nèi)存和計(jì)算時(shí)間方面的效率甥绿。SegNet由Encoder和Decoder組成字币,其中Encoder與Vgg-16一致,但完全去除了全連接層(也沒(méi)有將其變化為全卷積層妹窖,而是直接將應(yīng)傳入fc6的feature map直接傳入Decoder)纬朝,這樣既減少了訓(xùn)練時(shí)間和存儲(chǔ)空間(最多的參數(shù)就在全連接層中,約占整個(gè)網(wǎng)絡(luò)90%的參數(shù))也減少了信息的丟失(更多的特征)骄呼。SegNet最核心的部分就是Decoder的設(shè)計(jì)共苛,Encoder中的每一層與Decoder中一一對(duì)應(yīng),其每層的設(shè)計(jì)與DeconvNet(Zeiler蜓萄,2013)類(lèi)似隅茎。為了保證邊界信息不丟失,Encoder需要在下采樣之前保存各層feature map嫉沽,但這會(huì)受到內(nèi)存的限制辟犀,因此更為高效的做法是使用max-pooling indices存儲(chǔ)各層下采樣過(guò)程中各池化窗口最大特征值的位置,保存最重要的特征信息绸硕。作者的試驗(yàn)結(jié)果表明與使用完整的feature map相比堂竟,max-pooling indices僅造成了較小的準(zhǔn)確率下降〔E澹總之出嘹,使用max-pooling indices:
- 保留了部分重要的邊界信息,改善了網(wǎng)絡(luò)模型對(duì)于邊界的描述
- 減少了FCN中因上采樣而需要訓(xùn)練的參數(shù)
- 能在極小修改的條件下與Encoder-Decoder網(wǎng)絡(luò)模型相結(jié)合
2. ARCHITECTURE
SegNet的結(jié)構(gòu)如Fig. 2所示咬崔,其中Encoder由Vgg-16的前13層組成(但個(gè)卷積層后都加了一個(gè)BN層)税稼,去除全連接層可以保留更高分辨率的特征圖烦秩,并且能夠顯著地減小網(wǎng)絡(luò)的參數(shù)(from 134M to 14.7M,同時(shí)這也是網(wǎng)絡(luò)難以訓(xùn)練的重要原因)郎仆。Decoder通過(guò)同層Encoder記錄的max-pooling indices進(jìn)行上采樣只祠,再由可訓(xùn)練的卷積層對(duì)于稀疏的解碼特征圖經(jīng)行密集化處理。
2.1 Decoder Variants
許多用于語(yǔ)義分割的網(wǎng)絡(luò)都擁有相似的架構(gòu)扰肌,為了對(duì)比各種設(shè)計(jì)之間造成速度抛寝、存儲(chǔ)、模型性能的差異曙旭,作者設(shè)計(jì)了以下幾種變種(原始網(wǎng)絡(luò)模型的簡(jiǎn)化版):
SegNet-Basic:4個(gè)編碼器 + 4個(gè)解碼器墩剖,所有kernel_size = 7,Decoder中使用max-pooling indices取代學(xué)習(xí)一個(gè)conv層來(lái)進(jìn)行上采樣
SegNet-Basic- EncoderAddition:與FCN的解碼技術(shù)類(lèi)似夷狰,將Decoder解碼的結(jié)果與同層Encoder的feature map相加傳入下一層,增加了內(nèi)存消耗
-
SegNet-Basic-SingleChannelDecoder:Decoder采用單通道conv層郊霎,可以顯著減少內(nèi)存的消耗沼头,但損失了部分信息
FCN-Basic:與SegNet-Basic相同的Encoder,使用FCN的解碼技術(shù)(Fig. 3书劝,將Decoder上采樣結(jié)果與同層Encoder的feature map相加后傳入下一層)进倍,此結(jié)構(gòu)中Encoder最后一層的K通道feature map會(huì)被一個(gè)卷積層壓縮成Number of Class通道feature map后傳入Decoder
FCN-Basic-NoAddition:去除FCN-Basic Decoder中將上采樣并將結(jié)果與同層Encoder的feature map相加的步驟,顯著減少內(nèi)存的消耗购对,但損失了部分信息
FCN-Basic-NoDimReduction:去除FCN-Basic壓縮Encoder輸出通道數(shù)的conv層猾昆,這樣會(huì)帶來(lái)更多內(nèi)存消耗(需要保存Encoder最后的feature map,壓縮后空間更新獍)垂蜗,但減少了信息損失
FCN-Basic-NoAddition-NoDimReduction:去除FCN-Basic-NoAddition和FCN-Basic-NoDimReduction對(duì)應(yīng)的部分
2.2 Training
訓(xùn)練過(guò)程中比較新穎的地方是使用median frequency balancing,基于真實(shí)標(biāo)記的分布為各類(lèi)別的損失重新加權(quán)解幽,以減弱類(lèi)別不平衡對(duì)模型帶來(lái)的影響贴见。median frequency balancing需要如下的步驟:
計(jì)算整個(gè)訓(xùn)練集中各個(gè)類(lèi)別出現(xiàn)的頻率:
選出集合中的中位數(shù)
為每個(gè)類(lèi)別的loss分配權(quán)重
這意味著訓(xùn)練集中數(shù)量較大的類(lèi)的權(quán)值小于1,數(shù)量最小的類(lèi)的權(quán)值最大躲株。默認(rèn)情況是為每個(gè)類(lèi)別都賦予1作為權(quán)重片部,這被稱(chēng)作natural frequency balancing。
2.3 Analysis
比較不同Decoder變體的性能霜定,選擇了如下幾種指標(biāo):
- global accuracy (G):數(shù)據(jù)集中正確分類(lèi)的像素的百分比
- class average accuracy (C):所有類(lèi)別預(yù)測(cè)準(zhǔn)確率的平均值
- mean intersection over union (mIoU):比類(lèi)平均準(zhǔn)確率更嚴(yán)格档悠,因?yàn)樗鼞土PFP預(yù)測(cè);然而mIoU并不是損類(lèi)別平衡cross-entropy損失函數(shù)的優(yōu)化目標(biāo)(其優(yōu)化目標(biāo)是準(zhǔn)確率最大化)
-
boundary F1-measure (BF):涉及計(jì)算邊界像素的F1指標(biāo)望浩。給定一個(gè)像素容錯(cuò)距離辖所,計(jì)算預(yù)測(cè)值和ground truth類(lèi)別邊界之間的精確度和召回率。作者使用圖像對(duì)角線的0.75%作為容錯(cuò)距離曾雕。與mIoU相比奴烙,BF的評(píng)判結(jié)果更符合人類(lèi)對(duì)語(yǔ)義分割效果的判定
在各網(wǎng)絡(luò)已訓(xùn)練至均收斂的條件下,各變體的評(píng)價(jià)結(jié)果如Table 1所示。結(jié)果表明:
- (1) Decoder需要訓(xùn)練切诀,使用雙線性插值作為Decoder的效果最差揩环。
- (2) SegNet-Basic和FCN-Basic性能相近,但后者由于保存各層的feature map消耗更多內(nèi)存幅虑。
- (3) FCN-Basic-NoAddition的性能差于結(jié)構(gòu)最相近的SegNet-Basic丰滑,表明Encoder中信息的重要性。
- (4) 不對(duì)Encoder的輸出進(jìn)行壓縮倒庵,能帶來(lái)性能的提升褒墨,但在保存feature map時(shí)會(huì)增大內(nèi)存消耗。
- (5) 與FCN-Basic-NoAddition和FCN-Basic-NoAddition-NoDimReduction相比擎宝,SegNet-Basic-SingleChannelDecoder雖然丟失了部分信息郁妈,但仍保留了部分Encoder中的信息,因此性能優(yōu)于前兩者绍申。
- (6) 在不限制內(nèi)存和推斷時(shí)間的條件下噩咪,F(xiàn)CN-Basic-NoDimReduction和SegNet-EncoderAddition達(dá)到了最優(yōu)的性能,F(xiàn)CN-Basic-NoDimReduction的BF1最高极阅,表明存儲(chǔ)空間和準(zhǔn)確率之間存在著權(quán)衡胃碾。
作者總結(jié)了如下要點(diǎn):
- 更高的性能不壓縮feature map,記錄Encoder各層feature maps
- 更小的存儲(chǔ)空間壓縮feature map筋搏,記錄max-pooling indices
- 感受野更大的解碼器性能更好
3. BENCHMARKING
作者將完整的SegNet與FCN仆百、DeepLab- LargFOV、DeconvNet進(jìn)行比較奔脐,發(fā)現(xiàn):
- CRF后處理的改善效果在訓(xùn)練集足夠大的條件下不明顯俄周。
- 難以使用median frequency balancing訓(xùn)練較大的網(wǎng)絡(luò),但使用median frequency balancing能較明顯地提高網(wǎng)絡(luò)性能髓迎。
- 網(wǎng)絡(luò)在訓(xùn)練集收斂后栈源,過(guò)擬合仍未發(fā)生,這表明過(guò)擬合在訓(xùn)練大型網(wǎng)絡(luò)是不是嚴(yán)重的問(wèn)題竖般。
4. 總結(jié)
SegNet更關(guān)注內(nèi)存消耗(尤其注重)與推斷時(shí)間甚垦,盡管對(duì)于模型的性能沒(méi)有較為明顯的提升,但使我們了解到減少Encoder中信息損失的重要性和訓(xùn)練Decoder涣雕、結(jié)合Encoder信息的重要性艰亮。此外,其使用median frequency balancing和BF1指標(biāo)都對(duì)于訓(xùn)練與評(píng)價(jià)都有很好的啟發(fā)挣郭。
因?yàn)镾egNet不存在特別難以構(gòu)建的地方(或與之前我寫(xiě)過(guò)網(wǎng)絡(luò)的類(lèi)似)迄埃,這里僅進(jìn)行理解閱讀不再進(jìn)行代碼復(fù)現(xiàn)。
Reference
[1] Badrinarayanan, Vijay , A. Kendall , and R. Cipolla . "SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation."IEEE Transactions on Pattern Analysis and Machine Intelligence (2017).
[2] Zeiler, Matthew D , and R. Fergus . "Visualizing and Understanding Convolutional Networks." European Conference on Computer Vision Springer International Publishing, 2013.
轉(zhuǎn)載請(qǐng)說(shuō)明出處兑障。