APP下载

基于CUDA计算GLCM特征值和SVM的织布疵点检测∗

2018-04-26孙志刚

计算机与数字工程 2018年4期
关键词:疵点线程特征值

万 东 孙志刚 肖 力

(华中科技大学自动化学院 武汉 430074)

1 引言

在纺织工业生产中,纺织品的检测是一道重要的工序,它决定了产品的质量,因此,疵点检测是生产工序中绝不可忽视的环节.然而,传统的织布疵点检测仍然是通过人工视觉来评定,人工长时间的检验不仅会影响产品质量的客观评定,还受限于检验人员的熟练程度。随着布匹生产速度的提高以及对产品质量要求的提高,人工检验存在很大的弊端,包括检测速度慢、检测率低和稳定性差等,这使得人工检验越来越不适应工业生产的需求,因此,迫切需求生产过程中实现自动、精准、快速检测疵点的方法[1~4]。近年来,纺织品疵点检测领域也提出了一些检测算法,但是,在准确率和实时性上尚难兼得,难以适应工业生产的需求。

本文提出一种基于共度共生矩阵(GLCM)和支持向量机(SVM)实现织布疵点检测的算法,借助GPU强大的计算能力,并行计算得到GLCM以及特征值,组成特征向量输入已训练完成的SVM分类模型,得到图像最终的分类,实现织布图像中的疵点类型检测,算法流程如图1所示。GPU完成图像GLCM以及特征值的计算,保证了算法的实时性;GLCM特征值反映的图像纹理特征以及SVM强大的分类能力保证了算法检测的准确率。实验证明该方法能够精准且快速检测出布匹中的孔洞、异物、油渍和折痕疵点。

图1 检测算法流程示意图

2 灰度共生矩阵的纹理提取

2.1 灰度共生矩阵

灰度共生矩阵(GLCM)用图像中具有某种空间位置关系的像素对的联合分布概率密度来定义,可以看成两个像素对的灰度分布联合直方图,是一种二阶统计。它不仅反映了图像灰度变化信息,也很好地反映了相同灰度级像素之间的位置分布关系等特征[5]。

假设输入图像为 f(x,y),大小为M×N,灰度级为L,则满足一定空间关系的GLCM定义为概率矩阵:

其中,#{x}表示集合 x中的元素个数,因此,GLCM(i,j)是一个L×L的方阵,假设图像中的两点 (x1,y1)与 (x2,y2)间距为 d,两点所在直线与坐标轴之间的夹角为θ,其中概率矩阵中元素(i,j)的值表示一个灰度为i,另一个灰度为 j的两个相距为d的像素对在夹角θ的方向上出现的次数。

像素对的间距和方向用一个一维向量表示,如图2所示,图像中某点(x,y)的灰度值为i,而在(x+dx,y+dy)点的灰度值 j,则此时将GLCM中相应位置 (x,y)处的值加1(初始值为0)[6]。

图2 GLCM的定义及计算方法示意图

灰度共生矩阵有2个重要的参数:1)图像灰度级总数;2)向量对[dx,dy]。对同一输入图像,取不同的向量[dx,dy]会得到不同的灰度共生矩阵。

原始灰度图像的灰度级为256,特征矩阵较大,一般为了减小计算量,可以降低图像的灰度级,但会损失信息。本模块采用GPU计算,灰度级对时间影响不大,因此,灰度级确定为256。

[dx,dy]向量对的选择往往依赖于布匹表面纹理的分析,利用自相关函数[7]分析如图所示纹理图像,得到横向和纵向纹理周期均为8pixels,因此,GLCM的生成步长取为8,方向选择0°、45°、90°和135°4个方向,即向量对选择为[8,0]、[8,8]、[0,8]和[-8,8]。

2.2 灰度共生矩阵的特征参数

GLCM不能直接用于描述图像的纹理特征,本算法选取能量Asm、熵Ent、对比度con和逆差矩ind等4个统计量[8]来提取它所反映的纹理特征,它们的定义如下所述,其中P(i,j)代表GLCM。

能量反映了图像灰度分布的均匀性,粗纹理的能量矩较大,细纹理的能量矩较小;

熵值是图像所具有的信息量的度量。若图像没有任何纹理,则熵值接近零,若图像充满细纹理,则图像的熵值最大,若图像中分布着较少的纹理,则图像的熵值较小;

对比度反映了影响纹理的清晰度,纹理的沟纹越深,其对比度越大,图像的视觉清晰效果越好;

逆差矩反映了局部同质性,当GLCM沿对角线集中时,其逆差矩值较大。

3 GLCM及其特征值的并行计算实现

3.1CUDA并行计算

CUDA是NVIDIA于2006年推出的一套针对异步计算资源下的大规模并行计算的架构,该架构使GPU能够解决复杂的计算问题。CUDA采用一种分层的编程模型来组织线程,其基本思路是:用户根据需要定制一定数量的线程准备投入计算,并能够定制线程和数据的映射关系;在计算中线程被分为若干线程组,每个线程组被映射到图形处理器中的一个处理单元组上,组内的线程可以协同工作,它们具有一些相关属性,不同的线程组根据硬件的规格并发或顺序的被激活[6]。CUDA采用单指令多线程(SIMT)的计算模型,其线程结构如图3。

图3 CUDA线程结构示意图

在CUDA架构下,GPU执行时的最小单位是线程(thread),若干个 thread组成 1个线程块(block)。每个block内所能够包含的thread数量是有限的。执行相同程序的block,可以组成grid。

3.2 GLCM的并行计算实现

为了保证算法的实时性,将GLCM和特征值的计算放置到GPU端执行。

图4 图像纹理分块图

图5 计算GLCM时GPU端线程分布图

由于GLCM考虑的是像素对的关系,因此,GPU端采用二维的grid和block完成GLCM的并行计算,将原始图像划分为二维的纹理块,GPU的每个block处理一个纹理块,block内的每个线程负责1个像素。原始图像大小为227×227,纹理块的大小为32×32,原始图像被划分为8×8个纹理块,如图4,对应8×8个block,每个block内线程分布为32×32,GPU端线程划分如图5。

GPU端线程划分中,在blockIdx.x=7的block内,仅仅threadIdx.x<3的线程参与计算,其他线程不做处理;在blockIdx.y=7的block内,仅仅thread⁃Idx.y<3的线程参与计算,其他线程不做处理。

3.3 GLCM特征值的并行计算实现

由于GLCM的灰度级确定为256,因此,其能量、熵、对比度和逆差矩等4种特征值的计算,采用1维的grid和block,即256个block,如图6,其中每个block中256个thread,每个线程负责一项,对于能量、熵、对比度和逆差矩,每个线程分别负责对应归 一 化 后 的 P(i,j)2、 -P(i,j)·lgP(i,j) 、,通过2次规约求和,得到最后的4种特征值。

GPU端计算出4个向量对应GLCM的特征值,共计16维组成特征向量。

图6 计算4种特征值时GPU端线程分布图

4 基于支持向量机的的织布图像分类

支持向量机[9~10](SVM)是上世纪 90 年代被提出来的一种机器学习方法,它较好的解决了小样本、高维数、非线性、局部极小等问题。其基本思想是在样本空间,构造出最优超平面使得超平面与不同类样本集之间的距离最大,从而达到最大的泛化能力。SVM中对于线性不可分的问题通过引入核映射解决。

4.1 支持向量机实现二分类

SVM原本解决的是二分类问题,给定样本集(xi,yi) ,i=1,2,…,N,xi∈Rd,yi∈{-1,1} ,对于在原空间线性不可分的分类问题,普通的线性分类器效果很差,但是SVM能够很好地解决,它引入非线性映射Φ:Rd→Rn,将输入向量映射至高维空间Rn,通过在Rn中线性可分解决问题,SVM分类即求解在Rn中构造的最大间隔超平面wΦ(x)+b。

αi可通过求解如下二次规划问题解决:

而其中高维空间的内积(Φ(xi)Φ(xj))通过核映射交给原空间的内积解决,即在原空间确定核函数K(xi,xj)=(Φ(xi)Φ(xj)),因此,原二次规划问题即转化为

4.2 支持向量机实现多分类

SVM本为解决二分类问题,当处理多类问题时,就需要构造合适的多类分类器。当前,设计多分类器的方法主要有两类:一种是直接法,即直接设计多分类SVM分类器[11],该方法直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多类分类。该方法计算复杂度高,实现困难。另外一种是间接法,主要通过多个SVM二分类器组合实现多分类器,组合方式有两种,一种是“一对多”,另一种是“一对一”。

一对多法:训练时依次将某个类别的样本归为一类,其余样本归为另一类,这样k个类别的样本即构造出k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。

一对一法:在任意两类样本之间设计一个SVM,因此k个类别的样本需要设计k(k-1)/2个SVM。当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。

4.3 织布疵点分类的SVM实现

由于本文针对的织布疵点有多种类型,因此采用“一对一法”设计SVM多分类器,织布疵点种类数目为N,则设计N+1类分类器,用于对N类疵点图像以及无疵点图像进行分类。

将包含各类疵点以及无疵点的织布图像作为学习集,将学习集的图像计算出4个方向的GLCM的4类特征值组成特征向量作为SVM的输入来训练SVM分类模型,为了确定SVM的超参数,采用N折交叉验证法[12]。训练完成后,得到满足要求的各样本间的最优超平面,SVM分类模型即得到。

5 实验结果与分析

本文实验检测对象为如图7含有孔洞、油渍、异物、折痕4类疵点以及无疵点的织布图像,图像大小227×227。软件环境为:UBuntu16.04 64位操作系统,CUDA开发工具版本号为8.0,算法实现语言为C++,图像处理的基本函数以及SVM基于OpenCV2.4.13库。硬件环境为:Intel(R)Xeon E5-2630 v4 CPU,主频为2.2GHz,内存为8GB;GPU为 NVIDIA GeForce GTX1080,显存为 8GB,CUDA核心数为2560个,核心频率为1607MHz,显存带宽为320GB/s。

图7 待检测的织布图像

在对准确率和耗时进行测试之前,需将SVM 5分类模型训练完成。本文通过工业相机采集并截取得到的3000张图像按照5:1分为训练集和验证集,使用10折交叉验证法训练SVM,得到训练完成的SVM模型后,采用另外的500张图像(每类图像各100张)进行准确率和耗时进行测试。测试准确率和耗时结果分别如表1和表2。

表1 各类图像的分类准确率

其中的单张图像总耗时542μs是根据输入图像到输出结果的总耗时,除表中的灰度共生矩阵和特征值的计算时间,还包括CPU端图像数据拷贝至GPU耗时以及计算过程中求最大像素值的耗时。

表2 各阶段平均耗时结果

由表1可见,该算法对孔洞、油渍、异物、折痕4类疵点以及不含疵点的图像的识别正确率较高,其中,对于含折痕疵点和不含任何疵点的布匹图像的识别准确率最高,均不低于98%,对于异物和油渍疵点的识别准确率较好,但对于孔洞疵点的识别正确率远低于其他类型。由表2可见,该算法对于227×227的单张图像平均耗时542μs,实时性很好。

6 结语

针对当前织布疵点检测的正确率和实时性问题,提出一种基于CUDA计算灰度共生矩阵特征值和支持向量机的检测算法,借助GPU强大的计算能力,并行计算得到GLCM以及特征值,组成特征向量输入已训练完成的SVM分类模型,得到图像最终的分类,实现织布图像中的疵点类型检测。GPU强大的计算能力保证了算法的实时性;GLCM特征值反映的图像纹理特征以及SVM强大的分类能力保证了算法检测的准确率。实验结果表明,本文采取的算法能够较为准确并且实时的检测出织布图像中的各类疵点,能够基本满足工业生产的需求。

[1]刘建丽,卓宝奇,曾宪奕.基于小波纹理分析和LVQ神经网络的无纺布均匀性识别[J].专家系统及其应用,2010,37(3):2241-2246.LIU Jianli,ZUO Baoqi,ZENG Xianyi.Nonwoven unifor⁃mity identification using wavelet texture analysis and LVQ neural network[J].Expert Systems with Applications,2010,37(3):2241-2246.

[2]陈琳,汪军,李立轻.基于二维Gabor滤波器的非织造布疵点检测[J].东华大学学报,2012,38(6):695-699.CHEN Lin,WANG Jun,LI Liqing.Nonwoven Fabric De⁃fects Detection Based on 2D Gabor Filter[J].Journal of Donghua University,2012,38(6):695-699.

[3]黄潇玲,孙科,李子燊.表面疵点在线检测技术在非织造领域的应用[J].产业用纺织品,2009(5):39-43.HUANG Xiaoling,SUN Ke,LI Zishen.Application of on-line inspection of surface defect in nonwovens[J].In⁃dustrial textiles,2008(5):39-43.

[4]曾跃民,刘丽芳.基于计算机图象处理的非织造布质量检测与控制技术[J].非织造布,2001(3):37-40.ZENG Yuemin,LIU Lifang.Nonwovens Properties Detec⁃tion and Control Technology Based on Computer Image Processing[J].Nonwovens,2001(3):37-40.

[5]李刚.皮肤检测技术的研究与应用[D].重庆:重庆大学,2008:26-28.LI Gang.Skin Detection Technology Research and Appli⁃cation[D].Chongqing:Chongqing University,2008:26-28.

[6]刘海平.基于机器视觉的无纺布疵点在线检测系统搞研究[D].武汉:华中科技大学,2015:20-21.LIU Haiping.Research on Nonwoven Fabric Defect On⁃line Detection System Using Machine Vision[D].Wuhan:Huazhong University of Science and Technology,2015:20-21.

[7]祝双武,郝重阳,李鹏阳.基于纹理结构分析的织物疵点检测方法[J].计算机应用,2008,28(3):647-649.ZHU Shuangwu,HAO Chongyang,LI Pengyang.Fabric de⁃fect detection method based on texture structure analysis[J].Journal of Computer Applications,2008,28(3):647-649.

[8]白雪冰,王克奇.基于灰度共生矩阵的木材纹理分类方法的研究[J].哈尔滨工业大学学报,2005,37(12):1667-1670.BAI Xuebin,WANG Keqi.Research on the classification of wood texture based on Gray Level Co-occurrence Matrix[J].J Harbin Inst Technol,2005,37(12):1667-1670.

[9]克里斯特安尼.支持向量机导论[M].北京:电子工业出版社,2004:82-98.Nello Cristianini.An Introduction to Support Vector Ma⁃chines and Other Kernel-based Learning Methods[M].Beijjing:Publishing House of Electronics Industry,2004:82-98.

[10]张学工.关于统计学习理论与支持向量机[J].自动化学报,2000,26(1):32-41.ZHANG Xuegong.Introduction to Statistical Learning Theory and Support Vector Machines[J].Acta Automati⁃ca Sinica,2000,26(1):32-41.

[11]曹兆龙.基于支持向量机的多分类算法研究[D].上海:华东师范大学,2007:19-25.CAO Zhaolong.Multiclass classification Method Re⁃search With SVM Arithmetic[D].Shanghai:East China Normal University,2007:19-25.

[12]Stone M.Cross-validatory choice and assessment of sta⁃tistical predictions[J].Journal of the Royal Statistical,1974,36(2):111-147.

猜你喜欢

疵点线程特征值
5G终端模拟系统随机接入过程的设计与实现
基于Cascade RCNN 和二步聚类的织物疵点检测
利用LMedS算法与特征值法的点云平面拟合方法
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
基于总变差的织物疵点分割方法
喷丝板疵点检测系统设计
单圈图关联矩阵的特征值
凯莱图的单特征值
基于FPGA的图像疵点处理设计与实现