图像目标分割_3 SegNet + U-Net
6.3.1 SegNet背景
SegNet的主要動機是場景理解的應用。
- 難點:因此它在設計的時候考慮了要在預測期間保證內存和計算時間上的效率。分割的任務其實應用非常地廣,需要理解各個像素之間的關系,比如要區分出人行道和車行道,建筑物和道路,并且還要能夠檢測識別到小的物體,比如路邊的小狗,小貓。所以這個任務需要很高的精度,也很具有挑戰性。
- 思想:所以為了有個好的區分度,需要對物體的邊界有一個非常好的效果,特別是在特征提取的時候,需要保持這些邊界的信息(忽略高分辨率的特征圖(conv1,conv2的特征圖)肯定會導致邊緣信息的丟失)。另外在計算時間上面的要求也比較高。所以綜合這些原則考慮起來,想像著就比較有挑戰性。 FCN的解碼的部分的上采樣是可以學習的,這樣導致有很多的參數需要學習,這樣在end to end 訓練的時候比較難。
6.3.2 SegNet介紹
6.3.2.1 特點
- 1、編碼網絡和VGG-16的卷積層相同
- 2、移除了全連接層
- 3、解碼器使用從相應的編碼器接受的max-pooling indices來進行輸入特征圖的非線性upsampling
- 結構:
- 編碼網絡(encoder network):由13個卷積層組成(使用的時預訓練的VGG16的前13層),該部分提取輸入特征,用于目標分類,這就是使用預訓練的VGG原理所在,至于丟棄FC層是為了保持更高的分辨率,同時也減少了參數。
- 總共5個Block,每個Block都由Conv + Batch Norm + ReLU組成
- 解碼網絡(decoder network):每個encoder會對應一個decoder,故decoder具有13層,將低分辨率的feature map映射回和輸入一樣大小分類器(mask)。Decoder交替采用conv+upsampling
- 每個block由Upsampling + Conv + BN組成
- 像素分類層(pixelwise classification layer):decoder的輸出會送到分類層,最終為每個像素獨立的產生類別概率
- 編碼網絡(encoder network):由13個卷積層組成(使用的時預訓練的VGG16的前13層),該部分提取輸入特征,用于目標分類,這就是使用預訓練的VGG原理所在,至于丟棄FC層是為了保持更高的分辨率,同時也減少了參數。
6.3.2.2 max-pooling與deconvolution對比
- 首先做maxpooling的時候得到的數的原始的位置要記住
- 然后在上采樣的時候,在把這些值給還原到原位置,相當于得到了一個稀疏的上采樣feature,而FCN里面直接是deconvolution進行的上采樣。
索引記錄:
解碼網絡中max-pooling indics的好處:
- 1、減少了端到端訓練的參數量
- 2、僅需要少量的修改而可合并到任何編碼-解碼形式的架構
- 3、改善了邊界劃分
decoder階段是沒有加非線性激活的(即沒有ReLU)
在上采樣部分,卷積操作不使用偏置和ReLU
- 上采樣過程,就是通過卷積將稀疏的特征圖稠密化,ReLU激活引入非線性時產生很多0稀疏化了結果,起了反作用,因此不需要ReLU
- 偏置其實可以看做ReLU作用的閾值,沒有ReLU自然不需要偏置,總體都加上一個常數但沒有ReLU操作,這個值就沒有起到是否需要激活的作用,所以加不加沒有區別
6.3.2.3 訓練細節
1、使用數據集
使用CamVid路景數據集來對基于解碼器變體的性能進行基準測試.該數據集很小,由360×480分辨率的367次訓練和233次測試RGB圖像(白天和黃昏場景)組成。挑戰是劃分道路,建筑,汽車,行人,標志,極點,側路等11類.
2、圖像處理
- 使用BN改變數據分布,歸一化加速收斂
3、訓練
- 1、使用固定學習率0.1和動量0.9的隨機梯度下降(SGD)
- 2、每輪之前,訓練集被shuffle,然后按順序挑選每個小批量(12張圖像),從而確保每個圖像在一個epoch只被使用一次
- 3、使用交叉熵損失作為訓練網絡的目標函數,損失在一個小批量的所有像素上求和得到
- 4、訓練集中的每個類別(例如,道路,天空和建筑像素占主導地位的CamVid數據集)中像素數量的變化很大時,根據真實類別不同地加權.
- 這被稱為class balancing.使用median frequency balancing
- 分配給損失函數中的類的權重是在整個訓練集上計算的類頻率的中值除以類頻率的比率。這意味著訓練集中的較大類的權重小于1,最小類的權重最高
- 嘗試了不同類型的訓練,無需類平衡,也可以等效地使用natural frequency balancing
6.3.2.4 效果對比
SegNet并將其性能與FCN(解碼器結構不同的)進行比較,我們使用較小版本的SegNet,稱為SegNet-Basic,它具有4個編碼器和4個解碼器。然后創建了FCN-Basic,一個可比較的FCN版本
1、SegNet-Basic-SingleChannelDecoder:顯著減少了可訓練參數的數量和推理時間
-
2、內存擴大型SegNet(SegNet-Basic-EncoderAddition):這里使用上采樣的max-pooling indices,隨后進行卷積步驟以使其稀疏輸入變得更加密集.然后將其逐個添加到相應的編碼器特征圖,以產生解碼器輸出
-
結論:最好的情況下,當內存和推理時間都不受約束時,比如FCN-Basic-NoDimReduction和SegNet-EncoderAddition之類的較大型號比其他變體更準確.
- 特別地,在FCN-Basic模型中丟棄維數降低導致具有高BF分數的FCN Basic變體中的最佳性能。這再次強調了分割架構中存儲器與精度之間的權衡。
評測標準
- G值是global accuracy,測量數據集中所有像素正確分類的百分比。C值class average accuracy,所有類的預測準確度的平均值.還有就是在Pascal VOC12挑戰中使用的所有類的mIoU.
| global accuracy (G) | 在數據集上總體的準確率 |
| class average accuracy (C) | 平均每個類別的準確率 |
| mean intersection over union (mIoU) | 類平均IoU |
| bf score(少用) | f1分數(機器學習中的f1計算) |
6.3.3 SegNet總結
-
SegNet一種用于語義分割的深度卷積網絡架構。SegNet背后的主要動機是需要設計一種有效的道路和室內場景理解架構,這在存儲和計算時間方面都是有效的。
-
SegNet更有效率,因為僅存儲特征映射的最大池索引,并將其用于解碼器網絡以實現良好的性能。在大型和眾所周知的數據集中,SegNet具有競爭力,實現道路現場理解的高分。
6.3.4 U-Net-用于生物醫學圖像分割的卷積網絡(冠軍)
6.3.4.1 醫療影像的特點
生物學醫學領域:在許多視覺任務中,尤其是在生物醫學圖像處理中,所期待的輸出結果中應包括如位置和每一像素的類別標簽等信息。而且,在生物醫學任務中通常難以獲取數以千計的訓練圖像。
- 1、圖像語義較為簡單、結構較為固定。比如就用腦CT和腦MRI,由于器官本身結構固定和語義信息沒有特別豐富,所以高級語義信息和低級特征都顯得很重要(UNet的skip connection和U型結構就派上了用場)。
- 腦出血: 在CT影像上,高密度的區域就大概率是一塊出血,如下圖紅色框區域。
- 2、數據量少。醫學影像的數據獲取相對難一些,很多比賽只提供不到100例數據。所以我們設計的模型不宜多大,參數過多,很容易導致過擬合。
6.3.5 U-Net 詳解
U-Net提出了一種新的網絡結構和訓練方法,依靠數據增強將有效的標注數據更為有效地使用。
- 該網絡由收縮路徑(contracting path)和擴張路徑(expanding path)組成。其中,收縮路徑用于獲取上下文信息(context),擴張路徑用于精確的定位(localization),且兩條路徑相互對稱。
- 該網絡能夠從極少圖像端對端進行訓練,并且在ISBI競賽中,對于分割電子顯微鏡中的神經元結構的表現好于以前最好的方法(滑動窗口卷積網絡)。除此之外,該網絡的運行速度非常快,在最新一個GPU上,分割一張512*512的圖像不到一秒即可完成。
6.3.5.1 結構
一個contracting path即收縮路徑(左側)和一個expansive path即擴展路徑(右側)組成。
- 1、收縮路徑遵循卷積網絡的典型架構。它包括重復使用兩個3x3卷積(無填充卷積),每個卷積后跟一個線性修正單元(ReLU)和一個2x2最大池化操作,步長為2的下采樣。
- 在每個下采樣步驟中,我們將特征通道的數量加倍。
- 2、擴展路徑中的每一步都包括特征映射的上采樣
- 1、進行2x2卷積(“反卷積”),將特征通道數量減半,與來自收縮路徑的相應裁剪特征映射串聯
- 2、然后是兩個3x3卷積,每個卷積后面接ReLU。
- 由于每一次卷積都會丟失邊界像素,因此裁剪是必要的。在最后一層,使用1x1卷積將每個64分量特征向量映射到所需數量的類別上。
- 3、網絡采樣細節
- UNet的encoder下采樣4次,一共下采樣16倍,對稱地,其decoder也相應上采樣4次,將encoder得到的高級語義特征圖恢復到原圖片的分辨率。網絡較小運行速度快
圖中箭頭解釋:
* 每一步都首先使用反卷積(up-convolution),每次使用反卷積都將特征通道數量減半,特征圖大小加倍。(綠箭頭) * 反卷積過后,將反卷積的結果與contracting path中對應步驟的特征圖拼接起來。(白/藍塊) * contracting path中的特征圖尺寸稍大,將其修剪過后進行拼接。(左邊深藍虛線) * 對拼接后的map再進行2次3*3的卷積。(右側藍箭頭) * 最后一層的卷積核大小為1*1,將64通道的特征圖轉化為特定類別數量(分類數量,二分類為2)的結果。(青色箭頭)為什么效果好
1、底層(深層)信息:經過多次下采樣后的低分辨率信息。能夠提供分割目標在整個圖像中上下文語義信息,可理解為反應目標和它的環境之間關系的特征。這個特征有助于物體的類別判斷(所以分類問題通常只需要低分辨率/深層信息,不涉及多尺度融合)
2、高層(淺層)信息:經過concatenate操作從encoder直接傳遞到同高度decoder上的高分辨率信息。能夠為分割提供更加精細的特征。
6.3.5.2 訓練細節
- 1、采用隨機梯度下降法訓練。為了最小化開銷并最大限度地利用GPU內存,使用大的輸入圖塊而不是大的batch size,從而將批處理減少到單個圖像。最后一層使用交叉熵函數與softmax
- 2、為了凸顯某些像素點更加重要,作者在公式中引入了w(x)(類別不均衡)
- 對每一張標注圖像預計算了一個權重圖,來補償訓練集中每類像素的不同頻率,使網絡更注重學習相互接觸的細胞之間的小的分割邊界
- 權重計算公式如下:使用形態學操作計算分割邊界,w?c??是用于平衡類別出現頻率的權重,?d1d1代表到最近細胞的邊界的距離,?d2代表到第二近的細胞的邊界的距離。基于論文經驗設定w?0??=10, σ≈5像素
- 網絡的權重進行高斯分布初始化,分布的標準差為2/N2/N,N為每個神經元的輸入節點數量。
- 例如,對于一個上一層是64通道的3x3卷積核來說,N=9x64
6.3.5.3 數據增強
- 1、平移與旋轉不變性,并且對形變和灰度變化魯棒
- 2、將訓練樣本進行隨機彈性形變是訓練分割網絡的關鍵
- 使用隨機位移矢量在粗糙的3x3網格上(random displacement vectors on a coarse 3 by 3 grid)產生平滑形變(smooth deformations)。
- 位移是從10像素標準偏差的高斯分布中采樣的。然后使用bic插值計算每個像素的位移。在contracting path的末尾采用drop-out 層更進一步增加數據(bilinear與bicubic 插值圖像處理介紹)
- 使用隨機位移矢量在粗糙的3x3網格上(random displacement vectors on a coarse 3 by 3 grid)產生平滑形變(smooth deformations)。
6.3.6 U-net實驗效果
下面是U-Net在兩種不同的分割任務中的應用效果
1、U-Net應用于光學顯微圖像中的細胞分割任務
ISBI細胞跟蹤挑戰的結果。(a)“PhC-U373”數據集的輸入圖像的一部分 (b)分割結果(青色掩模)和人工標注的GT(黃色邊框) (c)“DIC-HeLa”數據集的輸入圖像 (d)分割結果(隨機彩色掩模)和人工GT(黃色邊框)
評估結果:包含35個部分注釋的訓練圖像。實現了92%的平均IOU
其中“DIC-HeLa”另外一個數據集,這里不做介紹了。
2、總結
U-Net結構在不同的生物醫學分割應用中都取得了非常好的性能。由于彈性形變的數據增強,它只需要很少的標簽圖像,并且有一個非常合理的訓練時間,在英偉達Titan GPU(6GB)只需10小時。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的图像目标分割_3 SegNet + U-Net的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SCI论文写作训练营笔记汇总03_科技论
- 下一篇: 计算机网络阅读报告,计算机网络实验二报告