一蔚携、語義分割(semantic segmentation)介紹
1.圖像分類(image classification)
- 分類和定位(classification with localization)
- 物體檢測(cè)(object detection)
- 語義分割(semantic segmentation)
- 實(shí)例分割(instance segmentation)
幾個(gè)方向的對(duì)比:
二券坞、 理解卷積,最大池化和轉(zhuǎn)置卷積
1. 卷積(convolution)
一個(gè)卷積操作有兩個(gè)輸入
(I)3D輸入圖片(NinNinchannels)
(ii) k個(gè)過濾器組成的一個(gè)系列(filters/kernels/feature extractors)同诫,每個(gè)過濾器的尺寸為(ffchannels),f通常為3或5樟澜。
卷積操作的輸出為一個(gè)三維的volume(也稱為feature map或者輸出)误窖,其尺寸為(NoutNoutk)
Nin和Nout的關(guān)系如下:
卷積操作可視化如下:
在上圖中,輸入的尺寸在773秩贰,兩個(gè)過濾器的尺寸為333霹俺,padding為0,步長(zhǎng)為2毒费。因此丙唧,輸出的volume的尺寸為332。
另一個(gè)重要概念為感知域(receptive field)觅玻。它是指輸入volume中每個(gè)filter所看到的部分想际。在上圖中培漏,3*3的藍(lán)色區(qū)域?yàn)楦兄颉8兄蛞渤31环Q為context胡本。
receptive field (context) is the area of the input image that the filter covers at any given point of time.
2. 最大池化操作
目的:減小feature map的尺寸
最大池化中兩個(gè)重要的超參數(shù)(hyper-parameters):filter的尺寸和步長(zhǎng)牌柄。
最大池化的目的是保留每個(gè)區(qū)域最重要的信息(具有最大值的像素)并且丟棄不重要的信息。這里的”重要“是指侧甫,能最好描述圖片內(nèi)容的信息友鼻。
值得注意的是,卷積和池化都能減小圖片尺寸闺骚,因此他們被稱為”下采樣(down sampling)“彩扔。
3. 上采樣(up sampling)
如果我們只做下采樣,我們只能得到”what“信息僻爽,但是損失了”where“信息虫碉。為了得到”where"信息,需要對(duì)圖片進(jìn)行上采樣胸梆。
上采樣的方法有:bi-linear interpolation, cubic interpolation, nearest neighbor interpolation, unpooling, transposed convolution, etc
轉(zhuǎn)置卷積(transposed convolution)是對(duì)圖片進(jìn)行上采樣時(shí)比較被偏愛的方法敦捧。
4. 轉(zhuǎn)置卷積(transposed convolution)
強(qiáng)烈建議閱讀這篇文章
我自己之前也總結(jié)過。
三碰镜、UNET的結(jié)構(gòu)
UNET結(jié)構(gòu)的介紹性文字:
The architecture contains two paths. First path is the contraction path (also called as the encoder) which is used to capture the context in the image. The encoder is just a traditional stack of convolutional and max pooling layers. The second path is the symmetric expanding path (also called as the decoder) which is used to enable precise localization using transposed convolutions. Thus it is an end-to-end fully convolutional network (FCN), i.e. it only contains Convolutional layers and does not contain any Dense layer because of which it can accept image of any size.
文中輸入推按的尺寸是572 * 572 * 3兢卵。這里我們用128 * 128 * 3的圖片進(jìn)行舉例。
下圖是關(guān)于UNET結(jié)構(gòu)的詳細(xì)介紹:
下面我自己結(jié)合參考鏈接寫一些對(duì)結(jié)構(gòu)的理解:
先看decoder部分:
2@Conv layers是指應(yīng)用了兩個(gè)連續(xù)的卷積層绪颖;
c1-c5是卷積層的輸出秽荤,p1-p4是最大池化層的輸出;
進(jìn)行conv2d layer的filter的channel數(shù)目增多柠横,從而增加output的channel數(shù)目窃款,但是size不變;
進(jìn)行maxpool事后牍氛,channel數(shù)目不變晨继,但是size減小了一半;
decoder部分是從128x128x3 到8x8x256搬俊。
參考鏈接
這個(gè)UNet的降采樣一共經(jīng)歷了4層紊扬。淺層可以抓取圖像的一些簡(jiǎn)單的信息,比如邊界唉擂、顏色等餐屎。深藏結(jié)構(gòu)因?yàn)楦惺芤按罅耍医?jīng)過的卷積操作變多了楔敌,會(huì)抓取一些抽象特征啤挎。
再看encoder部分:
每一次轉(zhuǎn)置卷積之后驻谆,height和weights都加倍卵凑,同時(shí)depth(channel數(shù)目)減半;
c6和u6的size相同庆聘;
encoder部分是從8x8x256 到 128x128x3;
灰色箭頭表示復(fù)制和剪切操作勺卢,可以發(fā)現(xiàn)伙判,在同一層左邊的最后一層要比右邊的第一層要大一些,這就導(dǎo)致了:想要利用淺層的feature黑忱,就要進(jìn)行一些剪切宴抚,也導(dǎo)致了最終的輸出是輸入的中心某個(gè)區(qū)域;
長(zhǎng)連接(skip connection)的優(yōu)點(diǎn):參考鏈接
- fight the vanishing gradient problem
- learns pyramid level feature
- recover information loss in down sampling
其他network與長(zhǎng)連接(skip connection)相對(duì)應(yīng)的功能:參考鏈接 - FCN: use summation
- U-Net: use concatenation
- SegNet: use pooling indice instead of skip connection
- Some generators in GAN have no skip connection
U-Net中的長(zhǎng)連接是有必要的甫煞,它聯(lián)系了輸入圖像的很多信息菇曲,有助于還原降采樣所帶來的信息損失,在一定程度上抚吠,我覺得它和殘差的操作非常類似常潮,也就是residual操作,x+f(x)楷力。我不知道大家是否同意這一個(gè)觀點(diǎn)喊式。因此,我的建議是最好給出一個(gè)綜合長(zhǎng)連接和短連接的方案萧朝。
四岔留、問答環(huán)節(jié)
1. 為什么在decoder里要采用雙卷積?
2. 為什么在encoder里要用到decoder中卷積的output检柬,是如何運(yùn)用的献联?
The reason here is to combine the information from the previous layers in order to get a more precise prediction.
- 在upsampling中使用feature channels能使得context information傳播到更高分辨率的層去(更高層的up layer)。
- 能夠通過鏡像的方法來推斷出丟失信息何址。