算法原理
基于深度學習的圖像分割算法屬于圖像處理領域最高層次的圖像理解范疇。所謂圖像分割就是把圖像分割成具有相似的顏色或紋理特性的若干子區(qū)域,并使它們對應不同的物體或物體的不同部分的技術。這些子區(qū)域,組成圖像的完備子集,又相互之間不重疊。
1、傳統(tǒng)分割方法
圖像分割問題最早來自于一些文本的分割,醫(yī)學圖像分割。在文本圖像分割中,需要切割出字符,常見的問題包括指紋識別,車牌識別;由于這一類問題比較簡單,因為基于閾值和聚類的方法被經(jīng)常使用?;陂撝岛途垲惖姆椒m然簡單,但因此也經(jīng)常失效。以graphcut為代表的方法,是傳統(tǒng)圖像分割里面魯棒性最好的方法。Graphcut的基本思路,就是建立一張圖,其中以圖像像素或者超像素作為圖像頂點,然后移除一些邊,使得各個子圖不相連從而實現(xiàn)分割。圖割方法優(yōu)化的目標是找到一個切割,使得移除邊的和權重最小。
2、深度學習方法:
全卷積神經(jīng)網(wǎng)絡(Fully connected Network)是第一個將卷積神經(jīng)網(wǎng)絡正式用于圖像分割問題的網(wǎng)絡。一個用于分類任務的深度神經(jīng)網(wǎng)絡通過卷積來不斷抽象學習,實現(xiàn)分辨率的降低,最后從一個較小的featuremap或者最后的特征向量,這個featuremap通常為55或者77等大小。而圖像分割任務需要恢復與原尺度大小一樣的圖片,所以,需要從這個featuremap恢復原始圖片尺寸,這是一個上采樣的過程。由于這個過程與反卷積是正好對應的逆操作,所以我們通常稱其為反卷積。代表算法有FCN、Unet、Deeplab等。
3、深度學習算法較之傳統(tǒng)分割算法的優(yōu)勢:
(1)學習能力強:深度學習自動提取低層次或者高層次特征,具有較強的學習能力。
(2)覆蓋范圍廣,適應性好:深度學習的神經(jīng)網(wǎng)絡層數(shù)很多,寬度很廣,理論上可以映射到任意函數(shù),所以能解決很復雜的問題。
(3)數(shù)據(jù)驅動,上限高:深度學習高度依賴數(shù)據(jù),數(shù)據(jù)量越大,它的表現(xiàn)就越好。在圖像識別、面部識別、NLP 等部分任務甚至已經(jīng)超過了人類的表現(xiàn)。同時還可以通過調(diào)參進一步提高它的上限。
(4)可移植性好:由于深度學習的優(yōu)異表現(xiàn),有很多框架可以使用,例如 TensorFlow、Pytorch。這些框架可以兼容很多平臺。
傳統(tǒng)分割方法中特征提取主要依賴人工設計的提取器,需要有專業(yè)知識及復雜的調(diào)參過程,同時每個方法都是針對具體應用,泛化能力及魯棒性較差。存儲開銷大,計算效率低下,識別速度較慢。
深度學習主要是數(shù)據(jù)驅動進行特征提取,根據(jù)大量樣本的學習能夠得到深層的、數(shù)據(jù)集特定的特征表示,其對數(shù)據(jù)集的表達更高效和準確,所提取的抽象特征魯棒性更強,泛化能力更好,并且可以是端到端的。
4、Unet算法
本項目使用了基于深度學習的Unet網(wǎng)絡:Unet網(wǎng)絡由兩部分組成,前半部分作用是特征提?。ɑA模型為MobileNet),后半部分是上采樣。在一些文獻中也把這樣的結構叫做編碼器-解碼器結構。由于此網(wǎng)絡整體結構類似于大寫的英文字母U,故得名Unet。
Unet與其他常見的分割網(wǎng)絡有一點非常不同的地方:Unet采用了完全不同的特征融合方式:拼接,Unet采用將特征在channel維度拼接在一起,形成更厚的特征。而FCN融合時使用的對應點相加,并不形成更厚的特征。
所以語義分割網(wǎng)絡在特征融合時有兩種辦法:
(1)FCN式的對應點相加,對應于TensorFlow中的tf.add()函數(shù);
(2)Unet式的channel維度拼接融合,對應于TensorFlow的tf.concat()函數(shù),比較占顯存。
除了上述新穎的特征融合方式,Unet還有以下幾個優(yōu)點:
(1)5個pooling layer實現(xiàn)了網(wǎng)絡對圖像特征的多尺度特征識別。
(2)上采樣部分會融合特征提取部分的輸出,這樣做實際上是將多尺度特征融合在了一起,以最后一個上采樣為例,它的特征既來自第一個卷積block的輸出(同尺度特征),也來自上采樣的輸出(大尺度特征),這樣的連接是貫穿整個網(wǎng)絡的,可以看到上圖的網(wǎng)絡中有四次融合過程,相對應的FCN網(wǎng)絡只在最后一層進行融合。
數(shù)據(jù)集準備
深度學習模型的精確度一般依賴于數(shù)據(jù)集的大小,CNN要求用于訓練的數(shù)據(jù)集足夠大,能夠覆蓋問題域中所有已知可能出現(xiàn)的問題。設計CNN的時候,數(shù)據(jù)集包含三個子集:訓練集、測試集、驗證集。
1、訓練集:包含問題域中的所有數(shù)據(jù),并在訓練階段用來調(diào)整網(wǎng)絡的權重。
2、測試集:在訓練的過程中用于測試網(wǎng)絡對訓練集中未出現(xiàn)數(shù)據(jù)的檢測性能,根據(jù)網(wǎng)絡在測試集上的性能情況,網(wǎng)絡的結構可能需要做出調(diào)整,或者增加訓練循環(huán)次數(shù)。
3、驗證集:驗證集中的數(shù)據(jù)統(tǒng)一應該包含在測試集和訓練集中沒有出現(xiàn)過的數(shù)據(jù),用于在網(wǎng)絡確定之后能夠更好的測試和衡量網(wǎng)絡的性能。
數(shù)據(jù)預處理與參數(shù)設置
1、數(shù)據(jù)預處理
為了加速訓練的收斂速度,一般都會采用一些數(shù)據(jù)預處理技術,其中包括:去除噪聲、輸入數(shù)據(jù)降維、刪除無關數(shù)據(jù)等。
數(shù)據(jù)的平衡化在目標檢測問題中異常重要,一般認為訓練集中的數(shù)據(jù)應該相對于標簽類別近似于平均分布,也就是每一個類別標簽所對應的數(shù)據(jù)集在訓練集中是基本相等的,以避免網(wǎng)絡過于傾向于表現(xiàn)某些分類的特點。
為了平衡數(shù)據(jù)集,應該移除一些過度富余的分類中的數(shù)據(jù),并相應補充一些相對樣例稀少的分類中的數(shù)據(jù)。還有一個方法就是復制一部分這些樣例稀少的數(shù)據(jù),并在這些數(shù)據(jù)中加入隨機噪聲。
2、數(shù)據(jù)歸一化
將數(shù)據(jù)規(guī)則化到統(tǒng)一的區(qū)間(如[0,1])中,可以防止數(shù)據(jù)中存在較大數(shù)值的數(shù)據(jù)造成數(shù)值較小的數(shù)據(jù)對于訓練效果減弱甚至無效化。一個常用的方法是將輸入和輸出數(shù)據(jù)按比例調(diào)整到一個和激活函數(shù)相對應的區(qū)間。
3、網(wǎng)絡權值初始化
CNN的初始化主要是初始化卷積層和輸出層的權值和偏置。網(wǎng)絡權值初始化就是將網(wǎng)絡中的所有連接權重賦予一個初始值,如果初始權重向量處在誤差曲面的一個相對平緩的區(qū)域的時候,網(wǎng)絡訓練的收斂速度可能會很緩慢,一般情況下網(wǎng)絡的連接權重和偏置被初始化在一個具有0均值的相對小的區(qū)間內(nèi)均勻分布。
4、學習速率
如果學習速率選取的較大,則會在訓練過程中較大幅度的調(diào)整權值,從而加快網(wǎng)絡的訓練速度,但是這會造成網(wǎng)絡在誤差曲面上搜索過程中頻繁抖動,且有可能使得訓練過程不能收斂。如果學習速率選取的較小,能夠穩(wěn)定的使得網(wǎng)絡逼近于全局最優(yōu)點,但也可能陷入一些局部最優(yōu),并且參數(shù)更新速度較慢。自適應學習率設定有較好的效果。
5、收斂條件
訓練誤差、誤差梯度、交叉驗證等可以作為停止訓練的判定條件。一般來說,訓練集的誤差會隨著網(wǎng)絡訓練的進行而逐步降低。
標注
對訓練集和測試集的數(shù)據(jù)使用專業(yè)的標注工具進行標注,本項目標注圖片數(shù)量為5000張。
訓練流程
訓練過程分為兩個階段:前向傳播階段和后向傳播階段
前向傳播階段:
1、從樣本集中取N個樣本,輸入網(wǎng)絡。
2、計算相應的實際輸出,在此階段信息從輸入層經(jīng)過逐級變換,傳送到輸出層。
后向傳播階段:
1、計算實際輸出與相應的理想輸出的誤差。
2、按照極小化誤差的方法調(diào)整權值矩陣。
具體訓練過程如下:
1、選定訓練組,從樣本集中分別隨機地尋求N個樣本作為訓練組。
2、將各權值、偏置,設置成小的接近于0的隨機值,并初始化精度控制參數(shù)和學習率。
3、從訓練組中取一個輸入模式加到網(wǎng)絡,并給出它的目標輸出向量。
4、計算出中間層輸出向量,計算出網(wǎng)絡的實際輸出向量。
5、將輸出向量中的元素與目標向量中的元素進行比較,計算出輸出誤差;對于中間層的隱單元也需要計算出誤差。
6、依次計算出各權值的調(diào)整量和偏置的調(diào)整量。
7、調(diào)整權值和調(diào)整偏置。
8、當經(jīng)歷M次迭代后,判斷指標是否滿足精度要求,如果不滿足,則返回步驟3,繼續(xù)迭代;如果滿足就進入下一步。
9、訓練結束,將權值和偏置保存在模型文件中。這時可以認為各個權值已經(jīng)達到穩(wěn)定,模型已經(jīng)形成。再一次進行訓練時,直接從模型文件中導出權值和偏置進行訓練,不需要進行初始化。
識別流程
利用訓練好的模型對待檢測的圖片進行缺陷檢測的具體流程大致為:
1、將整張圖片傳入模型進行下采樣,得到特征圖。
2、將特征圖進行上采樣且結合下采樣特征圖得到與原圖尺寸一樣的mask圖。
3、對mask圖進行可視化即可看到測試結果。
模型優(yōu)化
針對識別結果可以通過以下方法優(yōu)化模型:
1、增加樣本數(shù)量。
2、豐富缺陷種類和平衡每種缺陷的樣本數(shù)量。
3、調(diào)整模型參數(shù)。
來源:工業(yè)新視力
審核編輯:湯梓紅
-
神經(jīng)網(wǎng)絡
+關注
關注
42文章
4809瀏覽量
102864 -
圖像分割算法
+關注
關注
0文章
3瀏覽量
6351 -
分割算法
+關注
關注
0文章
10瀏覽量
7255 -
深度學習
+關注
關注
73文章
5555瀏覽量
122508
原文標題:圖像分割算法原理及工作流程
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
基于GAC模型實現(xiàn)交互式圖像分割的改進算法
免疫克隆SAR圖像分割算法
一種改進的圖像分割算法分析

一種新的彩色圖像分割算法

工作流程圖怎么用?有哪些繪制工作流程圖的軟件
改進自適應GACV的水下圖像分割算法研究

一種對紅細胞和白細胞圖像分類任務的主動學習端到端工作流程
遺傳算法的基本原理 基于遺傳算法的圖像分割
卷積神經(jīng)網(wǎng)絡算法流程 卷積神經(jīng)網(wǎng)絡模型工作流程
NX CAD軟件:數(shù)字化工作流程解決方案(CAD工作流程)

評論