【CV現狀-3.1】影像分割

  • 2019 年 10 月 3 日
  • 筆記

#磨染的初心——電腦視覺的現狀

【這一系列文章是關於電腦視覺的反思,希望能引起一些人的共鳴。可以隨意傳播,隨意噴。所涉及的內容過多,將按如下內容劃分章節。已經完成的會逐漸加上鏈接。】

  1. 緣起
  2. 三維感知
  3. 目標識別
    3.0. 目標是什麼
    3.1. 影像分割
    3.2. 紋理與材質
    3.3. 特徵提取與分類
    3.4. 其它
  4. 目標(和自身)在三維空間中的位置關係
  5. 目標的三維形狀及其改變、目標的位移
  6. 符號識別
  7. 數字影像處理

影像分割

為了通過材質、形狀、結構識別目標,對影像進行分割應該是必然的選擇。在這一點上電腦視覺研究者們算是勉強達成了共識,影像分割甚至被很多研究者列為電腦視覺的基本任務之一了。很多影像分割演算法被提了出來,歸納起來可以分為基於閾值的方法、基於聚類的方法、基於區域的方法、基於圖割的方法、活動邊界模型和水平集、基於卷積神經網路的方法。

基於閾值的方法里,有全局一個閾值的,也有對影像不同區域使用不同閾值的。此類方法的關鍵在於確定閾值,然而對於大多數影像即使遍歷所有的取值也無法找到實現合理分割的閾值,因此該演算法常用於符號識別、指紋識別和分割遙感領域中的各種指數影像(水體指數、植被指數、乾旱指數、熱紅外影像)。

凡是認真思考或者親身嘗試過的,都會承認基於聚類的方法的分割結果難以令人接受。所有的聚類演算法都直接或者間接假設了類別內部的樣本密度高於類別邊界的樣本密度。觀察過一些影像的直方圖後就會發現,像素在像元值空間的分布形狀通常都類似鍾型曲線(只有一個凸起),也就是說按照聚類演算法的假設應該將全部像素聚為一類。即使同時使用多個影像通道,這種情況也沒有什麼改觀。沒有或者難以使用空間資訊是基於聚類的方法的直接缺陷,導致分割結果形狀複雜、越過顯而易見的邊界。通常基於聚類的方法都作為其他演算法的預處理步驟,在影像處理領域用於壓縮顏色數量。

基於聚類的方法中有一個叫做SLIC的超像素分割演算法與基本的聚類演算法有較大的不同,首先在影像上均勻的撒上種子點,然後以一定的半徑執行KMeans聚類,所使用的距離度量方法考慮到了空間資訊。該演算法與方格網形劃分超像素相比有很大的優勢,但是由於聚類演算法的用於分割的天然缺陷仍然會導致超像素越過顯而易見的邊界。如果目標是為了保持形狀的準確性,SLIC並不是很好的預處理選擇

基於區域的方法目前包含種子區域生長、區域分裂和合併、分水嶺。種子區域生長法的關鍵在於種子點的選擇、相似性的度量、生長規則,其中相似性度量最為關鍵。常用的相似性度量方法有像元值、顏色、紋理,相似性的度量也是區域分裂和合併法的最關鍵所在。區域分裂和合併的另外一個關鍵是分裂和合併的機制。分水嶺演算法通常應用在梯度圖上,將梯度值看作高程值,設想從高程值的局部極小值處向外涌水,整幅圖上水位升高的速度是一樣的,在兩處涌水相遇處修建堤壩。當水位上升至最高點後,所有像素點都被淹沒,所有的堤壩形成對影像的分割。分水嶺演算法對微弱的邊緣也有很好的響應,因而也會導致過分割。對於保持形狀來說,分水嶺加區域分裂和合併應該還有較大的提升空間

基於圖割的方法是將影像分割轉換為圖的最小割問題,關鍵在於設置邊的權重,這只不過是相似性度量的另一個稱呼。因此基於圖割的全圖分割方法並不會比種子區域生長、區域分裂和合併更好;此外最小割是NP問題,難以最優求解。基於圖割的方法中值得一提的是Graphcut和Grabcut,該演算法用於分割前背景,需要人工粗略標註部分背景和前景。這兩個演算法的直接意義在於影像處理領域的互動式前景提取。

活動邊界模型和水平集的用處同樣在於互動式前景提取,需要人工提供初始前景範圍曲線,然後讓範圍曲線在根據影像數據得到的能量函數的作用下演化,使其向前景邊緣逐漸逼近,最終找到前景的邊緣,在達到前景邊緣時能量函數的取值最小。活動邊界模型直接對範圍曲線進行演化,而水平集則根據初始範圍曲線及影像數據構造出三維曲面,通過三維曲面的演化以及取等值線的方式間接實現範圍曲線的演化。前背景的邊緣處一定具有較大的梯度,因此能量函數最重要的構造依據就是影像的梯度,僅依靠梯度會陷入局部最優,一般還會加入曲線的曲率和其它先驗知識。活動邊界模型和水平集方法不過是希望通過曲線和曲面的傳遞作用以及其它先驗突破梯度的局部極大值,在前景分割上的表現不會比基於圖割的方法更好,事實也是如此。

基於卷積神經網路的方法包括語義分割、實例分割、全景分割三種,歸根到底都是通過已知的樣本數據建立像素及其一定範圍內領域的像素到實例或者類別的映射。得益於神經網路能夠模擬任意函數的優勢,在大量樣本數據參與訓練的條件下所建立出來的映射模型具有較高的準確性。然而機械的映射模型的缺陷也是顯而易見的,遷移能力(只能分割貓的網路不能分割狗)和泛化能力(只能分割白貓的網路分割不了花貓)幾乎沒有。另外由於映射模型過分複雜,輸入數據的輕微改變也會導致無法預料的錯誤(像素攻擊)

以上就是影像分割的所有進展,凡是有過嘗試的人都會承認,即使人類也很難從目前影像分割的結果中提取出形狀和結構特徵。不禁要問,在沒有識別出目標的情況下,到底能夠分割到什麼程度?目前影像分割演算法是否還能繼續提升?就我個人的感覺,目前的進展還未達到影像分割的極限,雖然不可能達到人類的水平,但是仍然有很大的提升空間。關鍵的問題是朝著什麼方向去提升,也就是應該用什麼指標來評價影像分割能力的提升

目前影像分割演算法的評價指標都是基於IOU的,IOU直接強調的是面積,而面積對於圖斑來說是區分度非常差的特徵。對於很多形狀複雜的自然目標來說,IOU大但是形狀和結構則相去甚遠,因此基於IOU的評價指標對於強調形狀和結構沒有任何價值。但是目前並沒有形狀和結構特徵的描述方法,彷彿陷入了進退兩難的境地。其實不難看出,如果邊界是準確的,那麼將準確的邊界連接起來就能形成準確的分割。邊界的少量錯位是在所難免的,因此在評價邊界的準確性時需要允許一定程度的錯位。但是若果邊界有缺失,則無論如何也無法恢復形狀和結構了。至此,分割演算法的一項評價指標就呼之欲出了——邊界缺失率。與之對應的另一項評價指標則是——邊界冗餘率