基于深度学习的实验设备识别系统开发设计

2020-06-21 15:10黄济川杨雨秋廖磊
工业技术创新 2020年3期
关键词:服务器端卷积客户端

黄济川 杨雨秋 廖磊

摘   要: 为了让使用者科学规范使用实验设备、教学者提高实验室教学效率,提出了基于深度学习的实验设备识别系统,系统搭载Android平台环境,使用者通过拍照或本地相册选取实验设备图像。Android客户端采集图像并裁剪,使用TCP/IP网络传输协议将图像发送至服务器端;服务器端使用残差网络和改进的YOLO网络模型对图像进行检测,并在数据库中查找图像特征值对应的实验设备;数据库将识别结果和设备使用方法、注意事项等反馈至Android客户端。测试表明,系统对实验设备的识别准确率可达99%以上。实验设备识别系统可为同行提供参考借鉴,提高教学效率和质量。

关键词: 深度学习;实验设备识别系统;Android客户端;服务器端;TCP/IP网络传输协议;残差网络;改进的YOLO网络模型

引言

随着我国教育现代化水平的不断提高,实践与理论相结合成为各大高校的教学理念,实验室建设成为该教学理念的重要支撑。众所周知,在实验室中,实验设备种类繁多、不易辨别、价格昂贵而且大多数操作复杂、不易上手,这对于刚接触到这些设备的学生而言,是一项很大的挑战。教师通常需要花费大量的时间带领学生了解、掌握并操作实验设备,避免学生的误操作对实验设备造成的损坏,这缩短了学生自己动手实践的时间,也加大了教师的教学压力。因此,设计一种自动识别实验设备,并且介绍其操作步骤和实验注意事项的系统,能够有效地解决上述问题。

深度学习是一种来自人工智能研究领域的新技术[1],在图像识别与处理、计算机视觉、视频分析和语音识别等诸多领域都有所应用。深度学习起源于人工神经网络,可以理解为神经网络的横向堆叠,能够产生更深的网络结构。深度学习不需要人为提取目标物特征,而是通过迭代训练得到目标物自浅至深的特征信息[2]。因此若能基于深度学习开发设计实验设备识别系统,则可通过卷积神经网络从多维度识别设备特征,从而实现实验设备的准确识别。

为了开发设计一款基于深度学习的实验设备识别系统,本文提出系统设计和实现方法,重点在于目标分类与目标识别,以及在Android平台环境上的人机交互。系统设计将图像处理技术、网络通信技术、数据库和模式识别技术以及一些基于Android的技术有机融合。学生(使用者)对实验设备进行拍摄,系统即可实现对实验设备图像的检测和识别,并将设备简介、使用方法、注意事项等反馈给学生,方便学生对设备的使用,从而提高实验效率和教学效果。

1  方案设计

1.1  需求分析

因为在实验室中存在多种实验设备,且设备的使用方法和注意事项往往是不同的,因此对于初次接触这些实验设备的学生而言,熟练掌握各种实验设备的使用方法具有一定的难度。因此需要一种简单快捷的实验设备识别系统,学生对实验设备进行拍照后,系统可采集照片并进行处理,以得到该实验设备的反馈信息,从而指导学生自主完成对实验设备的科学规范使用。

1.2  系统总体设计

基于深度学习的实验设备识别系统的总体设计思路是,使用者使用Android客户端[3-4]对实验设备拍照,系统采集设备图像并进行裁剪[5],通过TCP/IP网络传输协议将实验设备图像发送至服务器端,实现客户端和服务器端的数据交互。服务器端收到设备图像后,使用卷积神经网络对其进行识别,提取图像的特征值[6],并在数据库中查找该实验设备的相关信息,最后将查找结果反馈至Android客户端。下面分别介绍系统的体系结构设计和系统功能设计。

1.2.1  体系结构设计

基于深度学习的实验设备识别系统包括两大体系:客户端和服务器端。系统体系结构图如图1所示。

1.2.2  系统功能设计

该系统的主要功能为实验设备的识别和反馈,是通过图1中图像采集与裁剪模块、图像传输模块、图像识别模块和数据库实现的,下文对各自的功能进行具体描述。

(1)图像采集与裁剪模块:从客户端得到相机权限,对使用摄像头拍摄的或是本地相册中的实验设备图像进行裁剪,去除图像的多余部分,使图像只包含该实验设备。

(2)图像传输模块:利用网络传输协议将图像从客户端向服务器端发送,服务器端识别从客户端传送来的图像,并使用该模块将识别得到的结果传输回客户端,反馈给设备使用者。

(3)图像识别模块:该模块为系统核心模块,所有的图像识别工作都由该模块完成。在系统功能设计中,基于Matlab平台[7],使用残差模型对实验设备图像进行分类,然后使用改进的YOLO网络模型对图像进行检测。

(4)数据库:利用图像识别模块提取出的特征值,在实验设备数据库中查找该特征值对应的实验设备,并将介绍该设备相关知识的文档反馈至客户端。

1.3  Android客户端设计

本系统的Android客户端采用的环境为Android Studio[8-9],在Windows 10操作系统下运行。Android Studio将APP应用程序打包为“.apk”文件,并在使用Android操作系统的手机上进行安装。

安装完成后,使用者点击手机中的“实验设备识别系统”图标,进入识别系统的登录界面,如图2a所示,在该页面中,用户需要输入用户名和密码才能够登录系统。登录系统后,显示设备识别界面,如图2b所示。该界面有“相册”按钮和“拍照”按钮,点击它们即可开始识别。

客户端还有“识别记录”、“识别统计”和“我的”界面,便于使用者查找历史记录和统计使用情况。

1.4  服務器端设计

服务器端设计的主要工作为创建GUI界面。该界面的主要目的是使开发人员更加方便地对系统进行调试与修改。如图3所示,GUI界面的组件有“开启通信”按钮、“关闭通信”按钮、“清空”按钮和文本显示框等。点击“开启通信”按钮能够打开Socket通信,使客户端与服务器端进行数据交互;点击“关闭通信按钮”能够终止服务,中断客户端与服务器端的连接;点击“清空”按钮能够清空历史查询记录中的无用文本。

1.5  识别算法模块设计

识别算法模块使用残差网络模型对实验设备图像进行分类,使用改进的YOLO网络模型进行检测。

1.5.1  残差网络模型

残差网络是一种新型的深度卷积神经网络,其核心目的为解决神经网络太深造成的退化问题[10]。虽然增加网络复杂性可以改善网络性能,但是神经网络过深会造成梯度消失。虽然可以利用正则化来解决这一问题,但又会出现一个新的问题,即网络退化,因此即使增加网络层数,训练准确度依然会降低。残差网络就能很好地解决这一问题。残差块如图4所示。

1.5.2  改进的YOLO网络模型

YOLO是一种采用单一卷积神经网络进行目标检测的方法,能够实现End-to-End检测,但其准确率低,易产生目标错误定位的问题[11]。本文对YOLO算法进行逐级优化,将算法结构设计成三个串联的卷积神经网络,每一个网络输出的bounding box都会发送到下一个卷积神经网络,并逐个优化,使识别的精度进一步提高,精确图像定位。

通过神经网络识别实验设备图像。首先将待识别图像送到神经网络中,利用多层卷积结构提取图像特征,来确定目标图像的位置,然后将卷积神经网络输出的bounding box发送给下一个神经网络,通过预测的类别概率来优化网络。这个神经网络和第一个神经网络一样,也会输出bounding box,进行类别概率的预测。重复以上操作,再将bounding box送入第三个神经网络中进行优化,最后输出精确的识别结果。

优化后的YOLO网络模型结构为三个相似卷积网络的串聯,结构如表1所示。

将传统的YOLO网络模型中单一的卷积网络分成三个深度为11层的串联卷积网络模型,导致这三个卷积网络层数降低,目标图像大小也因此减小(从448减小到224)。通过将全连接层替换为全局平均池化层,可以实现模型运行速度的提高。每个卷积网络都将目标图像分为7×7的小网格,通过卷积网络逐级对网格的bounding box进行优化,使图像大小从224×224减小到200×200,实现参数个数的降低。

2  系统实现

2.1  Android客户端模块实现

实验设备识别系统Android客户端需要实现图像获取、裁剪以及图像传输的功能。

2.1.1  图像获取

系统有两种图像获取方式,一种为调用客户端摄像头,在Android开发中,通过openCamera()函数打开相机权限,建立一个CameraManager;然后通过getParameters()函数获取摄像头参数,通过Camera.Parameters对象设定拍照参数;调用相机的setPreviewDisplay()函数选取某个SurfaceView,以此显示待拍照的目标图像;最后通过takePreview()函数打开相机并进行目标的拍照,使用onActivityResult()方法保存图像[12]。另一种为调用客户端相册,首先设置AndroidManifest.xml文件的读写权限;然后利用pickImageFromAlbum()函数载入相册,并利用onActivityResult()的getContentReslover()函数得到待显示目标图像的具体位置;最后采用ImageView的setImageURI()函数“读”目标图像。

2.1.2  图像裁剪

将图像发送至服务器端之前,需要对图像进行裁剪操作。Android系统提供了一个action,通过该action能够实现图像的裁剪操作,可以采用intent.putExtra()函数实现裁剪框和图像尺寸的设置,然后调用onActivityResult()函数返回裁剪结果。

2.1.3  图像传输

图像被裁剪之后需要对其进行传输,图像传输是图像界面开发中一种基于控件的事件处理。在Android操作系统中,包括基于回调和监听两种事件处理方法,本实验设备识别系统选择基于监听的事件处理对客户端生成的图像进行传输,其基本思想为,当客户端按动触发响应按钮时,相应的监听器会调用事件的处理程序,以处理该事件。基于监听的事件处理流程图如图5所示。

2.2  服务器端模块实现

系统服务器端需要完成网络通信和图像识别。

2.2.1  网络通信

网络通信协议[13]用来实现服务器端间的数据传输,在实验设备识别系统中,客户端与服务器端之间的数据利用网络通信协议来完成。Android系统最常使用的通信方式就是Socket通信。Socket通信亦称套接字,是一种能够直接传输数据的通道,当客户端与服务器端连接时,服务器端即可主动发送信息,不需要等待客户端发送请求。Socket包括TCP和UDP应用服务,该系统的数据传输功能选择TCP应用服务实现。Socket通信需要知道客户端和服务器端的IP地址和通信端口号,然后创建客户端套接字,通过输入和输出流对象分别与服务器端接收和发送数据,同时创建服务器端来接收客户端套接字,等待接收连接请求。常见的服务器端Socket为ServerSocket类,使用ServerSocket类的accept方法连接Socket,通过输入和输出流对象分别与客户端接收和发送数据。

2.2.2  图像识别

实验设备图像从客户端成功传送至服务器端之后,需要对图像进行识别。服务器端首先需要删除上一次的图像识别结果,创建新文件。Java中有一套完整的文件读写函数,利用Java包含的IO工具类创建或者删除文件,具体方法为建立File(Stringpath)对象,并通过exit方法判断预先设定的路径是否包含文件,若是,则采取delete方法将文件删除,再采取createNewFile()方法新建文件;否则,直接新建文件。

使用Matlab平台对实验设备识别算法进行研究,服务器端在识别图像时,调用Matlab平台识别接收到的图像,使用rbf建立残差网络模型,实现对实验仪器图像的分类,最后调用程序中的实验设备识别算法。该算法指令为:

Process pro=Runtime.getRuntime().exec("matlab -nodesktop -nosplash -timing -r YOLO('D:\\ceshi1.jpg')");其中,YOLO为识别算法,“ceshi1.jpg”为待识别的图像。

对实验设备图像进行识别之后,服务器端将识别的结果存放到创建的新文件中,读取识别结果,最后将其发送至客户端。

3  系统测试

针对设计的实验设备识别系统进行了测试,测试结果如图6和图7所示。经多次测试后,本文开发设计的基于深度学习的实验设备识别系统的识别准确率可达99%以上,证明该系统具有良好的可靠性和实用性。

4  结语

本文开发设计了一种基于深度学习的,通过采集到的拍摄图像自动识别实验设备并且介绍其使用方法和注意事项的实验设备识别系统,该系统能够有效地解决实验设备种类繁多、不易辨别和操作复杂等问题,能为学生提供一种方便快捷、科学规范使用实验设备的方法。系统的设计重点在于根据图像对实验设备进行分类和识别,并考虑如何将该系统搭载在Android平台环境上。该系统能够有效减少人工误辨,将图像检测和识别问题交给机器完成,使初学者能够方便快捷地了解实验设备使用方法,提高教学效率。

参考文献

[1] 孙志军, 薛磊, 许阳明, 等. 深度学习研究综述[J]. 计算机应用研究, 2012, 29(8): 2806-2810.

[2] 卢宏涛, 张秦川. 深度卷积神经网络在计算机视觉中的应用研究综述[J]. 数据采集与处理, 2016, 31(1): 1-17.

[3] 罗其朝, 基于Android的图像识别客户端系统研究[D]. 海口: 海南大学, 2014.

[4] 史继先, 蒲东兵, 张雪喆. 基于Android和内容的图像检索系统设计[J]. 信息技术, 2014, 38(7): 200-203.

[5] 周莉莉, 姜枫. 图像分割方法综述研究[J]. 计算机应用研究, 2017, 34(7): 1921-1928.

[6] 王静. 中国画特征提取及分类识别算法研究[D]. 西安: 西安建筑科技大学, 2018.

[7] 周品. MATLAB神经网络设计与应用[M]. 北京: 清华大学出版社, 2013.

[8] 刘国柱, 杜军威, QST青软实训. Android 程序设计与开发: Android Studio版[M]. 北京: 清华大学出版社, 2017.

[9] 欧阳燊. Android Studio开发实战: 从零基础到App上线[M]. 北京: 清华大学出版社, 2017.

[10] He K, Zhang X, Ren S. Deep Residual Learning for Image Recognition[C]// IEEE Conference on Computer Vision & Pattern Recognition. IEEE Computer Society, 2016.

[11] Redmon J, Divvala S, Girshick R, et al. You Only Look Once: Unified, Real-Time Object Detection[J]. arXiv:1506.02640, 2015.

[12] 吳秋远. 基于Android的无线视频监控系统设计与实现[D]. 桂林: 广西师范大学, 2016.

[13] 张子瑜. 一种基于Android网络通信开发[J]. 电脑编程技巧与维护, 2017(23): 6-9.

猜你喜欢
服务器端卷积客户端
基于图像处理与卷积神经网络的零件识别
基于全卷积神经网络的变压器故障诊断
基于深度卷积网络与空洞卷积融合的人群计数
虚拟专用网络访问保护机制研究
卷积神经网络概述
新闻客户端差异化发展策略
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
一种基于Java的IM即时通讯软件的设计与实现
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用