袋鼠云高级算法专家胡丰分享了他 10年的图像处理、模式识别、机器视觉等方面研发经验,以互联网+工业视觉分析为题,主要为大家介绍机器视觉、图像分析算法在工业场景中的应用、以及如何将当前的互联网+和工业视觉分析场景结合起来,实现线上部署、模型更新、线下边缘计算。
直播视频请点击
以下是经常视频内容整理:
背景概述
我国工业互联网已经形成“三条途径”:一是打造智能工厂,提高企业内部生产效率,就是通过我们现在互联网技术以及一些相关的机器视觉、图象算法、模式识别的方式,提高企业的生产效率;二是打造智能产品,延伸企业外部的价值链;三是汇聚产业链资源,实现向平台运营的转变,打造数据驱动的生态运营能力。
端+云的完整解决方案
在端+云解决方案中我们分成两个方面,一是本地端,一是云端。在本地端中分成两部分:一个是数据层,数据层在一些生产设备以及相应的业务系统中实时会场生成的数据;一个是本地运行层,产生的数据经过本地运行层,运行层实时获取数据,获取数据之后,一方面进行数据的存储,另一方面对获取到的数据进行模型计算,计算完之后进行决策,决策后又可以进行下一轮的操作。
在云端接收到离线的序列数据,在云端基于Maxcompute大数据平台进行一个模型分析及模型序列,序列之后把更新的模型再下发到本地进行更新,依次循环可以不断的提高系统能力。
基于机器视觉的应用场景分析
人类对世界的认知非常简单,我们可以一眼看出一个水果是苹果还是橘子。但换成计算机,怎么写个程序让机器来分辨人和猫、苹果和橘子呢?
实际上在我们考虑的过程中,可以基于以下几个方面进行思考,首先以我们最直观的方式来看,比如说颜色、形状、纹理、边缘轮廓等,转换成计算机,我们通过颜色直方图把最低的三个分量特征都提取出来,苹果是偏向红色,橘子是偏向橙色,这样可以分析出来;然后再通过形状,比如把某省地图轮廓提取出来作为一个特征,利用图象中心到轮廓的距离作为一个距离特征;
再高一层次可以进行结构特征,基于底层的特征,一些边缘、形状进行一个结构分析。最左边的结构特征实际上是一个心理学图,不同的人看到的维度不同,有一些人看到的是白色的一个酒杯,但是换成另外一些人去看,这是两个面对面的人脸,这种通过图象分析可以把结构提出来,然后右边菱形的结构,以及一些知识图库的纹理结构,都是结构特征。
深度学习提取特征
前面是传统的图象处理常用方法,现在大多采用基于深度学习的特征提取方法。深度学习的方法相对来说比较简单,就是把我们输入的图象扔进网络,每个网络对不同的过程进行一个迭代训练。在我们的网络前期,像一些低级的特征比如简单的边缘纹理特征,在中间部分我们就可以学到一个相对高级一点的结构特征,比如说我们做人脸识别的时候,是可以把里面的一些眼睛、嘴巴、耳朵等提取出来,再往高处走可以得到,最后就可以把物体的模型给训练出来,比如说训练出人脸的大致轮廓,这是通过深度学习方法提取的特征。
异常检测分析
特征提取完之后,进行异常检测分析。以上图作为一个例子,众里寻他千百次,那猪躲在人堆里。图中目标是让我们在图里面去找出哪一个是与其他不一样,用前面的分析方法可以找,比如说我们用颜色来找,笑脸黄色的,我们要把所有黄色基于颜色去找,从上到下、从左到右找到颜色不一样的,这个颜色是可以找出来的。人的笑脸、嘴的图象也可以找出。还有一个整个特征,比如说整个定位下来去找。在工业场景中,有很多的场景跟这个是很相似的,为什么呢?因为工业场景中会有一些异常的目标异常分析,异常分析跟上图是挺相似的,旁边我们都认为是一个正常的物体,结果突然之间冒出一只猪,肯定是异常的目标,在工业中也是一样,我们就是要把异常目标给自动定位分类出来。
对于异常目标分析,首先是要进行一个模型训练,模型训练过程是这样的,先是对获取到的图象进行特征提取,比如说像一些颜色纹理、一些结构,甚至是用一些深度学习的方法自动去提取特征,提取特征之后建立模型,得到一个模型表达式,比如说我们模型可以用图中这个分布函数来表示,模型的分布形式跟我们建立的方法有关系,我们可能是用一些信息方法,也有可能是二维的曲面,或者多维的曲面。
以二维的平面为例,假设模型提取的特征为x1,x2 ,我们学到的模型是一个分类面,分类面里面有一个正常的样本,同时假设x1,x2正相关,即x1越大,x2也就越大,通过模型计算可以将红色的异常点自动检测出来。现在对待这种异常,在分类面之外我们可以自动的分出来。
模型训练完之后肯定要进行使用,使用的时候先把训练好的模型部署到产线上,产线上启动后实时对图象进行获取,然后进行特征提取,经过模型输出最终的决策。在一些产线的分析过程中,实时去监测一些关键的曲线,对这些曲线进行可视化的实时输出结果,比如图中这些曲线,我们在做的过程中的一些关键因素通过曲线的方式打印出来。
通过曲线可以去回判维系,比如说我们是哪一个产线,或者是哪一台机器出了问题,然后这个曲线跟历史相对应的会出现一些异常,利用曲线实时去决策,以及可以根据一些历史的信息去判断,这些机器是什么时候开始出现这些故障的。
图像场景分析
图为某产线元器件异常焊接异常自动定位、分析结果,我们在整个过程中,首先从产线中获取到图象,对图象进行图象分割,分割完之后得到元器件的坐标位置,如右边绿色框是我们定位下来的一个元器件,定位元器件之后进一步分析,进一步定位分析焊点,得到焊点的图象,在这个焊点图象输入分类器进行分类,然后识别出来。通过这个决策,最终决策出正常和异常的,图中蓝色框代表正常的焊点,红色框就是异常焊点。
另外,在我们一些实际案例中会碰到一些比较恶劣的环境,比如说一些环境下,在生产产线上有一些是有毒的,还有高温、高压、高辐射的一些场景,这种情况用人眼或者一些可见光的摄像头是很难观察出来的。我们采用红外热感相机进行分析,获取到红外热感应的图象结果图,对这个结果图再进行图象分割,分割完之后就可以得到对应的容器位置,然后我们对容器的位置内部再进行一个异常分析,就可以得到异常区域,然后对异常区域进行分类,因为杂质有多种多样,有液体的、固体的,最终可以得到一个决策结果,可以返推回去是什么原因造成这个结果的。
我们还有产线管道热辐射管道监控,在产线有一些燃油传输管道,还有一些特殊液体的传输管道,我们要实时去监控,液体经过有一个温度,如果温度过高,很容易会造成产线管道的快速老化,一些老化之后会爆开或者裂开渗漏出来,我们采用红外方式获取一个实时图象,然后对图象再进行分割,之后再进行一个标注,像蓝色代表数字方向的一个管道,绿色是横向的一个管道。标注完之后对应标注管道进行曲线的监控,得到右边的工作监控图,通过这个图就可以知道管道的实时温度,以及相关的监控值。这样可以继续帮助厂商从历史体系图中查看相关的情况。
动态视频场景分析
基于图象分析基本上都是可以通过单张图象的方法来进行分析。下面一起来了解下基于视频的场景分析,在我们的视频分析中,有时候要实时统计产线数量,从而实现实时监控生产的情况,某一个小时、某一天或者每年的生产情况,我们在上面架设工业相机,然后实时的对产线进行自动统计。我们将图像中每一个像素点看成是一个随机过程,通过时空分析,从时间上分析当前的销售点在历史以及到现在某一段时间内的分布情况和变化规律,还有一个从空间上每一个像素点在图象的空间位置,这样通过时空的方式建立模型,就可以进行更进一步的前景以及背景的分离。
算法流程相关主要是找一个差异度大的,获取到每一个象素,对每一个象素与我们背景模型进行比较。在一段时间内变化是比较缓慢的,在变化缓慢的范围之内,它肯定是比较平稳的,我们可以认为它是一个背景的区域。对于我们前景的区域,比如说突然闯入的人,或者一只动物,历史的时间以及现在的时间会产生一个比较大的差异值,通过这个差异值就可以得到每一个点对应的模型变化情况,得到每一个点的变化情况之后,把这些前景区域连接起来,就得到一个分割目标。我们还要考虑到时间维度,这个前景从历史到现在,它经过了哪一些路径,它是什么状态,减速、加速等状态,我们通过时间轴上的曲线可以画出来,还可以进行一些ID号关联,像这种在我们日常生活中,比如说一些智能交通、产线的物体追踪等方面大量的用到。
案例分析
某半导体行业的实例如图,产线对我们生产过程中的元器件进行统计,在生产过程中先进行一个背景建模,背景建模之分割出前景区域,分割出来之后,由于这个场景中提倡一些背景的干扰,或者一些我们不需要的,不用的我们通过目标预处理得到一个具体的前景目标,然后对前景目标再进行一次定位,最终可以得到统计识别结果,这样可以得到实时监控生产产量。
本文由云栖志愿小组毛鹤整理,编辑百见