PSPNet
Pyramid Scene Parsing Network
收錄:CVPR 2017 (IEEE Conference on Computer Vision and Pattern Recognition)
原文地址: PSPNet
代碼:
- pspnet-github
- Keras
- tensorflow
效果圖:
Abstract
本文提出的金字塔池化模塊( pyramid pooling module)能夠聚合不同區(qū)域的上下文信息,從而提高獲取全局信息的能力。實(shí)驗(yàn)表明這樣的先驗(yàn)表示(即指代PSP這個(gè)結(jié)構(gòu))是有效的,在多個(gè)數(shù)據(jù)集上展現(xiàn)了優(yōu)良的效果。
Introduction
場(chǎng)景解析(Scene Parsing)的難度與場(chǎng)景的標(biāo)簽密切相關(guān)。先大多數(shù)先進(jìn)的場(chǎng)景解析框架大多數(shù)基于FCN,但FCN存在的幾個(gè)問(wèn)題:
- Mismatched Relationship:上下文關(guān)系匹配對(duì)理解復(fù)雜場(chǎng)景很重要,例如在上圖第一行,在水面上的大很可能是“boat”,而不是“car”。雖然“boat和“car”很像。FCN缺乏依據(jù)上下文推斷的能力。
- Confusion Categories: 許多標(biāo)簽之間存在關(guān)聯(lián),可以通過(guò)標(biāo)簽之間的關(guān)系彌補(bǔ)。上圖第二行,把摩天大廈的一部分識(shí)別為建筑物,這應(yīng)該只是其中一個(gè),而不是二者。這可以通過(guò)類別之間的關(guān)系彌補(bǔ)。
- Inconspicuous Classes:模型可能會(huì)忽略小的東西,而大的東西可能會(huì)超過(guò)FCN接收范圍,從而導(dǎo)致不連續(xù)的預(yù)測(cè)。如上圖第三行,枕頭與被子材質(zhì)一致,被識(shí)別成到一起了。為了提高不顯眼東西的分割效果,應(yīng)該注重小面積物體。
總結(jié)這些情況,許多問(wèn)題出在FCN不能有效的處理場(chǎng)景之間的關(guān)系和全局信息。本論文提出了能夠獲取全局場(chǎng)景的深度網(wǎng)絡(luò)PSPNet,能夠融合合適的全局特征,將局部和全局信息融合到一起。并提出了一個(gè)適度監(jiān)督損失的優(yōu)化策略,在多個(gè)數(shù)據(jù)集上表現(xiàn)優(yōu)異。
本文的主要貢獻(xiàn)如下:
- 提出了一個(gè)金字塔場(chǎng)景解析網(wǎng)絡(luò),能夠?qū)㈦y解析的場(chǎng)景信息特征嵌入基于FCN預(yù)測(cè)框架中
- 在基于深度監(jiān)督損失ResNet上制定有效的優(yōu)化策略
- 構(gòu)建了一個(gè)實(shí)用的系統(tǒng),用于場(chǎng)景解析和語(yǔ)義分割,并包含了實(shí)施細(xì)節(jié)
Related Work
受到深度神經(jīng)網(wǎng)絡(luò)的驅(qū)動(dòng),場(chǎng)景解析和語(yǔ)義分割獲得了極大的進(jìn)展。例如FCN、ENet等工作。許多深度卷積神經(jīng)網(wǎng)絡(luò)為了擴(kuò)大高層feature的感受野,常用dilated convolution(空洞卷積)、coarse-to-fine structure等方法。本文基于先前的工作,選擇的baseline是帶dilated network的FCN。
大多數(shù)語(yǔ)義分割模型的工作基于兩個(gè)方面:
- 一方面:具有多尺度的特征融合,高層特征具有強(qiáng)的語(yǔ)義信息,底層特征包含更多的細(xì)節(jié)。
- 另一方面:基于結(jié)構(gòu)預(yù)測(cè)。例如使用CRF(條件隨機(jī)場(chǎng))做后端細(xì)化分割結(jié)果。
為了充分的利用全局特征層次先驗(yàn)知識(shí)來(lái)進(jìn)行不同場(chǎng)景理解,本文提出的PSP模塊能夠聚合不同區(qū)域的上下文從而達(dá)到獲取全局上下文的目的。
Architecture
Pyramid Pooling Module
前面也說(shuō)到了,本文的一大貢獻(xiàn)就是PSP模塊。
在一般CNN中感受野可以粗略的認(rèn)為是使用上下文信息的大小,論文指出在許多網(wǎng)絡(luò)中沒(méi)有充分的獲取全局信息,所以效果不好。要解決這一問(wèn)題,常用的方法是:
- 用全局平均池化處理。但這在某些數(shù)據(jù)集上,可能會(huì)失去空間關(guān)系并導(dǎo)致模糊。
- 由金字塔池化產(chǎn)生不同層次的特征最后被平滑的連接成一個(gè)FC層做分類。這樣可以去除CNN固定大小的圖像分類約束,減少不同區(qū)域之間的信息損失。
論文提出了一個(gè)具有層次全局優(yōu)先級(jí),包含不同子區(qū)域之間的不同尺度的信息,稱之為pyramid pooling module。
該模塊融合了4種不同金字塔尺度的特征,第一行紅色是最粗糙的特征–全局池化生成單個(gè)bin輸出,后面三行是不同尺度的池化特征。為了保證全局特征的權(quán)重,如果金字塔共有N個(gè)級(jí)別,則在每個(gè)級(jí)別后使用1×1的卷積將對(duì)于級(jí)別通道降為原本的1/N。再通過(guò)雙線性插值獲得未池化前的大小,最終concat到一起。
金字塔等級(jí)的池化核大小是可以設(shè)定的,這與送到金字塔的輸入有關(guān)。論文中使用的4個(gè)等級(jí),核大小分別為1×1,2×2,3×3,6×6。
整體架構(gòu)
在PSP模塊的基礎(chǔ)上,PSPNet的整體架構(gòu)如下:
- 基礎(chǔ)層經(jīng)過(guò)預(yù)訓(xùn)練的模型(ResNet101)和空洞卷積策略提取feature map,提取后的feature map是輸入的1/8大小
- feature map經(jīng)過(guò)Pyramid Pooling Module得到融合的帶有整體信息的feature,在上采樣與池化前的feature map相concat
- 最后過(guò)一個(gè)卷積層得到最終輸出
PSPNet本身提供了一個(gè)全局上下文的先驗(yàn)(即指代Pyramid Pooling Module這個(gè)結(jié)構(gòu)),后面的實(shí)驗(yàn)會(huì)驗(yàn)證這一結(jié)構(gòu)的有效性。
基于ResNet的深度監(jiān)督網(wǎng)絡(luò)
論文用了一個(gè)很“玄學(xué)”的方法搞了一個(gè)基礎(chǔ)網(wǎng)絡(luò)層,如下圖:
在ResNet101的基礎(chǔ)上做了改進(jìn),除了使用后面的softmax分類做loss,額外的在第四階段添加了一個(gè)輔助的loss,兩個(gè)loss一起傳播,使用不同的權(quán)重,共同優(yōu)化參數(shù)。后續(xù)的實(shí)驗(yàn)證明這樣做有利于快速收斂。
Experiment
論文在ImageNet scene parsing challenge 2016, PASCAL VOC 2012,Cityscapes 三個(gè)數(shù)據(jù)集上做了實(shí)驗(yàn)。
訓(xùn)練細(xì)節(jié):
| 學(xué)習(xí)率 | 采用“poly”策略,即lr=lrbase?(1?itermaxiter)power,衰減動(dòng)量設(shè)置為0.9 and 0.0001 |
| 迭代次數(shù) | ImageNet上設(shè)置150K,PASCAL VOC設(shè)置30K,Cityscapes設(shè)置90K |
| 數(shù)據(jù)增強(qiáng) | 隨機(jī)翻轉(zhuǎn)、尺寸在0.5到2之間縮放、角度在-10到10之間旋轉(zhuǎn)、隨機(jī)的高斯濾波 |
| batchsize | batch很重要,設(shè)置batch=16(這很吃顯存啊~) |
| 訓(xùn)練分支網(wǎng)絡(luò) | 設(shè)置輔助loss的權(quán)重為0.4 |
| 平臺(tái) | Caffe |
ImageNet scene parsing challenge 2016
測(cè)試不同配置下的ResNet的性能,找到比較好的預(yù)訓(xùn)練模型:
- ResNet50-Baseline: 基于FCN的ResNet50結(jié)構(gòu),帶空洞卷積的baseline
- ResNet50+B1+MAX:只帶1×1的平均池化,池化后做通道降維
可以看到做平均池化的都比最大池化效果要好,最后將多個(gè)操作結(jié)合得到最終最好的效果。
測(cè)試輔助loss的影響:
實(shí)驗(yàn)都是以ResNet50-Baseline為基準(zhǔn),最后以α=0.4為最佳。
測(cè)試預(yù)訓(xùn)練模型的深度:
可以看到在測(cè)試的{50,101,152,269}這四個(gè)層次的網(wǎng)絡(luò)中,網(wǎng)絡(luò)越深,效果越好。多種技巧融合
帶有DA即數(shù)據(jù)增強(qiáng),AL即帶輔助loss,PSP帶金字塔池化模塊,MS多尺度。在IamgeNet上的表現(xiàn):
PASCAL VOC 2012
可以看到在MS-COCO上預(yù)訓(xùn)練過(guò)的效果最好。
Cityscapes
在Cityscapes上表現(xiàn)也是很不錯(cuò)的。
Conclusion
論文在結(jié)構(gòu)上提供了一個(gè)pyramid pooling module,在不同層次上融合feature,達(dá)到語(yǔ)義和細(xì)節(jié)的融合。 模型的性能表現(xiàn)很大,但感覺(jué)主要?dú)w功于一個(gè)良好的特征提取層。在實(shí)驗(yàn)部分講了很多訓(xùn)練細(xì)節(jié),但還是很難復(fù)現(xiàn),這里值得好好推敲一下。
https://blog.csdn.net/u011974639/article/details/78985130
總結(jié)
- 上一篇: 再问数据中台-数据中台和数据仓库,数据平
- 下一篇: Oracle 用拼接字符串更新表 测试