醫學圖像分割是醫學圖像處理與分析領域的複雜而關鍵的步驟,其目的是將醫學圖像中具有某些特殊含義的部分分割出來,並提取相關特徵,爲臨牀診療和病理學研究提供可靠的依據,輔助醫生作出更爲準確的診斷。由於醫學圖像自身的複雜性,在分割過程中需要解決不均勻及個體差異等一系列問題,所以一般的圖像分割方法難以直接應用於醫學圖像分割。當前,醫學圖像分割仍在從手動分割或半自動分割向全自動分割發展。
圖像分割的定義:
令R代表整個圖像區域,對R的分割可看做將R分成若干個滿足以下條件的非空子集(子區域){R1,R2,R3…Rn}。該集合滿足以下特性:
目前國內外廣泛應用的醫學圖像分割方法有很多種,許多學者試應用數學、物理、光學、計算機等領域知識拓展醫學圖像分割的理論方法。
圖像分割方法可以分爲以下幾類:
(1)基於閾值的分割:通過閾值對不同的物體進行分割。
閾值分割是最常見的並行直接檢測區域的分割方法。[2]如果只用選取一個閾值稱爲單閾值分割,它將圖像分爲
目標和背景;如果需用多個閾值則稱爲多閾值方法,圖像將被分割爲多個目標區域和背景,爲區分目標,
還需要對各個區域進行標記。閾值分割方法基於對灰度圖像的一種假設:目標或背景內的相鄰像素間的灰度值是
相似的,但不同目標或背景的像素在灰度上有差異,反映在圖像直方圖上就是不同目標和背景對應不同的峯。
選取的閾值應位於兩個峯之間的谷,從而將各個峯分開。
閾值分割的優點是實現相對簡單,對於不類的物體灰度值或其他特徵值相差很大時,能很有效的對圖像進行分割。
閾值分割通常作爲醫學圖像的預處理,然後應用其他一系列分割方法進行後處理。
閾值分割的缺點是不適用於多通道圖像和特徵值相差不大的圖像,對於圖像中不存在明顯的灰度差異或各物體的灰
度值範圍有較大重疊的圖像分割問題難以得到準確的結果。另外,由於它僅僅考慮了圖像的灰度信息而不考慮圖像
的空間信息,閾值分割對噪聲和灰度不均勻很敏感。
閾值選取的幾種方法爲直方圖閾值分割法、類間方差閾值分割法、二維最大熵值分割法和模糊閾值分割法。
(2)基於邊緣的分割:先確定邊緣像素,並把它們連接在一起,以構成所需的邊界
基於邊緣的分割方法可以說是人們最早研究的方法,基於在區域邊緣上的像素灰度值的變化往往比較劇烈,它試圖
通過檢測不同區域間的邊緣來解決圖像分割問題。邊緣檢測技術可以按照處理的技術分爲串行邊緣檢測以及並行邊
緣檢測。所謂串行邊緣檢測是指:要想確定當前像素點是否屬於欲檢測邊緣上的一點,取決於先前像素的驗證結
果;而在並行邊緣檢測技術中,一個像素點是否屬於檢測邊緣上的一點取決於當前正在檢測的像素點以及該像素點
的一些相鄰像素點,這樣該模型可以同時用於圖像中的所有像素點,因而稱之爲並行邊緣檢測技術。 根據灰度變化
的特點,常見的邊緣可分爲躍階型、房頂型和凸緣型。
邊緣檢測分爲三類:點檢測、線檢測和邊緣檢測。點檢測是檢測圖像中孤立的點,線檢測主要是哈夫變換,利用
圖像全局特性而直接檢測目標輪廓,即可將邊緣像素連接起來組成區域封閉邊界的常用方法。邊緣檢測依據兩個
具有不同灰度值的相鄰區域之間總存在邊緣,邊緣檢測算子很多,如梯度算子,方向算子,拉普拉斯算子,馬爾
算子,綜合正交算子,坎尼算子等。
代碼實現傳統算子的圖形分割:下圖中分別是:原圖——>sobel算子水平檢測器——>sobel 算子垂直檢測器——>拉普拉斯算子——>Canny算子(其餘的邊緣檢測方式,下期介紹)
(3)基於區域的分割:把各像素劃歸到各個物體或區域中
圖像分割-把圖像分解爲若干個有意義的子區域,而這種分解-基於物體有平滑均勻的表面,與圖像中強度恆定或緩慢變化的區域相對應,即每個子區域都具有一定的均勻性質前面所討論的邊緣、閾值,沒有明顯使用分割定義中的均勻測度度量區域分割-直接根據事先確定的相似性準則,直接取出若干特徵相近或相同象素組成區域。常用的區域分割-區域增長(區域生長)、區域分裂-合併方法等。
區域生長和分裂合併是兩種典型的串行區域分割方法。其特點是將分割過程分解爲順序的多個步驟,其中後續步驟要根據前面步驟的結果進行判斷而確定。
區域生長的基本思想是將具有相似性質的像素集合起來構成區域,該方法需要先選取一個種子點,然後依次將種子像素周圍的相似像素合併到種子像素所在的區域中。區域生長算法的研究重點一是特徵度量和區域增長規則的設計,二是算法的高效性和準確性。區域增長方式的優點是計算簡單。與閾值分割類似,區域增長也很少單獨使用,往往是與其他分割方法一起使用,特別適用於分割小的結構如腫瘤和傷疤。區域生長的缺點是它需要人工交互以獲得種子點,這樣使用者必須在每個需要抽取出的區域中植入一個種子點。同時,區域增長方式也對噪聲敏感,導致抽取出的區域有空洞或者在局部體效應的情況下將分開的區域連接起來。爲解決這些問題,J.F. Mangin 等提出了一種同倫的區域生長方式,以保證初始區域和最終抽取出的區域的拓撲結構相同。Shu-Yen Wan 等提出的對稱區域增長算法有效地彌補了原算法對種子點敏感和佔用內存多的弱點,而且對3D連接對象標記和刪除空洞的算法效率較高。另外,模糊連接度方法與區域增長相結合也是一個發展方向。
區域生長方法將圖像以像素爲基本單位來進行操作。主要方法可以基於區域灰度差,基於區域內灰度分佈統計性質,或基於區域形狀。
分裂合併方法利用圖像數據的金字塔或四叉樹結構的層次概念,將圖像劃分爲一組任意不相交的初始區域,即可以從圖像的這種金字塔或四叉樹數據結構的任一中間層開始,根據給定的均勻性檢測準則,進行分裂和合並這些區域,逐步改善區域劃分的性能,知道最後將圖片分成數量最少的均勻區域爲止。
(4)基於運動的分割:通過視頻物體運動進行分割
隨着多媒體技術的發展,視頻圖像得到廣泛應用,由一系列時間上連續的2-D圖像組成。
從空間分割的角度來看,視頻圖像分割主要是希望把其中獨立運動的區域(目標)逐幀檢測處理。
從時間分割的角度來看,主要是把連續的序列分解爲時間片斷。
(5) 基於活動輪廓模型的方法
活動輪廓模型,又稱Snake模型,由Kass在1987年提出。由於 Snake模型有着高效的數值方案以及嚴謹的數學基礎,且應用廣泛,提出後即成爲圖像分割領域所研究的熱點。
原始的Snake模型其基本思想是通過能量最小化,將一條帶有能量函數的初始曲線朝着待檢測的目標輪廓方向逐步
變形與運動,最終收斂到目標邊界,得到一個光滑並且連續的輪廓。原始Snake模型首先在目標區域附近手動設置
一條閉合曲線作爲Snake模型的初始輪廓線,初始輪廓線隨時間不斷演化,越來越逼近目標邊界,當演化停止時即
獲得最終結果。Snake算法的3個主要步驟爲:(1)讀取數據;(2)數據的預處理,如圖像的去噪、求梯度,求外力場
等;(3)確定模型的參數與迭代次數,然後開始迭代。
原始的Snake模型存在難以捕捉目標凹陷邊界及對初始輪廓線敏感等不足,因而後續有許多改進的方法。在此也不過多描述。
(6)模糊聚類算法
大多數的醫學圖像具有模糊性,圖像質量低、噪聲大。模糊聚類法將模糊集理論與聚類算法相結合,模糊集理論對圖像的不確定性具備較好描述能力,將此特點結合到分類中,應用到醫學圖像分割領域。該方法不是以“一刀切”的方式將像素點硬性分到某一區域,而是引入模糊理論中“隸屬度”的概念,將像素點分到隸屬程度高的區域中去,提高分割的準確率。目前最常用的是模糊C- 均值算法 (FCM),該算法通過兩次迭代得到最優邊界。
(7)基於小波變換的方法
小波變換是對Fourier分析的繼承與發展,利用小波變換進行醫學圖像分割的基本方法是通過小波變換將圖像直方圖分解成不同級別的係數,用尺度控制並依照小波係數和給定的分割準則來選擇閾值。小波變換在較大尺度上由噪音引起的細小突變較少,容易描述醫學圖像信號的整體行爲,可檢測出醫學圖像灰度值變化較大的輪廓,因此可以通過在不同尺度下逐步確定閾值來處理醫學圖像。
以上7類均爲傳統分割方法。每一種都有諸多變形與改進。還有基於圖論、圖譜引導、數學形態學等等研究。但主要任務是用深度算法研究醫學圖像中的分割任務。
下面介紹醫學圖像中常用的損失函數,包括cross entropy, generalized dice coefiicients, focal loss 等。
一、cross entropy 交叉熵
圖像分割中最常用的損失函數是逐像素交叉熵損失。該損失函數分別檢查每個像素,將類預測(深度方向的像素向量)與我們的熱編碼目標向量進行比較。
cross entropy
由此可見,交叉熵的損失函數單獨評估每個像素矢量的類預測,然後對所有像素求平均值,所以我們可以認爲圖像中的像素被平等的學習了。但是,醫學圖像中常出現類別不均衡(class imbalance)的問題,由此導致訓練會被像素較多的類主導,對於較小的物體很難學習到其特徵,從而降低網絡的有效性。
有較多的文章對其進行了研究,包括 Long et al. 的 FCN 在每個通道加權該損失,從而抵消數據集中存在的類別不均的問題。同時,Ronneberger et al.提出的 U-Net 提出了新的逐像素損失的加權方案,使其在分割對象的邊界處具有更高的權重。該損失加權方案以不連續的方式幫助他們的 U-Net 模型細分生物醫學圖像中的細胞,使得可以在二元分割圖中容易地識別單個細胞。
二、dice coefficient
dice coefficient 源於二分類,本質上是衡量兩個樣本的重疊部分。該指標範圍從0到1,其中“1”表示完整的重疊。 其計算公式爲:
intersection
因爲我們的目標是二進制的,因而可以有效地將預測中未在 target mask 中“激活”的所有像素清零。對於剩餘的像素,主要是在懲罰低置信度預測; 該表達式的較高值(在分子中)會導致更好的Dice係數。
其中,在式子中 Dice係數的分子中有2,因爲分母“重複計算” 了兩組之間的共同元素。爲了形成可以最小化的損失函數,我們將簡單地使用1-Dice。這種損失函數被稱爲 soft dice loss,因爲我們直接使用預測概率而不是使用閾值或將它們轉換爲二進制mask。
關於神經網絡輸出,分子涉及到我們的預測和 target mask 之間的共同激活,而分母將每個mask中的激活量分開考
慮。實際上起到了利用 target mask 的大小來歸一化損失的效果,使得 soft dice 損失不會難以從圖像中具有較小空
間表示的類中學習。
soft dice loss 將每個類別分開考慮,然後平均得到最後結果。
dice loss比較適用於樣本極度不均的情況,一般的情況下,使用 dice loss 會對反向傳播造成不利的影響,容易使訓練變得不穩定。
三、focal loss
因此,對於大量的easy negative examples,這些loss會主導梯度下降的方向,淹沒少量的正樣本的影響。
該損失函數在何凱明 1-stage 目標檢測框架中被提出。專爲解決 class imbalance 問題。首先定性感受一下 target
problem(基於目標檢測背景):
在目標檢測領域,常用的損失函數爲CE(cross entropy)。但會帶來一些問題:
(1)首先,在目標檢測中,一般圖像的目標所佔的比例會遠遠小於背景,在傳統的樣本分類中,被分爲 positive 和 negative 兩類。由於 negative 樣本過多,會造成它的loss太大,容易把 positive 的 loss 遮蓋從而不利於整個目標函數的收斂,針對這個問題,用平衡的CE (balanced cross entropy)改進傳統CE
(2)實際上,大多negative 樣本位於背景區,而極少的 negative 位於前景和背景的過渡區。位於背景區的樣本分類相對容易,成爲easy negative, 訓練時對應的score很大,loss 相對很小,在計算反向梯度時,造成easy negative example對參數收斂作用有限。從而導致hard negative 樣本很難得到更新,效果不佳。
究其原因,是由於常用的損失函數,傳統CE(cross entropy)包括平衡化的 CE 均只有 positive/ negative 的區分,未考慮到 easy/ hard 的樣本區分。根據分類,有以下幾類樣本:hard positive(IOU>0.5), easy positive, hard negative(IOU<0.4) 以及 easy negative。
所以提出了focal loss 加大 hard negative的 loss值,使之更好的訓練。
主要就是增加了 調節因子。調節因子有兩方面作用:1)當網絡錯分類的時候,p_{t} 很小,公式基本不變,但當 p_{t} 很大,大大降低了 easy example 的損失權重。2) focusing parameter, gamma增強了調節因子的作用。
整體上看,調節因子降低了 easy example 損失的貢獻,調節了簡單樣本權重降低的速率,並拓寬了樣本接收低損失的範圍。對於困難樣本的學習更有利。值得注意的是, \alpha 和調節因子需要配合使用,具體實現時,可以參考論文中的實驗進一步探究。
本文引用博主「Biyoner」的文章,下一章我把常用的以學影像圖像分割算法全部羅列一遍,並且附上源碼,感興趣的朋友可以關注一下,一起學習深度學習,加油!
另外推薦一下我自己的微信羣,羣中都是學習深度學習的,與羣裏的深度學習工程師們一起交流學習吧!
上海第二工業大學智能科學與技術大二 周小夏(CV調包俠)