今日开始学习K210视觉识别模块:固件的下载升级_官方数字识别例程导入方法
主要学习如何升级固件库,在哪下载固件库,以及如何在TF卡正确导入官方例程:
亚博智能的K210视觉识别模块......
固件库版本: canmv_yahboom_v2.1.1.bin
本次最终目的是正确导入官方的数字识别例程,并运行测试:
目录
固件的下载升级:
固件下载网址:
k_falsh下载网址:
k_flash 操作下载固件:
官方数字识别例程导入:
例程导入步骤:
例程测试效果:
例程代码解释:
网上学习网址贴出:
固件的下载升级:
K210下载更新固件主要是为了修复错误、提高性能、添加新功能、增强兼容性、保障安全性以及解决用户在使用中遇到的问题,从而提供更好的用户体验
固件下载网址:
下载站 - Sipeed
k_falsh下载网址:
https://github.com/sipeed/kflash_gui/releases
注意选择适合自己电脑系统的包,(我的是windows),解压后找到.exe 就能使用:
k_flash 操作下载固件:
1、首先USB连接K210到电脑
2、打开kflash的可执行文件
3、最后一步就是先选择之前下好的固件文件,然后别忘了选定正确的串口号与波特率
(波特率一般是115200)
官方数字识别例程导入:
例程导入步骤:
1、拔出K210的TF卡,将其放入读卡器插入电脑:
2、找到官方例程的KPU文件夹,直接复制到TF卡:
这里面一般都是官方训练好的模型文件,该文件夹会在例程中被调用,因此千万不可自行更改名称!
3、复制手写数字识别的py文件到TF卡,并更名为 main.py:
例程测试效果:
例程代码解释:
import sensor, image, time, lcd # 导入必要的库,包括摄像头传感器、图像处理、时间处理和液晶显示屏控制库 from maix import KPU # 导入KPU库,用于在K210芯片上运行神经网络 import gc # 导入垃圾收集库,用于释放不再使用的内存 lcd.init() # 初始化LCD显示屏 sensor.reset() # 重置摄像头传感器 sensor.set_pixformat(sensor.RGB565) # 设置摄像头的像素格式为RGB565,这是一种颜色深度较低的格式,可以节省内存和处理时间 sensor.set_framesize(sensor.QVGA) # 设置摄像头捕获的图像大小为QVGA(320x240像素) sensor.set_windowing((224, 224)) # 设置摄像头捕获的感兴趣区域(ROI)为224x224像素,这通常是为了匹配神经网络模型的输入大小 sensor.skip_frames(time = 100) # 跳过摄像头的前100帧,以便让摄像头稳定下来,避免初始化时的噪点 clock = time.clock() # 初始化一个时间计数器,代码中没有它的进一步使用 kpu = KPU() # 创建一个KPU对象,用于加载和运行神经网络模型 # 加载预训练的神经网络模型,该模型位于SD卡的指定路径下,并用于识别MNIST手写数字数据集 kpu.load_kmodel("/sd/KPU/mnist/uint8_mnist_cnn_model.kmodel")while True: # 无限循环,持续捕获图像并进行识别 gc.collect() # 调用垃圾收集器,释放不再使用的内存 img = sensor.snapshot() # 从摄像头捕获一帧图像 img_mnist1=img.to_grayscale(1) # 将捕获的图像转换为灰度图像,这有助于减少计算量,因为MNIST数据集是灰度图像 img_mnist2=img_mnist1.resize(112,112) # 将灰度图像缩放到112x112像素 img_mnist2.invert() # 对图像进行反色处理,可能是为了增强图像的对比度或其他预处理目的 img_mnist2.strech_char(1) # 这可能是一个自定义函数,用于对图像进行某种形式的拉伸或字符增强处理img_mnist2.pix_to_ai() # 这可能是一个自定义函数,用于将图像数据转换为神经网络可以处理的格式 # 使用KPU运行神经网络模型,并获取模型的输出,这里`getlist=True`表示返回一个列表,包含了所有类别的得分 out = kpu.run_with_output(img_mnist2, getlist=True)max_mnist = max(out) # 找到输出列表中得分最高的项 index_mnist = out.index(max_mnist) # 找到得分最高项在列表中的索引,这代表了预测的类别score = KPU.sigmoid(max_mnist) # 对最高得分应用sigmoid函数,将其转换为0到1之间的概率值# 如果预测的数字是1,并且概率非常高(大于0.999)# 在图像上绘制识别的数字,并在控制台上打印结果 if index_mnist == 1:if score > 0.999:display_str = "num: %d" % index_mnistprint(display_str, score)img.draw_string(4,3,display_str,color=(0,0,0),scale=2)# 同上,但针对数字5 elif index_mnist == 5:if score > 0.999:display_str = "num: %d" % index_mnistprint(display_str, score)img.draw_string(4,3,display_str,color=(0,0,0),scale=2)# 对于其他数字 ,无论得分如何,都进行显示和 else:display_str = "num: %d" % index_mnistprint(display_str, score)img.draw_string(4,3,display_str,color=(0,0,0),scale=2)lcd.display(img)kpu.deinit()
网上学习网址贴出:
更新 MaixPy 固件 - Sipeed Wiki