汪坤 史偉民 李建強(qiáng) 彭來湖
摘 要:針對(duì)織物圖像特征提取和檢測(cè)問題,研究了一種基于卷積神經(jīng)網(wǎng)絡(luò)U-net模型的織物印花分割算法,并根據(jù)織物印花的特點(diǎn)對(duì)原有模型進(jìn)行改進(jìn),從而更精確地實(shí)現(xiàn)對(duì)織物印花圖像的分割。實(shí)驗(yàn)選取100張?jiān)伎椢镉』▓D像,并利用人工標(biāo)注的方法標(biāo)注出分割好的圖像,作為訓(xùn)練的標(biāo)簽,將訓(xùn)練圖像和標(biāo)簽通過翻轉(zhuǎn)、裁剪等數(shù)據(jù)增強(qiáng)算法得到1000張圖像和對(duì)應(yīng)標(biāo)簽進(jìn)行訓(xùn)練。實(shí)驗(yàn)對(duì)比了本文算法和一些傳統(tǒng)分割算法,結(jié)果表明,本文的分割算法能夠更有效地分割出織物印花圖案。
關(guān)鍵詞:織物印花;圖像分割;U-net;深度學(xué)習(xí)
中圖分類號(hào):TS101 ?文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1009-265X(2021)03-0045-06
Abstract: Aiming at the problem of fabric image feature extraction and detection, this paper studies a fabric printing segmentation algorithm based on U-net model of convolutional neural network, and improves the original model according to the characteristics of fabric printing so as to more accurately segment the fabric printed image. In the experiment, 100 original fabric printing images were selected, and the segmented images were marked by manual labeling as the training labels. 1000 images and corresponding labels obtained by data enhancement algorithms such as flipping and clipping were trained. The experiment was conducted to compare this algorithm and some traditional segmentation algorithms. The results show that the segmentation algorithm could more effectively segment the fabric printed pattern.
Key words: fabric printing; image segmentation; U-net; deep learning
織物印花是織物生產(chǎn)過程中重要的環(huán)節(jié),對(duì)于印花質(zhì)量的檢測(cè)必不可少。由于印花圖案復(fù)雜多樣,且大部分具有不規(guī)則性,印花花紋常為隨機(jī)分布,檢測(cè)其質(zhì)量有著很大的難度,而織物背景則相對(duì)簡(jiǎn)單。因此,對(duì)于后續(xù)的織物質(zhì)量檢測(cè)(如疵點(diǎn)檢測(cè)等),印花部分和背景部分的檢測(cè)方法有時(shí)會(huì)有不同,有時(shí)只需考慮印花部分的檢測(cè)。如果能夠精確地將印花圖案從整體織物圖案中分割出來,對(duì)印花部分和背景部分分別檢測(cè),那么無論是對(duì)于檢測(cè)效率還是檢測(cè)準(zhǔn)確率都有著很大的幫助。
近年來,在圖像分割領(lǐng)域,有著很多不錯(cuò)的成果。傳統(tǒng)圖像分割算法有很多,主要包括以下幾種。
基于閾值的分割,通過設(shè)置不同的灰度值閾值,將整體圖像按不同灰度等級(jí)分割為不同的區(qū)域。Otsu[1]提出閾值分割領(lǐng)域經(jīng)典的最大類間方差法。劉健莊等[2]在Otsu的基礎(chǔ)上提出一種二維閾值分割法,同時(shí)考慮當(dāng)前點(diǎn)的和其相鄰區(qū)域像素點(diǎn)的灰度信息,從而達(dá)到更好的分割效果。
基于聚類的分割,將像素點(diǎn)按照一定規(guī)律分為幾個(gè)不同的區(qū)域,并對(duì)每個(gè)像素點(diǎn)進(jìn)行分類,判斷每個(gè)點(diǎn)所屬的區(qū)域,從而進(jìn)行分類。K均值[3]聚類通過分析圖像的顏色信息進(jìn)行聚類。模糊C均值[4]算法引入模糊理論,使得算法能夠更好的收斂。
基于區(qū)域生長[5]的分割,先在圖像中找到若干個(gè)初始點(diǎn),再將初始點(diǎn)鄰域的像素點(diǎn)根據(jù)一定準(zhǔn)則合并形成新的區(qū)域,不斷合并區(qū)域,直到無法合并為止。
隨著深度學(xué)習(xí)[6]的發(fā)展,各類圖像檢測(cè)問題都應(yīng)用到深度學(xué)習(xí),其中卷積神經(jīng)網(wǎng)絡(luò)(CNN)[7-8]仿造生物視知覺構(gòu)造,對(duì)于解決圖像處理問題有著很好的效果。本文采用卷積神經(jīng)網(wǎng)絡(luò)U-net[9]模型對(duì)織物印花進(jìn)行分割,并根據(jù)織物印花圖片的特點(diǎn)以及實(shí)驗(yàn)中遇到的問題對(duì)模型進(jìn)行了一定的改進(jìn)。經(jīng)過實(shí)驗(yàn),該分割算法效果很好。
1 改進(jìn)U-net織物印花分割模型
1.1 改進(jìn)U-net模型框架結(jié)構(gòu)
傳統(tǒng)U-net模型常用于語意分割,其模型結(jié)構(gòu)如圖1所示,其結(jié)構(gòu)形如字母“U”,因此該模型被命名為U-net。
如圖1所示,模型左邊為一個(gè)下采樣過程,可以理解為一個(gè)編碼的過程,將尺寸較大的原始圖片通過多層的卷積核卷積并池化壓縮到一個(gè)較小的尺寸,同時(shí)提取出圖像的特征。再通過右側(cè)上采樣過程解碼,通過反卷積將特征圖放大,同時(shí)為了得到更多原始圖像信息,將左側(cè)的一些淺層特征連接到反卷積后的特征圖上,最終將特征圖恢復(fù)到原圖尺寸,從而得到像素級(jí)的分割預(yù)測(cè)圖。
本文使用的織物印花圖案由于花型復(fù)雜多樣,且具有不規(guī)則性,印花大小也不相同,原始U-net模型結(jié)構(gòu)較淺,無法精確提取到織物印花的特征,得到的分割效果不夠理想,因此對(duì)U-net模型進(jìn)行了一定的改進(jìn),利用更深的VGG16模型取代左側(cè)下采樣部分,并在模型中加入空洞卷積[10]以提高卷積核感受野。改進(jìn)U-net模型整體結(jié)構(gòu)如圖2。
牛津大學(xué)在2014年提出了VGG16模型,該模型的突出特點(diǎn)是簡(jiǎn)單實(shí)用,該模型在圖像分類和目標(biāo)檢測(cè)上都有很好的效果。
VGG16模型常被用來提取圖像特征。圖2中左側(cè)藍(lán)色下采樣結(jié)構(gòu)即為VGG16模型,原VGG16模型共13個(gè)卷積層和3個(gè)全連接層,本文算法舍棄了最后3個(gè)全連接層,只通過多層卷積從輸入圖片中提取出32×48×512的特征圖作為右側(cè)上采樣的輸入。
相比原U-net左側(cè)下采樣部分,VGG16模型卷積層更多,結(jié)構(gòu)更深,因此能提取到更多輸入織物圖片的細(xì)節(jié)特征。
1.3 空洞卷積
感受野是卷積神經(jīng)網(wǎng)絡(luò)中一個(gè)重要的參數(shù),它表示經(jīng)過卷積池化后的特征圖中每個(gè)像素點(diǎn)映射到輸入圖片的區(qū)域的大小。很顯然,感受野越大,特征圖上每個(gè)點(diǎn)能蘊(yùn)含越全局的特征。
空洞卷積相比普通卷積,在卷積核的每行每列之間加入空白的行和列,普通卷積和空洞卷積的卷積核如圖3所示。普通3×3卷積核每個(gè)點(diǎn)都表示一個(gè)參數(shù),3×3空洞卷積核只在奇數(shù)行和列有參數(shù),雙數(shù)行和列用零填充。可以看到空洞卷積相比普通卷積在參數(shù)量不變的情況下增大了感受野,同為9個(gè)參數(shù)的3×3卷積核,空洞卷積的感受野增大到了5×5,從而提高了卷積模型的學(xué)習(xí)能力,同時(shí)減小了參數(shù)過多可能導(dǎo)致的過擬合問題。
改進(jìn)模型在U-net模型左側(cè)增加了多個(gè)空洞卷積。
1.4 激活函數(shù)
卷積為線性過程,為了提高深層網(wǎng)絡(luò)的表達(dá)能力,需要引入非線性[11]的激活函數(shù)。
U-net常用的激活函數(shù)為ReLU[12]函數(shù),其表達(dá)式為式(1):
ReLU=max(0,x)(1)
ReLU函數(shù)具有計(jì)算速度和收斂速度快的優(yōu)點(diǎn),但由于在輸入為負(fù)時(shí),它的值為零,在某些情況下會(huì)導(dǎo)致一些神經(jīng)元永遠(yuǎn)不會(huì)被激活,導(dǎo)致資源浪費(fèi)。為了避免這個(gè)問題,模型采用PReLU[13]激活函數(shù),其表達(dá)式如式(2):
PReLU=max(αx,x)(2)
其中α值很小,一般取0.01,PReLU與ReLU右半部分圖像完全一致,不同點(diǎn)是左半部分不為零,而是一個(gè)很小的負(fù)值,理論上說,它具有ReLU的優(yōu)點(diǎn),且不存在神經(jīng)元不會(huì)被激活的問題。
1.5 損失函數(shù)
分別使用L1損失和L2損失進(jìn)行對(duì)比實(shí)驗(yàn)。設(shè)標(biāo)簽圖片每個(gè)點(diǎn)的標(biāo)簽值為g(i,j),模型輸出圖片每個(gè)點(diǎn)的值為y(i,j),其中i,j分別為像素點(diǎn)的寬和高。w,h分別為圖片的寬和高。
L1損失為:
lossL1=1w·h∑w,hi,jyi,j-gi,j(3)
L2損失為:
lossL2=1w·h∑w,hi,jyi,j-gi,j2(4)
1.6 準(zhǔn)確率評(píng)估
為了更好的評(píng)估花型分割結(jié)果的好壞,引入準(zhǔn)確率評(píng)估如式(5)、式(6)。
acc=1w·h∑w,hi,joi,j⊙g(i,j)(5)
oi,j=1yi,j>0.50yi,j<0.5(6)
g(i,j)為點(diǎn)(i,j)的標(biāo)簽值,屬于前景時(shí)為1,屬于背景時(shí)為0,o(i,j)為輸出y(i,j)經(jīng)過二值化得到的結(jié)果。
式(5)表示準(zhǔn)確率為標(biāo)簽值和輸出值相同的像素點(diǎn)占總像素點(diǎn)的比率。
2 實(shí)驗(yàn)與分析
2.1 數(shù)據(jù)集與數(shù)據(jù)增強(qiáng)
采用TILDA紡織紋理數(shù)據(jù)庫,并通過手動(dòng)標(biāo)注的方法對(duì)織物印花進(jìn)行分割,得到訓(xùn)練標(biāo)簽圖,圖4為兩組訓(xùn)練圖片和標(biāo)簽圖。對(duì)原始數(shù)據(jù)集約100張圖片進(jìn)行標(biāo)注,之后通過翻轉(zhuǎn)、切割等數(shù)據(jù)增強(qiáng)方法將數(shù)據(jù)集擴(kuò)充到1 000張,其中800張作為訓(xùn)練集進(jìn)行訓(xùn)練,其余200張作為測(cè)試集測(cè)試模型預(yù)測(cè)結(jié)果。圖5為數(shù)據(jù)增強(qiáng)中裁剪和翻轉(zhuǎn)示意圖。
2.2 模型訓(xùn)練
2.2.1 實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)使用Inter(R)Core (TM)i58400 2.8 GHz處理器,GPU為英偉達(dá)GTX1060 6 GB,內(nèi)存為雙通道16 GB;軟件環(huán)境為WIN10 64位,python3.6,tensorflow1.10.0。
2.2.2 模型訓(xùn)練
在上述實(shí)驗(yàn)環(huán)境下對(duì)訓(xùn)練圖片進(jìn)行訓(xùn)練,總共進(jìn)行約600輪迭代,初始學(xué)習(xí)率為0.001,并隨著訓(xùn)練的進(jìn)行,不斷減小學(xué)習(xí)率。分別采用原U-net模型和改進(jìn)U-net模型進(jìn)行訓(xùn)練,同時(shí)比較不同損失函數(shù)對(duì)訓(xùn)練的影響,訓(xùn)練過程中利用tensorflow可視化工具tensorboard對(duì)訓(xùn)練可視化,監(jiān)測(cè)訓(xùn)練過程。
訓(xùn)練過程中學(xué)習(xí)率變化如圖6所示,隨著迭代次數(shù)增加,學(xué)習(xí)率不斷減小。
圖7表示分別使用L1損失函數(shù)和L2損失函數(shù)時(shí),改進(jìn)模型的準(zhǔn)確率對(duì)比??梢钥吹?,隨著迭代次數(shù)增加,準(zhǔn)確率不斷提升,到200輪迭代左右時(shí)準(zhǔn)確率趨于穩(wěn)定,另外,使用L1損失函數(shù)能得到更好的分割結(jié)果。
圖8、圖9表示原U-net和改進(jìn)U-net在訓(xùn)練過程中損失以及準(zhǔn)確率變化對(duì)比。從圖中可以看到,由于原模型結(jié)構(gòu)較淺,收斂速度相對(duì)較快,但穩(wěn)定后最終結(jié)果無論是訓(xùn)練損失還是準(zhǔn)確率,改進(jìn)U-net模型相比原模型都有很大的優(yōu)勢(shì)。
2.3 結(jié)果和分析
對(duì)比了不同損失函數(shù)下的分割結(jié)果,同時(shí)對(duì)改進(jìn)模型與原U-net模型的分割結(jié)果進(jìn)行了比較。將測(cè)試集圖片通過訓(xùn)練好的模型得到輸出矩陣,將矩陣轉(zhuǎn)換為灰度圖像。
從測(cè)試集中選取幾張圖片展示分割結(jié)果,如圖10、圖11所示。
圖10(c)、(d)表示在L1、L2損失下部分測(cè)試圖片的輸出結(jié)果。
從圖9和表1可以看出,使用L1損失函數(shù)時(shí)得到的分割結(jié)果與標(biāo)簽值基本相同,準(zhǔn)確率達(dá)98.33%,而使用L2損失函數(shù)時(shí)分割結(jié)果與標(biāo)簽結(jié)果有一定差距,準(zhǔn)確率為93.55%。
從圖11和表2可以看到,由于原U-net模型網(wǎng)絡(luò)結(jié)構(gòu)較淺,無法完整提取織物印花信息,分割效果很不理想,分割準(zhǔn)確率為88.67%。
3 結(jié) 論
采用改進(jìn)U-net模型對(duì)織物印花進(jìn)行分割,通過對(duì)U-net模型的改進(jìn)以及訓(xùn)練參數(shù)的調(diào)節(jié),總體來說能得到比較好的分割結(jié)果。另外,如果有合適且足夠多的訓(xùn)練樣本,分割方法不僅對(duì)織物印花分割,在其他圖像的分割上都能有很好的效果。
當(dāng)然,算法仍然有很多可以改進(jìn)的地方,主要有以下幾點(diǎn)。
a)數(shù)據(jù)集較小,由于采用人工標(biāo)定,人力有限,數(shù)據(jù)集圖片數(shù)量相對(duì)較少,容易產(chǎn)生過擬合,對(duì)不同種類織物圖片泛化能力較差。
b)分割只是對(duì)將印花從背景中分離出來,沒有對(duì)不同印花進(jìn)行區(qū)分,接下來主要考慮研究多種類的分割。
參考文獻(xiàn):
[1]OTSU N. A Threshold Selection Method from Gray Level Histogram[J].IEEE Trans on System Man and Cybernetics,1979,9(1):62-66.
[2]劉健莊,栗文青.灰度圖像的二維Otsu自動(dòng)閾值分割[J].自動(dòng)化學(xué)報(bào),1993,19(1):101-105.
[3]李鵬飛,張宏偉.基于k-means聚類的紡織品印花圖像區(qū)域分割[J].西安工程大學(xué)學(xué)報(bào),2008,22(5):551-554
[4]SARKAR J P, SAHA I, MAULIK U. Rough possibilistic type-2 fuzzy c-means clustering for MR brain image segmentation[J].Applied Soft Computing,2016(46):527-536.
[5]FAN JIANPING, ZENG GUIHUA, Body M, et al. Seeded region growing: an extensive and comparative study[J].Pattern Recognition Letters,2017,26(8):1139-1156.
[6]LECUN Y, BENGIO Y, HINTON G. Deep learning[J].Nature,2015,521(7553):436-444.
[7]SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale lmage recognition[J].Computer Science,2014,9(4):23-31.
[8]盧宏濤,張秦川.深度卷積神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺中的應(yīng)用研究綜述[J].數(shù)據(jù)采集與處理,2016,31(1):1-17.
[9]RONNEBERGER O, FISCHER P, BROX T. U-net: Convolutional networks for biomedical image segmentation[C]//International conference on medical image computing and computer-assisted intervention. Springer, Cham,2015:234-241.
[10]YU F, KOLTUN V. Multi-scale context aggregation by dilated convolutions[J].arXiv preprint arXiv:1511.07122,2015.
[11]李明威.圖像分類中的卷積神經(jīng)網(wǎng)絡(luò)方法研究[D].南京:南京郵電大學(xué),2016.
[12]GLOROT X, BORDES A, BENGIO Y. Deep sparse rectifier neural networks[C]//Proceedings of the fourteenth international conference on artificial intelligence and statistics.2011:315-323.
[13]HE K, ZHAN X, REN S, et al. Delving deep into rectifiers: surpassing human-level performance on image net classification[C].IEEE. International Conference on Computer Vision,2015:1026-1034.