王 帥,岳鵬飛,董晗睿,侯 爽,余靈婕,*
(1.西安工程大學 紡織科學與工程學院,陜西 西安710048;2.西安工程大學 功能性紡織材料及制品教育部重點實驗室,陜西 西安710048)
織物疵點檢測是紡織行業一道很重要的質量控制工序,織物出廠前均要經過疵點檢驗、識別及鑒定,作為貿易結算的主要依據。傳統方法的織物疵點檢測是人工視覺檢測來完成,該方法存在檢測速度低,驗布結果受驗布人員主觀影響較大,有誤檢率、漏檢率高和人工成本大等缺點,所以紡織品的人工檢驗方法將逐步被基于機器視覺、圖像處理和人工智能的自動檢測技術所取代。Ding[1]采用的織物疵點檢測算法提取織物的HOG 特征是基于方向梯度直方圖(Histogram of Oriented Gradient,HOG)和支持向量機(Support Vecto Machine,SVM)的,進一步利用支持向量機對織物瑕疵進行分類檢測。劉綏美等[2]基于形態學和稀疏表示模型對織物瑕疵區域進行定位檢測。Liu等[3]對單色布匹疵點進行分類,他們結合了粒子群算法和反向傳播算法(Back Propagation,BP)。本文選用一定數量的織物疵點圖片作為疵點數據集,疵點種類包括破洞、稀緯、斷經、結頭、棉球、沾色、帶紗等,利用決策樹、隨機森林、支持向量機3種算法對疵點數據進行模型建立,采用交叉驗證的方法得出效果最佳模型。
決策樹(Decision Tree)是一種非參數的有監督學習方法,它能夠從一系列有特征和標簽的數據中總結出決策規則,并用樹狀圖的結構來呈現這些規則,以解決分類和回歸問題。決策樹算法容易理解,適用各種數據,在解決各種問題時都有良好表現,尤其是以樹模型為核心的各種集成算法,在各個行業都有廣泛的應用。

圖1 決策樹模型
在決策樹生成的隨機過程中,每個結點分裂根據結點上訓練數據的最優特征來劃分。最優特征選擇是在訓練數據中選出分類效果最好的特征來劃分特征空間,這樣有助于提升決策樹的效率,避免使用無分類能力的特征。最優特征選擇有多種衡量指標,最常用的有信息增益、信息增益比和基尼指數等[4]。
為了說明信息增益、信息增益比的關系,先給出信息熵的定義。信息熵(information entropy)是度量樣本集合純度最常用的一種指標。假定當前樣本集合D中第k類樣本所占的比例為Pk(k=1,2…,|y|),則D的信息熵定義為:

Ent(D)的值越大,則D 的知度越高。
假定離散屬性a 有V 個可能的取值{a',…a.,}若使用a 來對樣本集D 進行劃分,則會產生V 個分支結點,其中第0個分支結點包含了D 中所有在屬性a上取值為a"的樣本,記為D"??筛鶕?1)計算出DV的信息熵,再考慮到不同的分支結點所包含的樣本數不同,給分支結點賦予權重即樣本數越多的分支結點的影響越大,于是可計算出用屬性a 對樣本集D 進行劃分所獲得的“信息增益”(information gain):

隨機森林(Random Forest,簡稱RF)是Bagging的一個擴展變體。隨機森林在以決策樹為基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性選擇。具體來說,傳統決策樹在選擇劃分屬性時是在當前結點的屬性集合(假定有d個屬性)中選擇一個最優屬性;而在隨機森林中,對基決策樹的每個結點,先從該結點的屬性集合中隨機選擇一個包含k 個屬性的子集,然后再從這個子集中選擇一個最優屬性用來劃分[5]。
支持向量機的分類方法,是在一組分布中找出一個超平面作為決策邊界,使模型在數據上的分類誤差盡量小一點,尤其是在未知數據集上的分類誤差(泛化誤差)盡量小。線性SVM 可以看成是神經網絡的單個神經元(雖然損失函數與神經網絡不同),非線性的SVM 則與兩層的神經網絡相當,非線性的SVM 中如果添加多個核函數,則可以模仿多層的神經網絡。
1.3.1 定義決策邊界
取N 個訓練樣本,每個訓練樣本可以被表示為(xi,yi)(i=1,2,…N),其中(xi)是這樣的一個特征向量,每個樣本總共n個特征;二分類標簽yi的取值是{-1,1}。如果n等于2,則有i=(x1i,x2i,yi)T分別由特征向量和標簽組成。此時可以在二維平面上,以x2為橫坐標,x1為縱坐標,y 為顏色,來可視化所有的樣本(圖2)。
紫色點的標簽為1,紅色點的標簽為-1。在這個數據集上尋找一個決策邊界,在二維平面上,決策邊界(超平面)就是一條直線。紫色點所代表的標簽y 是1,所以規定P >0,紅色點表示的標簽y 是-1。

圖2 樣本可視化(1)

圖3 樣本可視化(2)
平行于決策邊界的2條線的表達式:w×x+b=1,w×x+b=-1。 表達式兩邊的1和-1分別表示了2條平行于決策邊界的虛線到決策邊界的相對距離。此時,讓這2條線分別過2類數據中距離決策邊界最近的點,這些點就被稱為“支持向量”[6]。如圖3、圖4所示。

圖4 樣本可視化(3)
隨機抽取了破洞、稀緯、斷經、結頭、棉球、沾色、帶紗等7類疵點類型[7],每種類型隨機抽取了圖片,共計有3 000幅疵點圖片。為了與標準樣對比,又選取了1 000幅無疵點圖作為標準。為了運算方便,每張圖片大小為200像素×200像素,如圖5所示。每個數據集上試驗10次,取平均值作為試驗結果,以盡量避免試驗的偶然性。試驗中采用的計算機硬件配置為:GPU RTX 2080Ti,內存32 GB。
機器學習的分類方法如圖6所示。
2.1.1 重要參數設計
(1)criterion選擇
criterion 是用來決定不純度的計算方法的,sklearn提供了2種選擇:
輸入“entropy”,使用信息熵(Entropy);
輸入“gini”,使用基尼系數(Gini Impurity)。

圖5 疵點分類圖
比起基尼系數,信息熵對不純度更加敏感,對不純度的懲罰最強,但是在實際使用中,信息熵和基尼系數的效果基本相同。信息熵的計算比基尼系數緩慢一些,因此對于高維數據或者噪音很多的數據,信息熵很容易過擬合,選擇基尼系數的效果往往比較好。試驗測試得出criterion=‘entropy’。
(2)random_state&splitter選擇
random_state用來設置分枝中的隨機模式的參數,默認none,在高維度時隨機性會表現更明顯,低維度的數據,隨機性幾乎不會顯現。這是防止過擬合的一種方式,試驗測試得出random_state=800。
(3)剪枝參數max_depth
sklearn有不同的剪枝策略:max_depth限制樹的最大深度,超過設定深度的樹枝全部剪掉。決策樹多生長一層,對樣本量的需求會增加一倍,所以限制樹深度能夠有效地限制過擬合,在集成算法中也非常實用。實際使用時,從=3開始嘗試,看看擬合的效果再決定是否增加設定深度,試驗得出max_depth=6。
數據擬合情況如圖7所示。

圖7 數據擬合情況
2.2.1 重要參數設計
(1)criterion選擇
對于高維數據或者噪音很多的數據,信息熵很容易過擬合,選擇基尼系數的效果往往比較好[8]。試驗測試得出criterion=‘gini’。
(2)n_estimators選擇
這是森林中數木的數量,即評估器的數量。n_estimators越大,模型的效果往往越好。任何模型都有決策邊界,n_estimators達到一定的程度之后,隨機森林的精確性往往不再上升或開始波動,并且n_estimators越大,需要的計算量和內存也越大,訓練的時間也會越長。試驗參數n_estimators=131,在訓練難度和模型效果之間取得平衡,如圖8所示。
(3)max_features選擇
有增有減,默認auto,是特征總數的開平方,位于中間復雜度,既可以向復雜度升高的方向,也可以向復雜度降低的方向調參max_features↓,模型更簡單,圖像左移max_features↑,模型更復雜,圖像右移max_features是唯一的,既能夠讓模型更簡單,也能夠讓模型更復雜的參數,所以在調整這個參數的時候,選擇auto。
(4)min_samples_split選擇

圖8 n_estimators效果圖
有增有減,默認最小為2,即最高復雜度,向復雜度降低的方向調參min_samples_split↑,模型更簡單,且向圖像的左邊移動。試驗選取min_samples_split=10。
(5)random_state選擇
試驗測試得出random_state=800。
(1)數據可視化。對疵點數據前2列數據可視化,判斷其為偏線性關系,如圖9所示。

圖9 數據可視化圖
(2)數據標準化。使用數據預處理中的標準化的類,對數據進行標準化。標準化完畢后,再次讓SVC 在核函數中遍歷,觀察疵點數據是否存在量綱問題,觀察表10中數據最小值(min)和1%的數據存在偏差,存在量綱不統一問題,對疵點數據進行無量綱化[9]。

圖10 標準化疵點數據圖

圖11 無量綱化數據圖
經過無量綱化后,模型準確率下降,因此不對疵點數據集進行無量綱化處理[10],如圖11所示。
(3)核函數選擇。核函數參數見表1。
根據模型效果,核函數選擇"rbf",如圖12 所示。使用循環函數對"rbf"參數gamma選擇最優值,得出模型準確率0.72,gamma取值1.39e-07。

表1 核函數參數圖
(4)random_state選擇
試驗測試選擇random_state=800。
采用交叉驗證方法交叉驗證[11](cross_val_score)是用來觀察模型的穩定性的一種方法,將數據劃分為n份,依次使用其中一份作為測試集,其他n-1份作為訓練集,多次計算模型的精確性來評估模型的平均準確程度。訓練集和測試集的劃分會干擾模型的結果,因此用交叉驗證n 次 的結果求出平均值,是對模型效果一個更好的度量。
使用交叉驗證用于評估模型的預測性能,尤其是訓練好的模型在新數據上的表現[12],能夠在一定程度上減小過擬合。數據量大的時候,k 可以設置的小一些,數據量小的時候,k 可以設置的大一些。在試驗中交叉驗證次數選取15次。如圖13所示。

圖12 rbf函數gamma值選優圖

圖13 交叉驗證
分別進行了不同次數的交叉驗證,得出的模型準確率見表2。

表2 交叉驗證次數-模型準確率 單位:%
由模型準確率知隨機森林模型準確率最高最穩定。
使用決策樹、隨機森林、支持向量機進行了疵點識別[13]的研究,通過理論分析和試驗證實隨機森林模型的準確率最高。機器學習算法的預測結果也存在著偶然性,為了獲得更準確的結果,通過交叉驗證,得到多個結果,取其平均值,這個均值更能代表模型的準確性[14]。試驗結果表明,隨著交叉驗證次數的提高,3種模型的準確率都有所增加,但是增加到一定次數準確率反而降低了。決策樹和支持向量機都不能達到最優,只有隨機森林算法模型達到了最優。這是機器學習算法對不同數據集的不同體現。
未來工作一是引入圖像預處理[15],減少計算量;二是豐富疵點數據集的疵點種類。