Mnist模型识别自己手写数字正确率低的原因

2023-10-16 06:50

本文主要是介绍Mnist模型识别自己手写数字正确率低的原因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

做老板的助教,大三学生问的比较多的问题,记录一下。

 

问题背景:

有的同学用官方的训练数据mnist训练好自己的模型后,自己制作数字图片给训练好的模型识别,结果正确率只有40%多,甚至用原来训练的数据集识别正确率都低于50%.

 

 

 

解决方法:

可以从下面几个方面入手,把自己手写的数字识别率提高到80%不难:

 

 

原因1西方手写体和东方手写体造成的样本差异

 

具体操作:我们把训练集的ubyte文件转成图片可以看到如下图

 

我们训练的时候用到的是 外国人写的数字,你可以看到 2 ,4 ,6 和中国人写的区别很大。找了一个图方便对比:

很明显,我们自己写出来的一些数字和原来用于训练的数字差别太大,导致识别率低,可以模仿西方数字书写提高一点识别率。

 

 

原因2:做了不恰当的图片预处理操作

如果有的同学用训练集去测试原来的模型识别率也低,那你应该是图像预处理模块出了问题。

举个例子:

我有一张训练模型时候用到的图,叫做test_0.jpg, 如下图:

,这里我们用7做测试,然后我把图片读进来测试模型的识别率,第一次我把图像做一次归一化,第二次我不做归一化,分别送给模型去识别。两次结果如下图:

 

做了归一化结果

可以看到把训练数据的7识别成了8

 

未做归一化结果:

可以看到我们把归一化那一行注释掉了之后,就识别正确了,很多训练集识别率都出了问题的,都是自己加了错误的预处理造成的,为什么?

 

因为:我们把图片读到matlab中,此时未做归一化处理,结果如下图

,很明显,这是一个 数字 7 的轮廓。现在我把它进行归一化,这里我使用其中一个同学的归一化代码演示,代码如下

他是用255减去每个像素值/maxpixel-minpixel))   的方式进行归一化。

 

归一化之数据和图形如下:

imshow() 显示为  ,归一化之后变成了白底黑字,为什么?因为如果原来是黑色,假如像素值为0 255-0/255,变成了1, 然后0~1之间1最大,所以颜色反转了,你用这个7去给模型识别,自然而然识别不出来,识别结果如下:

7认成了8

 

这个例子不是说不能做图片预处理,是说要进行正确的预处理。

 

 

建议用photoshop的柔性画笔制作自己的样本,我测了,识别率很高。

 

总结:

1、尽量模仿西方数字的书写,书写的位置尽量位与28*28的中央,建议用photoshop的柔性画笔书写。

2、小心你的图片预处理过程,这可能是你识别率低的罪魁祸首

3、你可以把所有的训练图片处理成2值图,然后给模型训练,测试图片也用2值图,就是只有01,没有0~1之间的任何数,避免了图片预处理导致的识别率下降,识别率会极大提升。

 

 

 

 

这篇关于Mnist模型识别自己手写数字正确率低的原因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/219798

相关文章

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (