提公升語義分割效能的幾種方法

2021-09-18 06:12:15 字數 2341 閱讀 5168

本文主要記錄幾種提公升基於深度學習的影象語義分割精度的方法,以防忘記!

by zhengzibing2011, 2023年10月21日-星期六

1.影象語義分割面臨的挑戰

(1).特徵解析度減小:主要是由神經網路中的重複最大池化和降取樣(stride跨越)操作造成的,而採用此種操作的原因是

a.降維,以免引數過多難以優化;

b.基於dl的語義分割是從用於分類任務的cnn轉化而來,而在分類任務中,分類器要求對輸入的空間變換具有不變性,池化恰能滿足這樣的要求。

(2).不同scale下的目標存在的狀況:主要是目標在multi-scale影象中的狀態造成的,因為在同一種尺度下,不同目標的特徵往往響應並不相同。如需要在較大的尺度下才能較好地提取影象中比較小的目標,而較大的目標為了獲取全域性性資訊也必須在較小的尺度下才能實現。

(3). cnn的空間不變性造成定位精度的下降:對於分割任務而言,由於pooling操作引起的分類器對輸入的空間變換具有不變性丟失空間資訊,內在的限制了分割的空間精度。

2.潛在的解決方法

fcn作為將cnn應用於semantic segmentation的forerunner,貢獻巨大。但不可迴避,其提出的方法具有一些不足。為保證卻終的feature map不至於過小,fcn的conv1引入pad=100,引入了較大的雜訊;

32倍upsample(deconvolution)非常粗糙,而且deconvolution的filter不可學習; skip architecture雖能有效提高精度,但需要3次訓練即fcn-32s->fcn-16s->fcn-8s。除skip architecture外。隨著研究的深入,針對以上挑戰,有以下幾種方法解決:

(1). encoder-decoder結構

採用此種思想的代表為deconvnet,segnet,其基本思想是採用一種對稱結構將由於pooling操作而減小的feature map通過逐步的upsample逐漸恢復到原影象大小,同時在upsample階段,融合了subsample中pooling index,具體細節可參見原文。

segnet

(2). atrous convolution

feature map的減小是由於pooling造成的,為確保一定精度的feature map,能否不使用或減少使用pooling呢?理論上是可行的,但如果這樣做會使得需要優化的引數過多,重要的是難以基於以前的model進行fine-tuning,atrous convolution解決了這個問題。

在deeplab中令pool4,pool5的stride=1,再加上1 padding,這樣經過pooling後feature map大小不變,但後層的感受野發生了變化,為使感受野不變,後面的卷積層使用atrous convolution,其作用是在不增加引數的前提下,增加感受野。因此,解決了feature map空間解析度下降的問題。

針對不同scale下的目標存在的狀況問題,可通過兩種方法解決:

a.標準的多尺度處理方法,用共享相同引數的並行cnn的分支,從不同尺度的input image中提取score map,然後進行雙線性差值,最終對它們進行融合,在不同尺度上獲得每個位置的最大響應。訓練和測試時均這樣處理,比較繁瑣的是需要計算輸入影象的每個尺度在各layer上的特徵響應。

b.基於任意尺度上的區域都可以用在這個單一尺度上重取樣卷積特徵進行精確有效地分類的思想,使用多個不同取樣率上的多個並行多空卷積,每個取樣率上提取的特徵再用單獨的分支處理,融合生成最後的結果。

crf幾乎可以用於所有的分割任務中影象精度的提高。cnn可用於對影象中的目標進行分類並**出目標的大致位置,但並不能真正描繪他們的邊界。因此,將dcnn的識別能力和全連線crf優化定位精度耦合在一起,能成功的處理定位挑戰問題,生成了精確的語義分割結果。全連線crf理論較為複雜,在此不作闡述。類似的概率圖模型(pgm)還有mrf,g-crf(高斯-條件隨機場)。

3.總結

效能測試的幾種方法

負載測試 負載測試是使用者觀點的測試行為。簡單說來就是負載測試就是讓系統在一定得負載壓力下進行正常的工作,觀察系統的表現能否滿足使用者的需求。使用者的需求從何而來?需求分析 特指效能測試的需求分析。由此看來需求分析是相當重要的。負載測試是站在使用者的角度去觀察在一定條件下軟體系統的效能表現。負載測試...

分割字串的幾種方法

單個字元分割 string s abcdeabcdeabcde string sarray s.split c foreach string i in sarray console.writeline i.tostring 輸出下面的結果 ab deab deab de多個字元分割 string s...

對於大日誌分割的幾種方法

ls lrth test.log rw r r 1 root root 645m 5月 30 20 42 test.log wc l test.log 8856340 test.log含義 b分割後的文件大小,單位是byte c分割後的文件,單行最大byte數 d使用數字作為字尾,同時使用 a le...