今日光电
有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。欢迎来到今日光电!
----与智者为伍 为创新赋能----
机器视觉模式研究是机器人研发重要的组成部分,主要用于机器人物体识别、目标定位、行走避障等。使机器能够像人眼一样感知事物,是机器视觉研究追求的目标。通过深度学习方法可以使机器人很好地感知物体,通过自主学习实现机器人对物体的识别。本文采
用 OpenCV 框架实现摄像头捕捉、视频流捕捉、视频流帧的截取,实现帧的存储,
用 C 语言编程实现客户端图像采集;采用 Socket 传输协议,实现图像传输,图像从客户端传到服务器端进行图像识别;通过卷积神经网络实现图像识别模型建模,采用 Caffe 框架,通过 Python 语言,编写图像识别程序,将识别的结果从服务器传送到客户端(机器人)。深度学习不同于传统的机器视觉图像识别方法,通过人工智能深度学习方法可以提高图像识别的效率和精度,提升机器自主学习认知能力,扩大认知边界。
1. 机器视觉图像处理
机器视觉模式识别技术涉及机器学习、深度学习、人工神经网络、机器视觉方法等多领域、多学科的交叉综合技术。
机器视觉首先需要进行图像预处理,对于采集到的图像,受到各种因素的影响,往往会出现噪声、几何形变、色彩失调等,对于图像识别增加很大难度,所以一般需要对采集到的图像进行一些预处理,如去除噪声、几何校正、图像尺寸统一、增加清晰度等。
采用机器学习处理图像可以节省大量的人工图像处理和繁琐的算法,通过深度学习卷积神经网络网络结构、池化层、隐层的算法可以很好地解决噪声、图像偏离度等问题,通过反复迭代机器学习进行不断的修正,可以提取最有效的图像特征。
为了将识别对象与背景剥离,可以通过图像分割技术将目标对象按照要求分离,聚焦识别对象,将每个对象抠图分离,进行标签标注,对每个对象进行精准识别。
2. 机器视觉总体架构
机器视觉采用 C/S(Client-Server)结构,如图 1 所示。因为图像识别涉及大量计算,机器人空间有限,难以放置大型计算机设备,所以采用 C/S 结构可以有效地解决这个问题,通过后台进行高性能计算或者采用云计算,提高计算性能和计算速度。系统架构组成部分包括:图像感知端、视频图像采集端、图像传输子系统、服务器端、图像识别子系统以及模型训练生成平台。
3. 机器视觉图像采集方法
机器视觉图像采集采用 OpenCV 框架,首先实现机器人机器视觉摄像头捕捉,捕捉到机器人自身的摄像头后,获取摄像头的图像,从摄像头获取的视频图像,服务器端识别到的是一幅图像,所以要将视频图像分解成帧,按帧存储。一段视频图像一秒产生几十帧图像,如果不对机器人摄取的视频图像加以限制,硬盘很快就存满了。所以需要通过程序实现只存储当前最后一帧图像,同时需要保证从客户端传给服务器的图像是当前最新的实时图像。采用 OpenCV 框架,用C 语言编程实现客户端摄像头捕捉、视频流捕捉、视频流帧的截取和帧的存储。
4. 机器人机器视觉图像传输方法
客户端采集图像完成后需要第一时间将当前的图像发给服务器,服务器对接收到的图像进行动态实时识别。为了保证传输的图像完整性,我们需要对图像文件格式进行分析,研究图像文件编码规则、像素存储方式等,重点是找到文件头和文件尾标识,这样才能决定什么时候开始传输图像文件,什么时候图像文件传输结束,通知服务器开始图像识别。采用 Socket 传输协议,实现客户端与服务器通讯。
5. 机器视觉图像识别方法
5.1 机器视觉图像识别模型构建
采用深度学习,通过 CNN(卷积神经网络)构建图像识别模型,采用 Caffe 框架进行模型架构设计和模型训练。设计卷积神经网络结构:5 层卷积层、2 层池化层、1 层全连接层。将学习率设置为 1,basic decay 设置为 1,stride 设置为 4,weight filler 类型设置为 Gaussian。采用最优的算法避免过拟合,提高识别精度。
5.2 图像识别模型训练
机器视觉图像识别首先要建立图像识别模型,我们采用深度学习卷积神经网络进行模型训练。模型训练之前首先需要采集训练图像数据,将训练图像数据分为训练集、测试集、验证集,编写训练数据采集程序,将采集的数据存储到相应的训练集、测试集、验证集中,编写打标签程序,为训练集的图像、测试集的图像、验证集的图像打上相应的标签,用于区分训练图像、测试图像、验证图像,然后将训练数据的类型转化为 Caffe 框架所能识别的数据类型。模型训练的过程就是将训练图像与测试图像进行比对,通过深度学习不断地迭代,通过调参,找到最优化的模型训练参数,直到图像识别模型达到满意的精度。 使用验证集的图像对模型识别效果进行验证,如果模型的识别率接近 100%,达到我们所能接受的精度,模型训练就可以结束了,训练的模型可以用于机器视觉图像识别。 5.3 模式识别
在服务器端完成模式识别,使用从客户端传送过来的实时图像,从服务器中取出最近的一幅图像进行图像识别。首先调用 Caffe 框架,然后读取服务器上存储的被识别的图像。用 Python 语言编写图像识别程序调用图像,调用训练好的模型,用于识别图像,调用模型程序如下:os.path.isfile('/deepgit/caffe/examples/myfile1/mycaffe/
caffemodel')
配置模型参数,例如卷积神经网络的权重、学习率、学习步长、测试集大小、迭代次数等。经过多层的卷积层、池化层进行图像处理和特征提取,最后通过全连接层图像整合,经过分类算法计算出相似度概率,取概率值最高的图像类别作为识别结果,将识别结果码发送到客户端。如图 2 ~图 4 所示,卷积层主要用来提取图像特征,池化层起到了降维、减少计算复杂度、加强平移不变性和旋转不变性的作用,归一化层可以防止梯度消失和梯度爆炸。
6 讨论
在图像采集过程中,摄像头的像素对图像识别精度影响很大,摄像头像素太低,将增加图像识别难度。图像传输过程中客户端和服务器的握手很重要,图像传输需要找到图像文件头和图像文件尾,图像传输结束时需要通知客户端。模型调优以下内容很重要,学习率如果太小容易产生局部最优,如果学习率太大,识别精度会降低,学习步长太短,迭代时间太长,学习步长太长,可能会跨过最优点,调整步长是参数调优非常重要的步骤;正确选择激活函数可以提高模型训练速度,有助于稀疏数据的精度提升;增加 Dropout 可以减少过拟合。
7 结论
机器视觉模式的架构非常重要,选择模式识别的方法也很重要,本文采用了客户机采集图像数据,服务器进行图像识别的架构,可以加强运算速度和能力,加强图像处理速度。模式识别采用深度机器学习,卷积神经网络作为机器视觉的图像识别方法,可以有效地解决机器视觉模型构件困难,机器视觉识别精度问题,通过机器自主学习,通过反复迭代和调参,构建一个满足精度要求的图像识别模型。
论文来源
:机器视觉模式识别方法研究
陆红