出品 | 智东西公开课
讲师 | 刘龙泽 洪朴信息首席AI顾问
提醒 | 关注智东西公开课公众号,并回复关键词英特尔06,即可获取课件。
回放 | https://appoSCMf8kb5033.h5.xeknow.com/st/5yIUK0QfI
导读:
5月19日,洪朴信息首席AI顾问刘龙泽在智东西公开课进行了一场直播讲解,主题为《利用OpenVINO加速工业缺陷检测效率》,这也是英特尔AI百佳创新激励计划系列公开课第6讲。
在本次讲解中,刘龙泽老师从当下工业缺陷检测应用现状与挑战、基于Faster R-CNN的缺陷检测算法设计、光伏EL智能识别系统、如何利用OpenVINO加速实际应用部署以及工业视觉检测质量管理体系进行系统讲解。
本文为此次专场主讲环节的图文整理:
正文:
信息首席AI顾问刘龙泽,很荣幸能在智东西公开课和大家一起分享今天的课题。今天分享的主题为《利用OpenVINO加速工业缺陷检测效率》,主要分为以下4个部分:
1、当下工业缺陷检测中的应用现状与挑战
2、基于Faster R-CNN的光伏组件缺陷检测算法设计
3、利用OpenVINO加速光伏EL智能识别系统缺陷检测效率
4、基于工业视觉检测的质量管理体系
当下工业缺陷检测中的应用现状与挑战
工业缺陷检测领域已发展很久,自从有了制造业、质量检查,就需要有工业缺陷检测。过去在很多场景里都需要做工业缺陷检测,包括锂电池、OLED面板、轮胎、芯片、电站组件等,这些都是在工业领域探索时碰到的经典场景。
最早做工业缺陷检测时,更多的是用一种传统算法,这些算法主要基于特征点提取或Opencv技术,其最大的特点就是算法的稳定性不够,主要体现在以下几个方面:
首先是场景的复杂性,准确率低很大原因在于场景太复杂,产品种类多,或者产品的形态非常多,会造成准确率比较低;其次是在其他的场景下,比如行人检测或人脸识别,效果总体相对比较恒定,但在工业领域,由于精度要求非常高,所以会出现效果衰减的现象,效果衰减主要是由设备变化或产品的一些细微调整引起的;最后是行业迭代快,质量标准变动频繁。所以,场景的复杂性是过去的工业检测面临的最大挑战之一。
基于Faster R-CNN的光伏组件缺陷检测算法设计
下面请我们的解决方案工程师林克详来为大家带来分享。
大家好,我是来自洪朴信息的解决方案工程师林克详,非常荣幸能在此次公开课上为大家介绍洪朴在光伏行业当中处于领先地位的一个质量管理产品:光伏组件EL智能检测系统,以及如何利用OpenVINO设计新的智能检测产品。
大家肯定会好奇,智能检测为什么会与质量管理有关联?光伏组件EL智能性检测系统又是什么?
首先,看下上面的几张图片,分别是光伏电池在西北发电站和家庭场景下的一些应用。其实电池在这些场景中只有一个作用:发电,而每一个使用者都希望这些电池能够长期稳定的为他们供电。要保持电池长期高效的为他们供电,就需要在生产环节中尽早的排查出电池的一些问题。从上图可以看到,每个电池组件上面都排列着许多的小方块,这些方块就是太阳能电池片,太阳能电池片在图片上看可能是一个具有厚度的东西,但实际上每张电池片的厚度通常只有2~3根头发粗细。所以在组建生产的过程当中,很难保全电池片不发生破损。
另外,检测外观上的破损并不是项目的难点,项目难点在于有些隐藏在电池片当中看不见的缺陷,像是一些电池细微的隐裂以及电池片失效的原因,还有一些电池可能没有焊接到位的问题,都会出现光伏组件的发电效率下降以及寿命缩短的情况。针对这些情况,光伏行业通常使用红外相机来拍摄并寻找这些缺陷,而这种寻找缺陷的检测方式就称为EL检测。
传统的EL检测通常是由人来完成,但由于每一个组件,可能有几十张到上百张,再加上人工检测具有一定的不确定性,所以人工检测在这个环节的漏检率是比较高的。当了解到光伏行业在EL检测下的痛点时,我们就开始尝试使用视觉检测的方法来代替人工,并且近期还涉及到一款基于OpenVINO的新产品。
在产品早期开发过程中遇到了很多问题,开始时尝试使用传统的图像算法来捕捉缺陷,但开始没多久就遇到几个问题:
第一个问题是光伏组件的缺陷形态是很大差异。相比于其他的图像问题,缺陷具有的共性比较少,而且这些缺陷不容易聚集到同一类上,导致后面使用机器学习提取这些特征时,发现学习过程中会出现过拟合或欠拟合的现象;第二个问题是缺陷的判断条件比较复杂,在一般的目标检测过程中,物体特征都相对比较明显,而且待检测的物体与周围的东西,包括背景都有明显区别。但是在EL组件下,缺陷有可能嵌入到背景之下,缺陷很难被检测出来,导致出现漏检的情况,并且背景当中还有大量与缺陷类似的划痕,脏污,这些情况也会被检测出来,使得可能需要用图像以外的其他信息来帮助抑制整个检测的过检率;第三个问题是缺陷的尺度不一样,在实际研究过程中,可能发现组件图上面有些电池的阴影面可能就几毫米,但是有些可能特别大或者接近1/2的电池片,这对传统图像算法有着非常大的挑战。
综合以上的问题,我们尝试使用深度学习的Faster R-CNN方法来训练目标检测模型。Faster R-CNN提出了一个RPN的候选框算法,这个算法的提出使得整体模型的目标检测速度大大的提升,也使得模型的检测效率能够满足我们客户的需要。
怎么通过Faster R-CNN来去完成目标检测?首先,需要输入一张光伏组件的图片,然后这张图片进入到卷积神经网络当中进行特征提取,我们会先用RPN生成一堆anchor box,然后再对这些anchor box进行裁剪、过滤,再通过softmax判断anchor是不是缺陷,与此同时,另一个分支的region proposal network会修正这些anchor box,形成一个更加准确定位的缺陷框,然后再把缺陷框映射到CNN的另一个卷积feature map上,再通过RoI pooling层,使得每一个RoI feature map再利用softmax loss以及smooth l1 loss对分类概率以及边框回归进行联合训练。
在应用了Faster R-CNN之后,发现模型的整体检测水平有了极大的提升,再通过标签工程师以及对光伏行业EL组件的深刻理解。我们又在之后迭代了好几个模型,时至今日这个模型已经达到了漏检率小于万分之5,过检率小于千分之1的水平。下面我们将通过一段视频来展示我们整个系统的运作流程。
在检测台打开系统以后,系统会从检测台上面获取EL图片,然后将图片传送到机房,由算法服务器进行推断,并且将推断结果返回到图片上,显示出缺陷位置以及缺陷类型,同时会给出组件是否合格的信号,如果不合格,就会被传送到返修台进行返修,而返修人员也可以结合系统判定的结果,来辅助修订缺陷。当然我们的产品想要做到质量管理不只是以上的操作,关于质量管理将放在第4部分着重展开。
在这个产品推出以后,也受到了很多客户的肯定,但还是有一些客户,他们会发出这样的声音,你们的产品好确实挺好,也能够为我们减人和增加产能。但这批服务器有些贵,一台服务器好几万,这么高的硬件成本会让他们觉得在这个产品之上的收益有些少,所以希望能不能用其他办法来降低相应的成本。在听到这些客户的反馈之后,我们开始思考,是否能通过其他的方法和硬件来做一个推断,之后我们就和英特尔进行合作,发现英特尔支持CPU的推断,所以我们就基于CPU服务器去做一个新的产品。
利用OpenVINO加速光伏EL智能识别系统缺陷检测效率
简单介绍下OpenVINO是什么?OpenVINO是英特尔基于自身的硬件平台开发的一种工具套件,它可以加快高性能计算机视觉和深度学习视觉应用的开发速度,同时能够支持英特尔各种平台的硬件加速器,并且在这些硬件加速器上进行深度学习。OpenVINO还支持windows系统、Linux系统,还有Python语言和C++语言。在对OpenVINO有了一定的调研之后,我们发现OpenVINO具备以下的特性:
1、 OpenVINO专注于计算机视觉领域,而我们现在大量的使用到Opencv和深度学习等计算机视觉相关技术,所以OpenVINO从技术领域上与我们的产品非常契合;
2、OpenVINO具备产品算法模型部署的各种能力,它拥有三个内置API深度学习部署工具包,以及通用学习推理工具包还有 Opencv、Openvx的优化能力,并且在卷积层、全连接层都有一个优化处理,而这些优化处理都能够很好的帮助模型去做推理;
3、OpenVINO支持的神经网络结构超过151种,这与算法服务器的模型能力是一样匹配的。因为我们希望看到不同的模型在同一事物上的效果。如果OpenVINO不支持如此多的网络结构,就意味着只能用OpenVINO加速少量的网络结构,并且一旦发现效果不好或OpenVINO不支持的网络模型,就不能进行相应的迁移,但是OpenVINO所支持的网络结构足够多,在技术选择上给了我们更大的自由度。
4、OpenVINO能够快速的部署模拟人类视觉的应用程序和解决方案,这也是基于先前几点的
5、OpenVINO最核心的特征是硬件成本很低,以及推断效率特别高,为什么?因为它能够基于CPU去做推断,在过往的客户中,他们设备上的CPU其实都具备推断能力,即便是CPU不具备推断能力时,也可以在边缘侧去配置一台性能比较好的CPU设备去做运算。而且我们测算过整体的硬件成本,CPU相对于GPU服务器至少能够节省30%的硬件成本,并且推断效率也是满足客户需要的。所以基于OpenVINO低成本的特性,可以使用它让CPU去做GPU的事,同时效率没有太多的损失,这也是我们非常乐意使用OpenVINO的原因。
刚刚介绍到OpenVINO集成了三个全新的API,这三个全新的API能够很好的辅助我们的产品,而本次产品大部分都是基于深度学习的部署工具包去完成的。所以先对深度学习工具包以及它是怎么为我们的模型去做服务的做简要的介绍。
这个工具包主要包括模型的优化器和推理引擎两部分。模型优化器由Python或C++语言编写,它的工作原理就是通过模型优化器,对在Tensorflow、Pytorch以及Caffe 2下训练的模型进行优化,然后会把优化的结果转换成一个中间表示的文件,也就是IR文件。IR文件中包含了许多优化以后的网络拓扑结构,以及优化之后的模型参数,模型变量。推理引擎会读取IR文件,之后会根据选用的目标平台去选择相应的硬件插件,然后将IR文件下载到目标平台之上去执行。目前OpenVINO支持的插件包括CPU插件,GPU插件,还有FPGA插件等。在验证完整个模型都没有问题后,我们就会将推理引擎和中间的IR文件一起下载,或者是集成到我们的光伏组件EL智能检测系统上去进行部署。
在对OpenVINO了解这么多后,发现OpenVINO非常适合我们产品,因为它不仅含有Opencv的优化功能,而且还优化了以往在Tensorflow、Pytorch以及Caffe2下训练的模型,并且能够通过CPU推断的方式大幅的降低产品的硬件成本,这些优势都是十分契合我们产品的,所以我们开展了一个基于OpenVINO的开发工作。
首先算法团队对OpenVINO进行一个调研,确认他与EL智能检测系统是契合可行的。然后基于OpenVINO的特点,设计了属于他的产品框架,我们会让每一台GPU服务器连接EL检测机台,然后统一的将所有的GPU服务器放到车间的机房当中,因为这批服务器对于车间的环境要求比较高。然后客户端会收集图片,传送到机房去做推断,然后推断结果会返回到前面去。机房当中还会有一个非常特殊的枢纽,它有什么作用?首先是能够去调度我们的算力,保证每个GPU服务器的算力是均衡的,保证每次推断都是稳定的;其次是能够将推断的结果存储到数据库中,而且我们的数据库能与光伏行业早先的一些系统进行打通,并且把这些检测之后的图片存在数据库里面,我们也可以基于这些检测的结果进行一些数据挖掘的工作。
我们可以挖掘出当前产线的生产情况如何,以及现在这批产品它的缺陷状况是怎样的,然后再依据这些去申请一份可视化的报表,交给质量人员更好的协助完成质量管理工作,整个流程不仅节约了统计样本的时间,还节约了分析样本的时间。
那OpenVINO在原有的架构中做了哪些改变呢?其实大部分是没改变的,最重要的改变点在于OpenVINO支持的 CPU,我们把它放在边缘侧,那么放在边缘侧有什么好处呢?这意味着它可以在车间现场完成硬件部署,与机台的距离是比较近的,网络传输时间也比较小,提升了推断的稳定性。
在设计完产品框架之后,我们在实验室中做了一系列的测试,一开始是从产线上拿了比较多的EL图片,然后再将在Tensorflow框架下训练的模型,放入到模型优化器当中进行优化,并且用优化之后的模型去定位缺陷。整个实验下来发现推断时间比Tensorflow模型要稍慢一点。
但整体来讲是满足客户要求的,并且也能够准确的去框出缺陷的位置。然后开始着手在现场进行测试,整个测试结果显示,OpenVINO在加速推断后,产品的推断速度和推断效果,都要比原模型差一点,但是总体的效果还可以。总之使用OpenVINO去加速EL检测系统,不仅能在技术端帮助我们,而且能够降低将近30%的成本。同时在边缘端的部署条件也会比GPU服务器更便捷,由于网络传输时间更小,所以它推断时间的稳定性也得到很大的保障。如果未来要开发类似的计算机视觉产品,相信OpenVINO一定是一个不错的选择。
到此我的部分讲解完毕,接下来由刘总为大家带来基于工业视觉检测的质量管理体系。
基于工业视觉检测的质量管理体系
首先,从横向上来看,如果把OpenVINO结合深度学习这一整套的体系,用在锂电池、光伏电站的场景里,相信会有很不错的效果,尤其像电站,它所有的检测都发生在难以控制的位置,不像生产线,旁边可以有人调试,但组件电站,一般会出现在屋顶,所以我们通过一个成本可控的边缘计算器,在边缘侧直接进行部署,然后将所有数据通过5G基站,或者无线设施做一些回传,会比传统的方案更有优势。
在质量管理方面,如果一个制造业的从业者,想看到深度学习是否能够在检测站点带来明显的提升,答案是肯定的。首先可以把检测的对象做下抽象处理,在光伏行业里,如果看光伏EL智能检测系统在焊接站点和层压站点之间进行检测,通过这样的系统之后,相比于没有系统时,可以看到良品率总体的分布确实会有优化。但这并不是质量管理的全部,因为如果只是把检测完成,这件事情还没有做完,为什么?虽然可以节省人力成本并提升检测精度,但是并没有实质性的赚到钱。
看下上面的架构,可以看到层前检查的位置有所改变,事实上在焊接站点之前还是有其他的检查,在串焊站点到焊接站点之间,可以加一个新的监测点叫串检。而在来料口到串焊之间,我们可以加一个来料检查。在每一个环节所检测的产品,它的现状其实类似,区别并不是特别大,但通过一轮检查之后,我们会发现每一轮来料检查时,已经把进料口处的不良挑出来,如果没有这个环节,所有的不良会持续往下流动,一直堆积到最后的层前检查环节。然而,如果可以在来料检查环把所有的缺陷都挑出来,就能把这一部分成本节省下来,从而帮助客户赚钱。
如果不从钱的角度上来看,由于每一道都把所有的问题抓出来,所以良品率一定有更大程度的提升。在工业里有一个专门的名字叫做零缺陷管理。过去零缺陷管理能不能做?能做,但是做零缺陷管理的成本会非常高,为什么?因为一个检测站点意味着要买新设备,还要雇新人,这些东西都是新的成本。但是如果用AI算法就会变得很简单,如果横向拓展能力,其实AI算法,它可以保持今天在这个站点做得很好,明天在另外一个站点也可以做得很好,这就是零缺陷管理在光伏行业的应用。更进一步来看,在所有这些环节中还可以获得一个新的东西:数据。
人工智能与数据有什么关系呢?因为人工智能是最容易去产生高质量数据的,这个数据具有高增值性,什么意思?过去在做大数据应用时,经常提到一个问题就是数据特别“脏”,这个数据的“脏”并不一定是里面会混杂各种各样让我没有办法输入到系统的数据,而是数据的脏直接造成所有的数据的可用性非常低。脏数据它进入系统时,由于被审核过或者只是被采集到,所以系统并不知道有什么用。在过去的工业大数据应用里面,会普遍碰到这样的问题。
现在,在光伏的场景里,可以看到数据通过AI在不同的环节之间去比对。如果发现从来料到串焊中间出现的不良,这是一个数字,下一步发现串焊到层前中间,是另外一个数字。那这些数字就可以得出来在每一个站点的生产效率是什么样,从而发现更多问题。
那组建工厂之后,又来到电池工厂,可以看下上图的两块电池片,它们有什么不同?左边这片,是在设备加工时产生的一个不良划痕,而右边则是由于人工操作不当所产生的不良,它们的区别非常细微,只有非常有经验的老师傅能够看得出来。
那这背后意味着什么?如果发现像左边的不良特别多,就证明可能产生不良的设备出现了问题。而如果右边不良的比例增高,那就去推断是站点的人的问题,进一步的可以去找到设备部或者生产班长,如果为设备类的不良,那可以去找到方向去改善。同样的对于生产班长,如果是人产生的不良,那就可以回去解决这个问题。所以这是一个质量管理的体系。
现在有了AI检测系统跟模型,是不是可以用AI检测系统产生一些质量报表,这些质量报表能够追溯到缺陷的一些成因,进一步的跟模型去做对接,这样当知道不良是什么原因之后,就可以想办法去做出一个更好的模型,到底该怎么办呢?我们会有一个训练平台,它能够把所有的训练能力移交给客户,在开发出一些工具包之后,也能很快的掌握AI能力,最后他们利用整个闭环,做出优质模型,并且持续的去迭代,这就是整个AI的质量管理体系。
所以,如果制造业对如何将质量检测进行落地,就可以参照这个路径。为什么要讲路径呢?因为我们发现所有路径,不仅是一个质量管理,还包括更多的预测性维护、良品率智能优化等,我们所做的这些应用,其实是很容易复制的,而这与OpenVINO的关系非常大。
OpenVINO不只是一个能够帮助节省成本和提高效率的平台,同样也是一个渠道性的平台,什么意思?在最初跟英特尔接触时,他们给我们提出一个很重要的概念就是英特尔会批量生产标准版的公共区,在公共区内部集成一系列的算法,或者一些推断框架,或者一些训练模型的平台性能力,这个是可以集成到公共区里面的。
作为供应商,只需在公共区里打开我们的license,客户就可以试用乃至于购买。我们能够将这些东西去放到客户现场,引导他们去使用,那么他们就可以利用公共区互相的将各自的产品去带给客户,为客户创造更多的价值。我觉得这是OpenVINO一个更加核心的能力,也就是说它不仅是一个技术性的平台,同样也是一个渠道性的生态型平台。
本文暂时没有评论,来添加一个吧(●'◡'●)