利用人的分歧介入增强珍珠自动分拣可靠性研究
2021-12-01花婷婷王岭人赵云波
花婷婷,王岭人,赵云波
(浙江工业大学 信息工程学院,杭州 310023)
0 引言
珍珠是一些瓣鳃纲软体动物(主要是牡蛎)的产物,是重要和常见的珠宝类型。现有珍珠大多通过淡水养殖牡蛎进行生产,我国的产量占世界总产量的80%。珍珠的价值与其外观品相密切相关,光泽、形状、表皮质量、颜色、大小和有无瑕疵等所造成的珍珠优等品和次等品之间价格能差几百上千倍。因而,对于珍珠生产商而言,按照不同的等级将珍珠进行分拣就成为一个必要和重要的步骤。
现有珍珠分拣主要通过人工进行。经验丰富的从业人员通过肉眼观察珍珠的颜色、光泽、形状和质地等多种外观特征,然后依照某种事先定好的等级规则进行分类。容易认识到,对大量外观差距可能并不太大的珍珠进行观察分拣是一项重复单调的劳动;而随着时间的增加,人的疲劳也会大大影响分拣的准确度。然而,将高等级珍珠误分为低等级固然会错误的降低售卖价值,反过来将低等级珍珠误分为高等级也会影响产品质量和信誉。这样,为了分拣的高效和稳定,就有必要引入自动化的分拣方法。
由于珍珠分拣主要基于珍珠外观进行,自动化的分拣方法因而大多基于机器视觉的方法和技术。例如,文献[1]利用色调、饱和度和亮度(HSL,hue, saturation, lightness)颜色模型转换技术,以及模糊模式识别方法进行珍珠判别归类,文献[2]利用调、饱和度和明度(HSV,hue, saturation, value)颜色模型来提取珍珠颜色信息,文献[3]提出了基于傅里叶变换的模糊分类方法,文献[4]通过Zernike矩描述珍珠形状特征从而实现分类。为观察珍珠这种细粒度级别的多个视图的多个特征[5-7],在上述使用较少特征的分类方法基础上,文献[8]利用单目多视角摄像装置直接获取5个不同视角的珍珠表面图像,利用更全面的珍珠检测视角提升了珍珠识别精度。传统计算机视觉方法中珍珠特征的手工标注依赖于专家知识,成本相对较高。近年来,深度学习[9]方法尤其是卷积神经网络(CNN,convolutional neural networks)[10]在图像分类方面取得了很大的成功,它可以自动生成有用的特征,从而节省大量手工标注工作,各种CNN模型如AlexNet[11]、VGG[12]、GoogleNet[13]、DenseNet[14]、ResNet[15]等都被提出。基于这些理论进展,文献[16]提出了一种多尺度卷积神经网络(MS-CNN,multi-scale CNN)方法,通过充分利用不同观测角度的信息提升自动分类的效果;文献[17]则提出了一种多视角对抗生成网络(MV-GAN,multiview generative adversarial network)方法,通过自动扩展标记的多视图珍珠图像实现更可靠的珍珠分类效果。
注意到,尽管上述的各种珍珠分拣的人工智能系统已经在实际中得到了初步应用,但所达到的分拣准确度仍有很大提升空间。例如,2018年所提出的MS-CNN方法只能达到92.57%[16]的分拣准确度。而可以理解的是,在此基础上的准确度的进一步提升存在很大的困难。原因一方面是技术上的,这一技术上的限制只有在现有深度学习算法有了本质的改进才有可能得以消除。另一方面的原因是成本上的,如前所述,大量准确标注的珍珠数据集难以获取。上述分析意味着如果需要进一步提升珍珠分拣的准确度,很有可能需要跳出现有的单纯的深度学习技术框架。
另一方面,前面已经指出,对珍珠生产企业而言,1%的分拣准确度提升也有很大的经济价值。这主要是因为珍珠单价昂贵,不同分级之间价格甚至相差几百倍,把优等珍珠分成次等品会导致利益损失严重,而把有瑕疵珍珠分成上等品会造成产品质量争议和企业信誉受损。这就对珍珠分拣准确度的提升提出了现实的需求。
考虑上述两方面的因素,即对珍珠分拣准确度的现实需求和提升准确度在现有技术框架下的限制,在本文提出一种通过人的分歧介入来提升珍珠分拣准确度的方法。该方法的基本思想是找出基于深度学习的自动分拣方法中分错的部分,将这一部分交由人进行进一步的检查判定,通过人机合作达到更高的分拣准确度。容易想到,该方法技术上的难点正在于如何准确的识别自动分拣方法的失误,为此使用了一种多个冗余算法分歧的方法,通过引入冗余的自动分拣算法,将多个算法产生判定分歧的珍珠认定为分拣失误,通过在文献[17]中采集的珍珠数据集上进行实验,证明了方法的有效性。
1 珍珠分拣相关研究
基于机器视觉的珍珠分拣方法的关键在于有效提取所需的特征。传统机器视觉使用手工标注的特征进行珍珠分拣,比如形状和纹理特征。形状特征可以用傅里叶级数[3]和Zernike矩[18]来描述,傅里叶级数可用来表示图像的二维封闭形状,低阶Zernike矩可表示图像的整体形状,高阶Zernike矩可描述图像的细节。纹理特征可通过灰度级共现矩阵(GLCM,gray-level co-occurrence matrix)[19]和Gabor滤波器[20]得到,灰度级共现矩阵利用矩阵的各种统计指标作为纹理特征,Gabor滤波器对图像进行滤波获得图像像素的特征向量作为纹理特征。目前珍珠分拣大多只使用一种特征,但在实际中珍珠分类应考虑珍珠的多个视图的多个特征。文献[8]从颜色、光泽度以及色度均匀度三方面对珍珠进行分类。先利用HSL颜色模型对珍珠进行颜色分类,用色调H 和饱和度S来表示颜色的类别与深浅程度,再在同一色系、同一饱和度等级下根据I分量进行分类;然后通过融合拼接后的全景珍珠图像中的反光区域来识别珍珠光泽度;另外对珍珠表面光泽的不均匀区域以及色度不均匀区域进行均匀度识别。
传统的方法涉及不同类别的特征,所需成本较高,而最近深度学习在视觉识别分类任务中具有强大表现力。文献[16]设计了一种珍珠自动分类装置来采集珍珠的多视角图像, 以每颗珍珠5个视图的图像作为输入,提取珍珠的表面特征,利用元素智能层得到一个统一的特征向量,并通过权重共享机制将珍珠特征进一步融合,模仿了现实中手工分类珍珠方法。文献[17]在此基础上加入GAN框架,对采集的珍珠图像数据集进行有效扩展,使珍珠分类具更高精度,且能帮助MS-CNN抵抗环境引入的干扰如亮度干扰,使珍珠分类更加鲁棒。
2 方法模块设计
所提出的面向珍珠分拣的人的分歧介入方法整体框架如图1中的下框图所示。与上框图所表示的一般AI算法不同,在人的分歧介入方法中,主算法之外另外构建了一个独立的次算法,两个算法独立产生预测输出,输出进而交由仲裁模块进行分歧仲裁:如果分歧产生,则认为AI系统分类可能有误,此时将交给人做最终的决策;如果无分歧,则保留主算法的预测结果。
图1 人的分歧介入框架图
下面详细介绍算法模块和仲裁模块的设计。
2.1 算法模块设计
算法模块的功能是通过所选择的两种算法产生的预测的分歧来判断算法预测是否有误,因而两种算法选择的核心原则即是,一方面,两种算法本身都应该具有较高的预测准确性,因为否则两种算法的输出判定可能会产生大量无意义的分歧;另一方面,两种算法应保证尽可能大的独立性,因为否则就难以产生所需要的分歧。另外,所提出的算法仍需要保持某一选择的算法为主,另一算法为次,因为依照该算法结构,系统输出会保持主算法的输出,除非因为分歧引发人的介入,此时的系统输出就成为人的决策。
为了符合上述的选取原则,在实际问题中主次算法的选择可按如下流程进行:首先选取针对当前问题性能最好的算法作为主算法,其次,在所有剩余待选算法中选择与主算法尽可能独立但同时又保证具有较高的自身准确度的算法作为次算法。
采用上述的算法选取流程,关键在于次算法选取中独立性和准确性的折中。如果次算法与主算法的独立性较差,那么主算法预测有误的情形次算法也有很大可能出现同样错误,因而预测错误无法产生分歧,影响所提出的人的分歧介入框架的准确性;相反,如果次算法准确性较差,那么会有很多预测因为次算法自身的预测失误而产生分歧,无意义的增加了人的介入成本。从上述分析可以看出,在实际的次算法选择中,应首先确保次算法自身的准确性在某一阈值之上,然后再考虑与主算法的独立性。
进一步的,对次算法独立性的确保,可以从训练数据集、训练方式、模型本身等方面的不同来考虑。针对具体问题,需要分析从所有可选算法中进行尽可能最优的选择。
2.2 仲裁模块设计
在珍珠分拣的图像分类任务中,人在时间充分状态良好的情况下判断结果比绝大多数AI系统都更为可靠,只是因为人力成本的高昂和在长期工作下的疲劳所导致的犯错可能,引入机器方法是有益的。仲裁模块的设计目标,即是判断机器算法何时出错,并在此时交由人进行处理判断。
分歧仲裁框图如图2所示。在实验中,由两种 AI 算法对同一珍珠进行分类,如果两个独立的AI算法都给出了相同的分类结果,则有信心认为 AI 系统当前的分类结果是正确的;如果两个AI算法产生分歧给出了不同的分类结果,则有理由认为AI系统当前的分类结果需要进行慎重评估,进而将该珍珠交由人进行检查判定,并假定凡是交由人做进一步判定的珍珠最终的分类结果都是正确的。
图2 分歧仲裁框图
设计良好的仲裁模块将能够保证机器算法的失误可以被有效捕捉,从而在整个系统中,通过引入少量的人力成本,实现对机器算法性能的有效提升。从成本的角度来说,又可以节省宝贵的人力成本,使得人不再需要对所有珍珠进行识别判断。
3 实验结果与分析
3.1 数据集和实验设置
本文在文献[17]提出的数据集上对所提出的方法进行评估。该珍珠数据集利用单目多视角摄像装置拍摄来自浙江诸暨的大量珍珠的主、后、左、右和上5个不同视角的表面图像,做了预处理并让有经验的专业人员对图像进行了标记。数据集包含有10 500颗珍珠拍摄而成的52 500张带有标签信息的图像,52 500张图像按6:2:2的结构分成训练集、验证集和测试集。本数据集共收录训练集31 500张图像、验证集10 500张图像和测试集10 500张图像。
珍珠按粗糙规则分类可大致分为两类:1)一类为价值较低的扁平型或深瑕疵珍珠;2)另一类为瑕疵程度较小的珍珠。前者可进一步细分为三类:(1)具有多个平面的珍珠;(2)形状对称的珍珠;(3)其他珍珠。后者也可进一步细分为四类:(1)短半径与长半径之比大约大于0.7的珍珠;(2)颜色浅淡的珍珠;(3)隐含斑点的珍珠;(4)其余珍珠。
将上述珍珠类别分别记为Class1-7,并给每张图片制定好标签,如图3所示,在训练阶段使用训练集和验证集,在测试阶段使用测试集评估训练模型的能力。
图3 珍珠七分类视图
本文采用Ubuntu16.04服务器训练珍珠分拣模型,算法使用Pytorch实现,具体设置如下。训练模型时设置训练最大次数为10个Epoch,将训练和测试时的单次处理样本数Batch设置为32,学习率为0.000 1,使用Adam优化器,并将step-size设置为5,gamma设置为0.1,学习率将在训练过程中经过5次变化逐渐变成0.1。在训练阶段,本文会对图片进行预处理,包括随机二维裁剪、给定概率水平翻转等。将在每一个训练Epoch后进行一次验证,最后选取最优模型用于仲裁系统。
3.2 评价指标
在实验验证阶段,使用分歧准确指数α和额外成本指数β作为系统分歧的评价指标。分歧准确指数α指的是主算法分类错误后被纠正的图片数目占该模型分类错误的图片总数目的比值,用于评价该方法找出分类错误的能力。额外成本指数β指的是主算法分类正确但交于人进行判断的图片数目占最优模型分类正确的图片总数目的比值,用于表示该方法消耗的无效人力成本。
分歧准确指数越高越好,而额外成本指数越低越好,当两者的数值均为最优值时,说明分歧部分均为主算法出错的部分,是最优结果,但实际中几乎不可能达到。对于主算法分类出错交于人进行分类的那部分人力成本是算法的必要成本,因此在成本估算上更有意义的是所需的额外成本。
分歧准确指数α计算公式如下:
(1)
额外成本指数β计算公式如下:
(2)
其中:N为测试集数目,E为主算法分类错误的图片总数目,F为主算法分类错误后被纠正的图片数目,P为主算法分类正确但交于人进行判断的图片数目。通常评价指标还包括准确度。
3.3 基于二算法分歧的实验评估
本文选取了目前比较主流先进的几个算法,包括ResNet50、SE-ResNet50、Vgg16网络模型进行对比评估。
如表1所示,本文分别对ResNet50、SE-ResNet50、Vgg16算法模型进行训练,再两两搭配成三组,对比准确率结果。为对比本文提出的方法而选用的集成学习方法(Ensemble Method),将若干个模型的输出结果概率进行平均得到最终的预测输出,其最终预测为:
表1 二算法分歧准确率对比结果
(3)
其中:hi(x)是第i个模型的概率输出结果,T是模型的个数,wi是单个模型hi的权重,通常有:
(4)
此外,为了验证两个算法的分歧确实找出了AI系统分类错误的部分,还提出了一种基线方法,随机选取测试集中人的分歧介入方法产生的等量珍珠交于人进行决策判断,并称之为随机监督方法(random supervision method),在实验过程中认为交于人的这部分最终分类结果都是正确的。
由表1实验结果可知,本文提出的方法是有优势的,比之单独的模型算法的准确率[19]提升了将近4%,且较两个算法进行集成后的准确率也有明显提升。即使因为人的参与最终分类结果准确率必定有所提升,但相较于随机监督方法的实验结果可以发现准确率也有明显提升,这表示了本文提出的方法确实可以在一定程度上提升珍珠分拣的精度。
为进一步说明本文方法的有效性,本文分别从分歧准确指数和额外成本指数两个性能指标进行分析,来评估系统的整体性能。二算法分歧性能结果如表2所示。
表2 二算法分歧性能结果
由表2可以看出,本文分歧准确指数在51%左右,相较于随机监督方法的性能结果有明显提升,这表示了本文提出的方法确实更有效地找到AI系统分类出错的部分,此外额外成本指数也有相对减少,这表示本文提出的人的分歧介入方法用更少的人力来提升珍珠分拣的精度。
另外,为了能更清晰地展示本实验的实验效果,在以ResNet50和SE-ResNet50两种算法分歧的情形为例,挑选了几张图片进行分析,这两种算法中SE-ResNet50算法更优,如图4所示。图4中分别展示了4种情形。1)一类分歧:两种算法分类均错误但仍分歧的情形,这也是研究最期望的结果;2)二类分歧:主算法分类错误而次算法分类正确导致分歧的情形,这和一类分歧共同决定了分歧准确指数的大小;3)三类分歧:主算法分类正确而次算法分类错误导致分歧的情形,这是额外成本指数的来源;4)不分歧:两种算法分类均错误但不分歧的情形,这是导致研究最终准确率提升不上去的原因。其中算法对错误分类结果的概率并不是很高,这也是未来研究可以切入的点,利用这一优势在减少人力成本的基础上提升珍珠分拣精度。
3.4 基于多算法分歧的改进优化
可以在原二算法的基础上进行改进,进行基于三算法甚至多算法的分歧介入。算法设计的目的主要考虑提升分歧准确指数和降低额外成本指数。
3.4.1 提升分歧准确指数
面向对成本相对不敏感但对分拣结果准确率有更高要求的应用场景,多算法的人的分歧介入框图如图5所示,在主算法的基础上设计多个次算法,其性能结果如表3所示。
图5 基于多算法的人的分歧介入框图
表3 多算法分歧性能结果
从表3中可以看出使用多个算法确实可以提升系统最终分类结果的准确性,分歧准确指数也有明显的升高。但同时随着算法个数的增加,额外成本也在逐渐增加,而准确率的提升幅度却明显减少,有一定的限度。因此所需的成本和准确率的提升之间需要一个衡量,在实际中要因事制宜。
图6展示了三算法分歧的珍珠分类效果图,其中SE-ResNet50为主算法。如图6所示,依次展示4种情形。1)一类分歧:3种算法分类均错误但仍分歧的情形,是此次研究最期望的结果;2)二类分歧:一种算法分类正确其余两种算法分类错误也导致分歧的情形;3)三类分歧:两种算法分类正确而另一算法分类错误导致分歧的情形,相对于二算法这导致人工总工作量增加;4)不分歧:3种算法分类均错误但不分歧的情形,这是研究中最不愿看到的。
图6 三算法分歧珍珠分类效果图
3.4.2 降低额外成本指数
针对珍珠分拣准确性已满足要求,但需要降低人工成本的应用场景,可以在三算法的基础上加入一个集成的概念,将三算法集成为二算法,其他部分同二算法方法,如图7所示。
图7 基于算法集成的人的分歧介入框图
选用ResNet50、SE-ResNet50、Vgg16算法,在表1的集成结果基础上进行实验结果分析。
从表4可以看出与二算法的性能结果(表1、表2所示)相比,提升相同的准确率所需要的人工监督成本有所减少,当准确率均达到96%左右,分歧准确指数为51%左右时,额外成本指数却降低了约2%,用更少的人力来提升珍珠分拣准确性。
表4 三算法集成分歧性能结果
4 结束语
面向珍珠分拣这一应用场景,本文提出了一种通过人的介入提升机器算法准确性的方法。设计了相应的算法模块和仲裁模块,使得在AI系统出错时可以有效识别并交由人处理。
虽然这一方面是面向珍珠分拣这一特定应用领域的,但相关的人的分歧介入思想可以在更为广泛的应用领域中得到推广,因为从原理上来讲这一方法是具有普适性的。从这一角度出发,我们也认为随着人工智能技术在越来越多的领域中得到广泛应用,而同时意识到基于深度学习的人工智能技术本质上的难解释性、不确定性、弱鲁棒性等,在人机混合智能的框架下考虑各类相关应用将是一个值得关注的研究方向。
本文方法仍存在如下不足,在今后的研究中需进一步探讨:1)对主次算法的选择尚缺少系统性可操作的方法,仍需针对不同应用进行尝试,这影响了所提出方法的广泛适用性;2)尚缺少对引发分歧的阈值的系统性确定方法,也影响了所提出方法的一般性。