算法原理
基于深度學習的圖像分割算法屬于圖像處理領域最高層次的圖像理解范疇。所謂圖像分割就是把圖像分割成具有相似的顏色或紋理特性的若干子區域,并使它們對應不同的物體或物體的不同部分的技術。這些子區域,組成圖像的完備子集,又相互之間不重疊。
1、傳統分割方法
圖像分割問題最早來自于一些文本的分割,醫學圖像分割。在文本圖像分割中,需要切割出字符,常見的問題包括指紋識別,車牌識別;由于這一類問題比較簡單,因為基于閾值和聚類的方法被經常使用。基于閾值和聚類的方法雖然簡單,但因此也經常失效。以graphcut為代表的方法,是傳統圖像分割里面魯棒性最好的方法。Graphcut的基本思路,就是建立一張圖,其中以圖像像素或者超像素作為圖像頂點,然后移除一些邊,使得各個子圖不相連從而實現分割。圖割方法優化的目標是找到一個切割,使得移除邊的和權重最小。
2、深度學習方法:
全卷積神經網絡(Fully connected Network)是第一個將卷積神經網絡正式用于圖像分割問題的網絡。一個用于分類任務的深度神經網絡通過卷積來不斷抽象學習,實現分辨率的降低,最后從一個較小的featuremap或者最后的特征向量,這個featuremap通常為55或者77等大小。而圖像分割任務需要恢復與原尺度大小一樣的圖片,所以,需要從這個featuremap恢復原始圖片尺寸,這是一個上采樣的過程。由于這個過程與反卷積是正好對應的逆操作,所以我們通常稱其為反卷積。代表算法有FCN、Unet、Deeplab等。
3、深度學習算法較之傳統分割算法的優勢:
(1)學習能力強:深度學習自動提取低層次或者高層次特征,具有較強的學習能力。
(2)覆蓋范圍廣,適應性好:深度學習的神經網絡層數很多,寬度很廣,理論上可以映射到任意函數,所以能解決很復雜的問題。
(3)數據驅動,上限高:深度學習高度依賴數據,數據量越大,它的表現就越好。在圖像識別、面部識別、NLP 等部分任務甚至已經超過了人類的表現。同時還可以通過調參進一步提高它的上限。
(4)可移植性好:由于深度學習的優異表現,有很多框架可以使用,例如 TensorFlow、Pytorch。這些框架可以兼容很多平臺。
傳統分割方法中特征提取主要依賴人工設計的提取器,需要有專業知識及復雜的調參過程,同時每個方法都是針對具體應用,泛化能力及魯棒性較差。存儲開銷大,計算效率低下,識別速度較慢。
深度學習主要是數據驅動進行特征提取,根據大量樣本的學習能夠得到深層的、數據集特定的特征表示,其對數據集的表達更高效和準確,所提取的抽象特征魯棒性更強,泛化能力更好,并且可以是端到端的。
4、Unet算法
本項目使用了基于深度學習的Unet網絡:Unet網絡由兩部分組成,前半部分作用是特征提取(基礎模型為MobileNet),后半部分是上采樣。在一些文獻中也把這樣的結構叫做編碼器-解碼器結構。由于此網絡整體結構類似于大寫的英文字母U,故得名Unet。

Unet與其他常見的分割網絡有一點非常不同的地方:Unet采用了完全不同的特征融合方式:拼接,Unet采用將特征在channel維度拼接在一起,形成更厚的特征。而FCN融合時使用的對應點相加,并不形成更厚的特征。
所以語義分割網絡在特征融合時有兩種辦法:
(1)FCN式的對應點相加,對應于TensorFlow中的tf.add()函數;
(2)Unet式的channel維度拼接融合,對應于TensorFlow的tf.concat()函數,比較占顯存。
除了上述新穎的特征融合方式,Unet還有以下幾個優點:
(1)5個pooling layer實現了網絡對圖像特征的多尺度特征識別。
(2)上采樣部分會融合特征提取部分的輸出,這樣做實際上是將多尺度特征融合在了一起,以最后一個上采樣為例,它的特征既來自第一個卷積block的輸出(同尺度特征),也來自上采樣的輸出(大尺度特征),這樣的連接是貫穿整個網絡的,可以看到上圖的網絡中有四次融合過程,相對應的FCN網絡只在最后一層進行融合。
數據集準備
深度學習模型的精確度一般依賴于數據集的大小,CNN要求用于訓練的數據集足夠大,能夠覆蓋問題域中所有已知可能出現的問題。設計CNN的時候,數據集包含三個子集:訓練集、測試集、驗證集。
1、訓練集:包含問題域中的所有數據,并在訓練階段用來調整網絡的權重。
2、測試集:在訓練的過程中用于測試網絡對訓練集中未出現數據的檢測性能,根據網絡在測試集上的性能情況,網絡的結構可能需要做出調整,或者增加訓練循環次數。
3、驗證集:驗證集中的數據統一應該包含在測試集和訓練集中沒有出現過的數據,用于在網絡確定之后能夠更好的測試和衡量網絡的性能。
數據預處理與參數設置
1、數據預處理
為了加速訓練的收斂速度,一般都會采用一些數據預處理技術,其中包括:去除噪聲、輸入數據降維、刪除無關數據等。
數據的平衡化在目標檢測問題中異常重要,一般認為訓練集中的數據應該相對于標簽類別近似于平均分布,也就是每一個類別標簽所對應的數據集在訓練集中是基本相等的,以避免網絡過于傾向于表現某些分類的特點。
為了平衡數據集,應該移除一些過度富余的分類中的數據,并相應補充一些相對樣例稀少的分類中的數據。還有一個方法就是復制一部分這些樣例稀少的數據,并在這些數據中加入隨機噪聲。
2、數據歸一化
將數據規則化到統一的區間(如[0,1])中,可以防止數據中存在較大數值的數據造成數值較小的數據對于訓練效果減弱甚至無效化。一個常用的方法是將輸入和輸出數據按比例調整到一個和激活函數相對應的區間。
3、網絡權值初始化
CNN的初始化主要是初始化卷積層和輸出層的權值和偏置。網絡權值初始化就是將網絡中的所有連接權重賦予一個初始值,如果初始權重向量處在誤差曲面的一個相對平緩的區域的時候,網絡訓練的收斂速度可能會很緩慢,一般情況下網絡的連接權重和偏置被初始化在一個具有0均值的相對小的區間內均勻分布。
4、學習速率
如果學習速率選取的較大,則會在訓練過程中較大幅度的調整權值,從而加快網絡的訓練速度,但是這會造成網絡在誤差曲面上搜索過程中頻繁抖動,且有可能使得訓練過程不能收斂。如果學習速率選取的較小,能夠穩定的使得網絡逼近于全局最優點,但也可能陷入一些局部最優,并且參數更新速度較慢。自適應學習率設定有較好的效果。
5、收斂條件
訓練誤差、誤差梯度、交叉驗證等可以作為停止訓練的判定條件。一般來說,訓練集的誤差會隨著網絡訓練的進行而逐步降低。
標注
對訓練集和測試集的數據使用專業的標注工具進行標注,本項目標注圖片數量為5000張。
訓練流程
訓練過程分為兩個階段:前向傳播階段和后向傳播階段
前向傳播階段:
1、從樣本集中取N個樣本,輸入網絡。
2、計算相應的實際輸出,在此階段信息從輸入層經過逐級變換,傳送到輸出層。
后向傳播階段:
1、計算實際輸出與相應的理想輸出的誤差。
2、按照極小化誤差的方法調整權值矩陣。
具體訓練過程如下:
1、選定訓練組,從樣本集中分別隨機地尋求N個樣本作為訓練組。
2、將各權值、偏置,設置成小的接近于0的隨機值,并初始化精度控制參數和學習率。
3、從訓練組中取一個輸入模式加到網絡,并給出它的目標輸出向量。
4、計算出中間層輸出向量,計算出網絡的實際輸出向量。
5、將輸出向量中的元素與目標向量中的元素進行比較,計算出輸出誤差;對于中間層的隱單元也需要計算出誤差。
6、依次計算出各權值的調整量和偏置的調整量。
7、調整權值和調整偏置。
8、當經歷M次迭代后,判斷指標是否滿足精度要求,如果不滿足,則返回步驟3,繼續迭代;如果滿足就進入下一步。
9、訓練結束,將權值和偏置保存在模型文件中。這時可以認為各個權值已經達到穩定,模型已經形成。再一次進行訓練時,直接從模型文件中導出權值和偏置進行訓練,不需要進行初始化。
識別流程
利用訓練好的模型對待檢測的圖片進行缺陷檢測的具體流程大致為:
1、將整張圖片傳入模型進行下采樣,得到特征圖。
2、將特征圖進行上采樣且結合下采樣特征圖得到與原圖尺寸一樣的mask圖。
3、對mask圖進行可視化即可看到測試結果。
模型優化
針對識別結果可以通過以下方法優化模型:
1、增加樣本數量。
2、豐富缺陷種類和平衡每種缺陷的樣本數量。
3、調整模型參數。
來源:工業新視力
審核編輯:湯梓紅
-
神經網絡
+關注
關注
42文章
4838瀏覽量
107801 -
圖像分割算法
+關注
關注
0文章
3瀏覽量
6408 -
分割算法
+關注
關注
0文章
10瀏覽量
7319 -
深度學習
+關注
關注
73文章
5599瀏覽量
124400
原文標題:圖像分割算法原理及工作流程
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
基于GAC模型實現交互式圖像分割的改進算法
免疫克隆SAR圖像分割算法
一種新的彩色圖像分割算法
工作流程圖怎么用?有哪些繪制工作流程圖的軟件
基于Contourlet域下的聲吶圖像分割算法
一種對紅細胞和白細胞圖像分類任務的主動學習端到端工作流程
遺傳算法的基本原理 基于遺傳算法的圖像分割
卷積神經網絡算法流程 卷積神經網絡模型工作流程
NX CAD軟件:數字化工作流程解決方案(CAD工作流程)
圖像分割算法原理及工作流程
評論