0 引言

伴随着现在日益高性能的计算机硬件和完善的理论技术,机器视觉技术已开始得到广泛的应用。结合机器视觉技术的智能机器人在现今人工智能趋势下扮演一个重要角色,在智能制造推进、智慧城市建设、家居生活质量提高等方面,都有广阔的施展空间[1]。

1 整体设计思路及方案

本设计将能胜任机器视觉处理能力的计算机与单片机作主控的机器人相结合,通过无线通信方式构建一个相比其他低成本机器人具备更高自主性和智能性的机器人模型,目的在于:(1)对比评估主流手写数字识别模型的实际识别表现;(2)探究低成本机器人实现更高智能性的方法[2]。

本设计结合现今热门的机器视觉技术以及Arduino单片机实现了一个能够通过上位机识别手写数字并发送至下位机进行执行的机器人模型,当上位机得到待识别的图片后,将进行图片的处理转化为数据并输入已经在前期构建好的识别模型,计算后输出识别的内容并通过无线通信发送到下位机,下位机根据接收到的识别信号执行相应动作。

本设计总体可分为上位机识别与下位机执行部分。上位机识别部分包含前期输入信号的处理、手写字符的识别模型构建、与下位机通信构建等部分;下位机执行部分采用Arduino单片机结合各类电子元器件和电路模块实现了所期望的执行内容,包括电源供电设计、表盘指示器电路设计、人机交互显示设计以及无线通信设计[3]。

1.1 下位机硬件设计方案

该下位机硬件使用Arduino单片机作为主控,并结合步进电机以及步进电机驱动模块构成了指针数字指示盘,OLED与单片机相连构成人机交互显示界面,NRF2401L无线串口模块与上位机进行通信,使用LM2596稳压模块输出9 V电源为Arduino单片机供电,并且由单片机供电给各个执行模块。采用1.3寸OLED显示屏作为显示器,输出经过上位机识别后发送至下位机的信号,采用SSD1306作为驱动的OLED显示屏显示出数字[4]。

采用步进电机作为仪表盘指示器执行部件,其需要相应电机驱动模块进行驱动。设计仪表指示器需要对步进电机进行正转、反转控制,从而造成指针的顺时针旋转和逆时针旋转,以便能够使其根据输入的识别信号转动相应角度(有对应的正向角度和负角度)。电机接收到单片机输出的特定脉冲时,步进角(步进电机每前进一个步序所转过的角度)便会进行相应的转动,当电机接收一个脉冲信号就会转过一个步进角,二者呈相互的线性关系。通过此线性关系,再根据原有角度与现在应该转动角度做差值计算,求出相差角度,控制电机转动相应角度,便可以实现电机的仪表指示功能。

1.2 数据收集以及上位机识别模型

上位机部分主要负责手写图片的识别,其流程包括手写数字图像预处理、识别模型训练、识别模型验证和测试等。选择MNIST手写库作为模型的数据,并给出了将MNIST数据库进行图像处理的方法,通过比对SVM、BP神经网络、KNN三种识别模型的发展历程、数学原理以及算法步骤等,最终选用BP神经网络识别模型。

1.3 BP神经网络的手写数字识别模型及验证

BP神经网络是神经网络的一种,目前大多数神经网络模型都是由BP神经网络扩展而来。对于本设计所需手写数字识别这一应用来说,神经网络主要用于关于数字0到数字9的分类问题。BP神经网络算法又称为反向传播算法,其连接神经元的权值训练从最末层(即网络的输出层)开始,从输出到输入依次更新每一层的权值,所以被称为反向传播。

BP神经网络的学习算法采用方法为δ学习规则(步长最优化),目标函数为:

式中:Yk表示真实的值,即期望值,是真实图片中所代表数字,k为样本编号;Tk为预测值,即经过模型所计算出来的值;E为真实值与预测值得平方误差求和。整个式子的目标便是使平方误差和最小。

其算法过程的流程描述如图1所示。

BP神经网络由于只应用了均分误差函数对权值和阈值的一阶导数(即梯度)的信息,在实际程序中该算法存在收敛速度慢从而计算时间长、容易陷入局部最小(忽略了全局最优解导致不能正确求解)等问题。在实际的应用中,应注意这些问题的解决,可以与LM神经网络、RBF神经网络等结合使用来解决[5]。

2 使用CV2库进行图像预处理

在设计中使用OpenCV库的扩展库CV2库对图片进行了图像预处理,过程主要包括手写数字图像的归一化以及二值化数据形式,并保存为逗号分隔符的csv文件。

图像处理时间如表1所示,T1时间为转化训练集图片所用时间,用时352 s;T2时间为转化测试集图片所用时间,用时55 s。

2.1 PCA降维操作

本设计使用Python的sklearn库中的PCA方法,输入原始数据集,即可完成PCA降维操作,其降维结果如表2所示。

在经过PCA(主成分分析法)降维操作去除影响较小的变量影响后,得到了59 989行、67列的X_pca数据集,手写数字图片数量不变,但维数从784列缩小为67列,从而有效地减轻了支持向量机、神经网络以及KNN模型的计算过程。在后续的模型训练以及模型识别准确度评估中,也同样使用了PCA操作对数据简化计算量[6]。

2.2 模型比较以及上位机识别模型的选取

本测试模型中,经过转化的训练集数据大小1.09 GB(59 989张图片转化完成的数据),测试集数据大小为186 MB(9989张图片转化完成的数据),经过PCA降维操作后,测试集数据大小为97.7 MB(由原来的864列数据降维为67列数据),训练集数据大小为16.2 MB。模型数据采用PCA降维操作后的数据[7]。

从表3中可知,3种模型中,SVM(支持向量机)模型识别的准确度最高,但训练时间比其他两个模型稍长。BP神经网络模型最小,训练时间比SVM(支持向量机)稍短,测试时间用时也最短,明显短于其他两个模型,说明识别速度是最快的。KNN(K近邻)模型训练时间虽然最短,但从测试时间来看用时最长,测试近10 000个数据的时间比其他两个模型训练近60 000个数据的时间还长了两倍多,模型识别速度最慢。准确率上来看,小数据量时准确率只有百分之五六十,只有大数据体量下准确率才有明显提升,与SVM(支持向量机)和BP神经网络相比,在手写数字识别方面逊色很多。

对上面3个模型根据识别时间、准确率进行比较评估后,决定以准确率优先,次而考虑识别时间,最终决定使用SVM(支持向量机)作为本设计的手写识别模型[8]。

3 手写笔迹图像识别机器人整体设计

在整体设计中,首先选择NRF2401L无线通信模块完成了通信硬件的搭建,并根据其配置表进行命令配置完成了硬件的初始化。上位机方面,使用Python结合win32u库和serial库完成上位机读取识别程序的设计。下位机方面,使用串口结合下位机处理硬件完成数字接收处理的设计。整个系统构成一套上位机对手写图像进行识别,通过无线发送至下位机处理的手写笔迹图像识别机器人。

4 结论

通过本设计与研究,取得的主要结果如下:

(1)选择了MNIST手写数字图片库作为手写识别模型的原始数据,设计实际情况完成了MNIST库图像的处理和转化,从而得到了原始的训练数据集和测试数据集。

(2)分别对SVM(支持向量机),BP神经网络,KNN(K近邻)3种分类模型进行了对比,并使用Python分别对3种模型进行了构建和测试。通过3个模型的训练时间、测试时间以及准确度等指标,比较了3个模型的优劣性,最终以准确率优先原则选取准确度最高的SVM(支持向量机)作为手写数字识别模型并进行应用。

(3)使用NRF2401L无线通信模块和串口功能构建了上位机和下位机之间无线通信,完成了二者的对接,将单片机在电子硬件方面的处理和计算机对手写图片的识别进行了结合[9]。

(4)实现了Python设计上位机应用程序,功能包括图像读取、图像预处理以及转化、图像识别、串口发送、异常处理等。完成了整个上位机的功能,构成了一套上位机手写图像识别,完成了整个设计。

python笔迹识别_关于机器视觉笔迹识别和Arduino控制机器人的设计相关推荐

  1. arduino 机器视觉编程_关于机器视觉笔迹识别和Arduino控制机器人的设计

    0 引言伴随着现在日益高性能的计算机硬件和完善的理论技术,机器视觉技 术已开始得到广泛的应用. 结合机器视觉技术的智能机器人在现今人工智能趋势下扮演一 个重要角色,在智能制造推进.智慧城市建设.家居生 ...

  2. 人脸识别与膜虹识别_指纹、人脸识别、虹膜识别,告诉你谁才是黑科技

    [华强智慧网讯] 随着物联网应用逐渐丰富,生物识别技术迎来了大显身手的机会--这很容易理解,在万物互联的时代,数据安全重要性不言而喻,市场需要一种更加靠谱的与机器进行交互的方式,生物识别技术能担当这一 ...

  3. ocr语种识别_利用OCR图文识别,快速帮你提取文字信息

    我们在浏览网页.读书的时候,经常找到我们感兴趣的资料,有时候一些纸质文字或图片是无法复制保存的,那么为了方便这类信息的提取.编辑保存,中安未来特研发了OCR图文识别技术: 中安未来OCR图文识别技术是 ...

  4. 什么叫侧面指纹识别_哪种指纹识别方式好?侧边指纹识别可能会成为主流

    我以前没有用过背面的指纹.从手机到现在,前置解屏都是一个被认为是理所当然的,甚至升级也应该是屏幕下的指纹.然而,有了小米8,突然觉得指纹解锁实际上不是一个非常重要的问题.首先,如果是前置指纹解屏的话, ...

  5. ocr 超时小票识别_票总管-发票识别核验利器

    发票在我们生活中扮演者十分重要的角色,发票是我们进行消费的凭证,也是我们进行报销的有力工具.然而随着生活水平的不断提升,发票种类的增多,给公司财务报销带来严重的负担.如何对公司发票有效分类则是另财务头 ...

  6. python手写字母识别_机器学习--kNN算法识别手写字母

    本文主要是用kNN算法对字母图片进行特征提取,分类识别.内容如下: kNN算法及相关Python模块介绍 对字母图片进行特征提取 kNN算法实现 kNN算法分析 一.kNN算法介绍 K近邻(kNN,k ...

  7. python新闻联播分类_如何利用人脸识别自动切分视频

    前些天被问到这样一个问题,能不能做视频分镜头,更确切的是自动切分视频片段.拿央视的新闻联播来说,30分钟的新闻联播,可能包含十多个新闻话题,希望能够自动把这10多个话题进行切分. 这个问题蛮有意思的, ...

  8. python视觉识别线条_简单车道线识别

    本文将介绍如何利用Opencv,对简单场景下的车道线进行离线识别.梳理整个识别过程的逻辑,并对过程中使用的相关知识点进行介绍.正文中使用C++实现,在文末也会附上利用python实现的代码,读者完全可 ...

  9. python 菜品识别_一种菜品识别方法与流程

    本发明属于计算机图像识别技术,具体来说涉及一种基于卷积神经网络的用于识别菜品图像的技术方案. 背景技术: 由于图像的形成受到很多因素的影响,比如说拍摄角度.环境光线,原始图像的矩阵数据并不能被计算机分 ...

最新文章

  1. 概率密度函数pdf(probability densinity function) DOC API
  2. 京东华为 Java开发历年经典题汇总
  3. windows7系统屏幕一直闪屏的解决教程
  4. 还在4S店买车?《Boss1+1》张朝阳对话贾鸣镝“种草”购车新方式
  5. 美国街头出现怪异无人车:3个激光雷达垂直叠放
  6. easypoi list中的map导出_EasyPOI简单用例,简单有效
  7. [Bzoj1010][HNOI2008]玩具装箱toy(斜率优化)
  8. python常用字符串_Python中最常用的字符串方法!
  9. python实现九九乘法表代码解释_python编写九九乘法表代码
  10. AirDisk存宝有没有迅雷下载功能?
  11. H3CNE、H3CSE认证考试亲身奋斗过程的心得(拿出来晒晒)
  12. 联想拯救者Y7000p+Nvidia rtx2060 显卡驱动安装
  13. 硬件之家|钽电容的详细介绍与电路应用
  14. sumif单列求和_条件求和函数Sumif、Sumifs的超级实用技巧,你真的都掌握吗?
  15. Mac重装系统失败-没有符合安装资格的软件包
  16. 论文阅读:Hierarchical Attention Transfer Network for Cross-Domain Sentiment Classification
  17. Android 计步器实现
  18. echart Y轴设置
  19. h5忍者小游戏源码下载
  20. go mod 使用 + GO111MODULE

热门文章

  1. C语言中switch的用法
  2. 微型计算机202012月pdf,微型计算机原理及其应用-电子技术应用.PDF
  3. 【Xbox360】 Party Buffalo Xbox360 硬盘读写程序 使用教程
  4. 当你还在犹豫不决的时候,其他小伙伴已经捷足先登了!
  5. 【第三次全国土壤普查解读】
  6. iPhone 4S用移动卡?手机网络常识普及
  7. 易语言- 定义一个系统范围的热键 RegisterHotKey UnregisterHotKey
  8. 应用协议 tcp udp
  9. 关于TQ2440通过Jlink下载Uboot到开发板的方法(不能识别自己板子的norflash型号,且不能安装USB)
  10. 用包过滤技术实现个人防火墙