【正点原子K210连载】第四十七章 MNIST实验 摘自【正点原子】DNK210使用指南-CanMV版指南

news2024/11/28 6:27:17

第四十七章 MNIST实验

在上一章节中,介绍了利用maix.KPU模块实现了车牌的检测和识别,本章将继续介绍利用maix.KPU模块实现的MNIST识别。通过本章的学习,读者将学习到MNIST识别应用在CanMV上的实现。
本章分为如下几个小节:
47.1 maix.KPU模块介绍
47.2 硬件设计
47.3 程序设计
47.4 运行验证

47.1 maix.KPU模块介绍
有关maix.KPU模块的介绍,请见第39.1小节《maix.KPU模块介绍》。
47.2 硬件设计
47.2.1 例程功能

  1. 获取摄像头输出的图像,对图像进行预处理后,送入KPU进行MNIST手写数字识别,然后在LCD上显示识别出的数字和其对应的得分。
    47.2.2 硬件资源
    本章实验内容,主要讲解maix.KPU模块的使用,无需关注硬件资源。
    47.2.3 原理图
    本章实验内容,主要讲解maix.KPU模块的使用,无需关注原理图。
    47.3 程序设计
    47.3.1 maix.KPU模块介绍
    有关maix.KPU模块的介绍,请见第47.1小节《maix.KPU模块介绍》。
    47.3.2 程序流程图
    在这里插入图片描述

图47.3.2.1 人脸识别实验流程图
47.3.3 main.py代码
main.py中的脚本代码如下所示:
import lcd
import sensor
import gc
from maix import KPU

lcd.init()
sensor.reset()
sensor.set_framesize(sensor.QVGA)
sensor.set_pixformat(sensor.RGB565)
sensor.set_hmirror(False)

构造并初始化MNIST识别KPU对象

mnist_recognizer = KPU()
mnist_recognizer.load_kmodel(“/sd/KPU/uint8_mnist_cnn_model.kmodel”)

while True:
# 获取摄像头输出图像
img = sensor.snapshot()
roi = ((img.width() - img.height()) // 2, 0, img.height(), img.height())
img.draw_rectangle(roi, color=(0, 255, 0))
# 对图像进行预处理
gray_img = img.copy(roi)
gray_img.to_grayscale()
gray_img.resize(112, 112)
gray_img.invert()
gray_img.strech_char(1)
gray_img.pix_to_ai()
# 将图像送入卷积神经网络进行识别,并获取识别结果
output = mnist_recognizer.run_with_output(gray_img, getlist=True)
number = output.index(max(output))
score = KPU.sigmoid(max(output))
img.draw_string(2, 2, str(number), color=(255, 0, 0), scale=1.5)
img.draw_string(2, 16 + 2, str(score), color=(255, 0, 0), scale=1.5)
del gray_img
lcd.display(img)
gc.collect()
可以看到一开始是先初始化了LCD和摄像头,并分别构造并初始化了用于MNIST手写数字识别的KPU对象。
然后便是在一个循环中不断地获取摄像头输出的图像,在对图像进行预处理后,将图像送入卷积神经网络中进行计算和识别,最后将识别出的结果在图像上进行绘制,然后在LCD上显示图像。
47.4 运行验证
将DNK210开发板连接CanMV IDE,点击CanMV IDE上的“开始(运行脚本)”按钮后,将摄像头对手写数字,让其采集到手写数字图像,接着便可以看到LCD上显示了MNIST手写数字识别的结果,显示了识别出的数字结果及其对应的得分,如下图所示:

图47.4.1 LCD显示MNIST识别实验结果

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

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

相关文章

058_基于python时尚女装抖音号评论数据分析系统

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

国外白帽故事 | 攻破大学数据库系统,暴露数千学生记录

引言 在这篇文章中,我将分享我是如何攻破一个大型大学解决方案门户服务器的,这个服务器服务于许多大学客户,并且涉及数千名学生的数据。 目标 这是一个由印度许多大学和学院使用的门户网站,用于管理学生记录、成绩单、出勤记录…

【JavaEE】——四次挥手,TCP状态转换,滑动窗口,流量控制

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:断开连接的本质 二:四次挥手 1:FIN 2:过程梳理 …

MacOS RocketMQ安装

MacOS RocketMQ安装 文章目录 MacOS RocketMQ安装一、下载二、安装修改JVM参数启动关闭测试关闭测试测试收发消息运行自带的生产者测试类运行自带的消费者测试类参考博客:https://blog.csdn.net/zhiyikeji/article/details/140911649 一、下载 打开官网,…

华为云容器引擎(CCE):赋能企业云原生转型

在当今数字化时代,企业面临着日益复杂的应用部署和管理挑战。为了解决这些问题,容器技术应运而生,成为云原生架构的核心。华为云容器引擎(CCE)作为一款全面的容器管理解决方案,旨在帮助企业实现高效、灵活的…

Linux终端之旅: 打包和压缩

在 Linux 世界中,打包和压缩文件是管理系统资源、传输数据和备份的重要技能。通过命令行工具如 tar、gzip、zip 等,我们可以高效地将多个文件或目录打包为一个文件,并通过压缩减少其体积。接下来,我将记录学习如何利用这些工具&am…

SpringBoot3响应式编程全套-Spring Security Reactive

目录 传送门前言一、整合二、开发1、应用安全2、RBAC权限模型 三、认证1、静态资源放行2、其他请求需要登录 四、授权 传送门 SpringMVC的源码解析(精品) Spring6的源码解析(精品) SpringBoot3框架(精品) …

云+AI 时代的 OceanBase

2024 年 10 月 23 日,OceanBase 年度发布会在北京成功举办。会上,CEO 杨冰表示,OceanBase将继续践行一体化产品战略,不断演进产品能力,从支撑关键业务负载的OLTP能力,到实时分析的AP能力,再到应…

Unity Apple Vision Pro 保姆级开发教程 - Simulator 模拟器使用

教程视频 Apple VisionPro Simulator 模拟器使用教程 Unity Vision Pro 中文课堂教程地址: Unity3D Vision Pro 开发教程【保姆级】 | Unity 中文课堂 ​ VsionOS Simulator 简介 visionOS Simulator 是一个用于开发和测试 visionOS 应用程序的工具。它模拟 Appl…

Return code 0x40450037 (Not a valid nxos image)

1.问题描述 硬件:C93180YC(Nexus NXOS) 软件版本:Release 9.3.8 需要描述:需要将Nexus93180从Release 9.3.8升级到10.3.6(M),在执行操作的时候,发现如下问题&#xff…

从0到1学习node.js(npm)

文章目录 一、NPM的生产环境与开发环境二、全局安装三、npm安装指定版本的包四、删除包 五、用npm发布一个包六、修改和删除npm包1、修改2、删除 一、NPM的生产环境与开发环境 类型命令补充生产依赖npm i -S uniq-S 等效于 --save -S是默认选项npm i -save uniq包的信息保存在…

[实时计算flink]基于Paimon的数据库实时入湖快速入门

Apache Paimon是一种流批统一的湖存储格式,支持高吞吐的写入和低延迟的查询。本文通过Paimon Catalog和MySQL连接器,将云数据库RDS中的订单数据和表结构变更导入Paimon表中,并使用Flink对Paimon表进行简单分析。 背景信息 Apache Paimon是一…

Elasticsearch如何搜索日志并存储

Elasticsearch 是一个分布式搜索引擎,擅长对大量数据进行实时的搜索、分析和存储。它常被用于处理日志数据,配合工具如 Logstash 或 Filebeat 来收集和存储日志,并提供强大的搜索和分析能力。接下来,我将解释 Elasticsearch 如何处…

8年经验之谈 —— 如何使用自动化工具编写测试用例?

以下为作者观点,仅供参考: 在快速变化的软件开发领域,保证应用程序的可靠性和质量至关重要。随着应用程序复杂性和规模的不断增加,仅手动测试 无法满足行业需求。 这就是测试自动化发挥作用的地方,它使软件测试人员…

NVR小程序接入平台/设备EasyNVR多个NVR同时管理的高效解决方案

在当今的数字化安防时代,视频监控系统的需求日益复杂和多样化。为了满足不同场景下的监控需求,一种高效、灵活且兼容性强的安防视频监控平台——NVR批量管理软件/平台EasyNVR应运而生。本篇探讨这一融合所带来的创新与发展。 一、NVR监测软件/设备EasyNV…

【设计模式】MyBatis 与经典设计模式:从ORM到设计的智慧

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 【设计模式】揭秘Spri…

vue2 el-select赋值无效(无法选中)

背景:点击添加明细时,el-table会新增一条数据,其中,存货原申购用途 会根据 费用承担事业部 下拉框的值改变而改变,所以每次费用承担事业部发生变化时,都需要清空存货原申购用途的值 最开始是直接这样写的&a…

D. Deleting Divisors

传送门:Problem - D - Codeforces 题意: 思路:博弈论 打表找规律( 递推 ) 如果 ans[i] 为 true ,则 Alice 能赢 ans[i] 为 false,则 Bob 会赢 数字 n 的一个因子 为 x , 如果 …

【简历】25届浙江某211大学JAVA简历:明明项目有货,但是长篇大论减分!!

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 另外:我们出这一系列校招简历指导的原因,就是看很多学生被忽悠,没有先定位大厂、中厂还是小公司,导…

【日志】力扣刷题——买卖股票的最佳时机 // Unity——添加数据表文件、EPPlus插件以及编辑器开发生成Excel转Json代码文件复习

2024.10.17 【力扣刷题】 两题连一起,思路很像 121. 买卖股票的最佳时机 - 力扣(LeetCode) 122. 买卖股票的最佳时机 II - 力扣(LeetCode) 121. 买卖股票的最佳时机 按照顺序查找,找到最大的差值时&#x…