模板匹配算法:基于模板相关性匹配的手写数字识别

news2024/11/18 0:26:55

 1 前言

        得益于硬件技术的发展,基于深度学习的各种识别方法如火如荼,在各种应用场景中都取得很好的效果。本人入行深度学习领域若干年,做过很多项目的工程化评估,对于神经网络是如何工作的也解释不清楚,只是知道这样做是可行的。有的时候,给客户介绍说,做某目标识别算法,如果采用深度学习的方法可以做到多高多高的性能,客户有时候会反问道:那么相比于传统方法,深度学习有多少性能提高?我通常无法直接回答这个问题,虽然我知道深度学习的方法肯定会比传统方法更好,但是我没有做相应的实验,没有对比,没有证据。我只好说,神经网络是黑盒模型,虽然不知道底层逻辑是如何运作的,但是有理论证明神经网络可以拟合任意函数,所以神经网络要比传统方法更强大。客户似懂未懂地点点头,不再说话,我知道他对这个回答并不满意。对于他这种级别的人物,掌握着项目的命运,对具体的技术细节不关心,只关心最终的效果。后来给另一个客户做算法性能评估,我使用神经网络算法进行性能评估,最后性能并不理想,精度只有80%左右,我跟客户说,神经网络模型在这种类型的信号识别精度不是很高,客户说,没关系,只要证明神经网络算法比传统方法好就行了,然后让我做证明去了。经过一些列事情之后,我在终于开始重视起来传统的方法来。

2 理论基础

        在没有神经网络之前,人们是如何实现图片的分类和识别的呢?比如说,一个陌生人,你从来没见过他,但是给你一张他的照片,你能否从茫茫人海中认出他来?我想,只要你不是脸盲的话,你是有很大概率能认出来的。当然,能不能认出来,辨认的难度如何,还跟照片和本人的匹配程度有关。如果给我一张照片,让我从一群人中去找出照片中的人,我会拿出照片一个一个地去比对,然后给匹配程度打分,最后选出得分最高的人,那个人就是照片中的人。这种方法就是模板匹配,匹配程度就是相关性。用作模板的就是那张照片,被用来比对的人就是样本,那么相关性是什么,我们通常用相关系数来评估相关性。下面以手写数字识别为例,介绍模板相关匹配算法。

        手写数字识别是各种人工智能算法教程的入门级别例子。手写数字有一个数据集,叫MNIST数据集,该数据集有60000张训练样本,有10000张测试样本,包含0-9一共10个手写体数字图片,图片的大小为28*28像素,如下图所示。

        这里使用的模板匹配算法,是基于图片的相关性。在概率论中,相关系数是通过无量纲化协方差描述的:

\rho _{XY}=\frac{cov(X,Y)}{\sigma _{X}\sigma _{Y}}

设(X,Y)是二维随机变量,两个分量的方差都存在,则称\rho _{XY}为X与Y的相关系数,其中\sigma _{X}=\sqrt{D(X)}

\sigma _{Y}=\sqrt{D(Y)}

cov(X,Y)=E\left \{ \left [ X-E(X) \right ] \left [ Y-E(Y) \right ]\right \}

D(X),D(Y)为方差,E(X),E(Y)为期望,cov(X,Y)就是协方差。相关系数是一个取值范围在-1到1之间的数,如果两个随机变量正相关,那么相关系数为1,如果两个随机变量负相关,那么相关系数为-1,如果两个随机变量不相关,则相关系数为0。

3 算法实现

        手写数字识别问题,其实就是通过计算模板图片与待识别样本图片的相关系数问题。对于二维的图片,可以看作是二维的矩阵,其相关系数的计算公式如下:

上式子中,w(x,y)为模板图片,f(j,j)为待识别图片,\bar{w},\bar{f}分别是模板图片和待识别图片的均值。计算图片的相关系数的算法并不复杂,那么该如何进行手写数字的识别呢?

        首先,选出一部分手写数字图片作为模板图片,然后用待识别图片跟模板图片逐个进行比对,计算相关系数,然后选出相关系数最大的模板,这个模板所代表的分类,就是待识别图片的分类,算法的流程如下图所示。

        上图所示作为例子,每个数字选出一个标准模板,待识别的手写数字为2,通过计算待识别图片与标准模板的相关系数,得到最大的相关系数为0.54,这是待识别数字和模板数字2的相关系数,所以最终的识别结果是2。有时候,还需要评估一下识别的置信度,这就需要通过softmax函数进行归一化,得到分类的置信度,上图的例子的置信度是0.12,并不算高,不过它最大,因此仍然可以作为分类的依据。

        在每一种数字选用一张模板图片的情况下,实验的结果是,识别的精度只有0.45,这只比胡乱蒙的结果好一点。有时候,相关系数不一定正确地表示图片的相似程度,对于人眼来说很显然的事情,机器的眼中却未必如此。如下图所示,数字0的待识别图片,与各数字模板图片之间的相关系数。我们可以发现,待识别的数字0与模板的数字0的相关系数不是最高的,反倒是与模板的数字6相关系数最高,因此该待识别的数字0被错误地识别为数字6。

        回到上面按图找人的问题,如果只有一张图,我们有较大几率出现识别错误的情况,但是如果多提供几张不同角度拍摄的照片,是否会对我们正确找到人有帮助呢?答案是肯定的。为了避免单个模板提供的信息不足以完成高精度的识别任务,增加一些辅助的模板数据是必要的。我们可以将每种数字的标准模板数量扩展一些,比如10张、100张、200张。比如,每种数字采用10张模板,那么总的模板数量就有100张。先用待识别数字与数字0的10张模板进行相关系数计算,选出相关系数最大的作为代表数字0的相关系数,然后用待识别数字与数字1的10张模板进行相关系数计算,选出相关系数最大的作为代表数字1的相关系数,依次类推分别计算出0-9个数字的相关系数,然后在根据这10个相关系数进行排序和置信度计算,选出置信度最大的模板,就是待识别数字的最终分类。

        经过实验,当每种数字的模板数量逐步增加,识别的精度也逐步增加。具体的实验结果如下表所示,当模板的数量达到500时,手写数字的识别精度达到了0.94,这个精度比起神经网络算法来说,还是要低一些。但是相对于神经网络,模板匹配不需要大量的样本进行训练。在样本数量较少的情况下,模板匹配算法的性能可能会比神经网络算法好。模板匹配算法,算是一种少样本学习的解决办法。这里模板匹配算法的实现代码和测试数据集,代码是使用python语言实现的,有需要学习的可以下载进行参考。

4 结论

        利用图片相关性进行模板匹配,从而实现图片的分类,在某些情况下是可行的。经过实验,得出一些结论如下:

        1. 相关系数受到图片内容的尺度、位置和姿态的影响较大。比如,手写数字的大小、位置和旋转角度,如果模板和待识别样本之间有一定的偏差,那么计算出来的相关系数就会比较小;

        2. 增加标准模板的数量,对于提高识别精度是很有用处的,但是过多的模板会明显增加计算量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1858813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何借用物联网快速实现高标准农田信息化

如何借用物联网快速实现高标准农田信息化 高标准农田信息化,作为现代农业发展的重要基石,是指在建设高产、稳产、节水、环保的农田基础上,深度融合现代信息技术,实现农田管理的精准化、智能化和高效化。物联网(Intern…

[Angew]:调整单原子 Pt1/CeO2催化剂中铂的局部环境以实现稳定的低温 CO 氧化

通过热冲击合成调整孤立 Pt2+的局部环境,开发出一种用于 CO 氧化的高活性和坚固的单原子 Pt1/CeO2催化剂(见图)。惰性气氛中的超快冲击波在非对称 Pt1O4结构中产生 Pt 单原子,从而大大增强了低温活性,并且在氧化条件下仍能保持活性。 摘要:通过原子捕获(AT,800C空气中…

pycharm在pytorch环境的使用

前言 有时我们使用jupyter感觉不习惯,想使用编译器进行相关任务。在安装好pytorch环境下,我们可以使用pycharm等编译器进行完成任务等操作。 安装pycharm不做赘述。配置安装好pytorch环境可以参考我前一篇博客: 深度学习工具jupyter创建并检…

基于Java考研助手网站设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

海南聚广众达电子商务咨询有限公司抖音开店怎么样?

在数字化浪潮汹涌的当下,电商行业正迎来前所未有的发展机遇。作为抖音电商服务领域的佼佼者,海南聚广众达电子商务咨询有限公司凭借其专业的服务团队和前瞻的战略眼光,成为了众多品牌和商家在抖音平台上实现业务增长的重要合作伙伴。今天&…

毫米波移动通信系统中的波束赋形—模数混合的波束赋形架构

模数混合的波束赋形将波束赋形分为了模拟波束赋形与数字波束赋形两部分,其模拟部分通过移相器实现,数字部分通过基带预编码实现,,其结构如图2所示。当射频链路数目NRF为1时,认为其是一种特殊的模数混合的波束赋形。 此…

linux企业级CDN/100万并发架构设计/企业故障案例、网站优化架构原则

高薪思想:财富来源于信息差 什么是cdn? cdn全称是contenct delivery network内容分发网络 cdn是一套分布式,缓存,集群,范围可以是全球或全国,运行的实质是通过智能DNS获取用户的来源地域以及上网线路 为…

perfect-scrollbar缩小浏览器窗口滚动条无线滚动的bug

https://github.com/mdbootstrap/perfect-scrollbar/issues/153

【tcomat】聊聊tomcat是如何打破双亲委派模型进行类加载的

双亲委派模型 对于JVM类加载器来说,其实就是如下的code,JDK提供的三个类加载器,每个类加载器都加载自己范围内的类。Boot\EXT\APP 三个。双亲委派一句话就是,先让老爸处理,老爸处理不了,给爷爷。爷爷处理不…

java数据结构-链表经典习题

前言 上一篇讲解了链表的基本操作详解,接下来练习一下链表的应用。 目录 1.删除链表中等于给定值 val 的所有节点。 题解思路 2.反转一个单链表 思路分析 画图分析 代码实现 3.链表的中间结点 思路分析 画图分析 代码实现 4.链表中倒数最后k个结点 第一解决…

IPV6典型实验

实验要求: 1、R1和R2之间使用静态IPV6地址互联 2、R2作为DHCPIPV6服务器给R3分配全球单薄地址 3、R4接口通过R2的RA进行无状态地址自动分配 4、配置静态路由,实现设备直接互访。 R1: ipv6 #系统视图使设备能够处理IPV6报文 interface Gigabi…

《好内容成就好商单—巨量星图内容洞察全量培训课件》

本报告详细阐述了如何通过优质内容挖掘商业机会,包括平台升级规划、内容营销新机、如何做好内容以及怎么选对达人等关键议题。报告中深入分析了抖音内容生态的繁荣,以及如何利用巨量星图平台进行内容洞察和达人选择,以实现高效种草和转化。报告还介绍了多种选人方式和热点洞察工…

《2024年战略管理趋势报告》

本报告由Quantive发布。 《2024年战略管理趋势报告》这份报告深刻剖析了企业在策略管理上的当前状态、面临的挑战以及未来发展的趋势。报告指出,大多数组织在迅速适应市场变化方面存在困难,并且许多企业未能实现其战略目标,显示出策略制定与执行之间存在脱节。报告中不仅强调了…

000005 - HDFS 读写流程

HDFS 读写流程 1 HDFS 写数据流程1.1 HDFS 写数据流程图1.2 HDFS 写数据之网络拓扑 - 节点距离计算1.3 机架感知(副本存储节点选择) 2 HDFS 读数据流程2.1 HDFS 读数据流程图 3 HDFS 如何做到机架感知 1 HDFS 写数据流程 1.1 HDFS 写数据流程图 &#x…

Latex学习之“usefont”用法

Latex学习之“\usefont”用法 一、通俗的解释 \usefont 是 LaTeX 中的一个命令,用于在文档中临时改变字体,其基本语法如下: \usefont{字体编码}{字体族}{字体系列}{字体形状}这样看起来好像蛮抽象,你可能以及晕了,什…

2024-6-24(沉默Netty,MongoDB)

1.Netty概念 Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。 Dubbo,Kafka,ES等框架都是基于Netty开发的,可以把Netty理解为进行网络编程的…

一、Jquery入门(超详)

* [5.3 jQuery 对象和 DOM 对象之间的相互转换](about:blank#53_jQuery__DOM__271)* * [5.3.1 jQuery 对象转换为 DOM 对象](about:blank#531_jQuery__DOM__282)* [5.3.2 DOM 对象转换为 jQuery 对象](about:blank#532_DOM__jQuery__295)六、 解决 jQuery 和其他库的冲…

RT-Thread的Finsh实现学习

学习原因 工作中,使用同事开发的调试软件,输入参数打印的函数名就可以打印参数,但看不到代码实现,只能用自己微薄的知识积累去猜一下,之前尝试过,专门写一个函数,去解析编译生成的map文件&#…

【漏洞复现】脸爱云一脸通智慧管理平台 SystemMng 管理用户信息泄露漏洞(XVE-2024-9382)

0x01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大,运行稳定,操作简单方便,用户界面美观,轻松统计数据的一脸通系统。无需安装,只需在后台配置即可在浏览器登录。 功能包括:系统管理中心、人员信息管理中心、设备…

【TensorRT】TensorRT C# API 项目更新 (2):优化安装方式和代码

1. 项目介绍 NVIDIA TensorRT™ 是一款用于高性能深度学习推理的 SDK,包括深度学习推理优化器和运行时,可为推理应用程序提供低延迟和高吞吐量。基于 NVIDIA TensorRT 的应用程序在推理过程中的执行速度比纯 CPU 平台快 36 倍,使您能够优化在…