几个好用的网站
openmv官方给出了它的包,可以在文档中找到
sipeed官网给出的操作手册
MaixPy 精简版入门教程(AI视觉向)
问题1:AttributeError: ‘image’ object has no attribute ‘xxxx’
这个错误出现的原因是没有下载固件到开发板上
打开flash_gui,添加固件,(下载链接)这个固件版本不能太低
烧录地址默认为 0x00000 即可。选择开发板和串口 COM,串口选择自己开发板对应的串口。
然后下载固件,完成,就不会报错啦
问题2:ERR. NO_ MEM: memory not enough
超出内存空间了,这个时候有两种解决方式
上策: 扩大内存
在 MaixPy 中, 目前使用了两种内存管理, 一种是 GC(垃圾回收), 另一种是系统堆内存, 两者同时存在。
k210 比如有 6MiB 通用内存, 需要用到内存的有固件(K210 是一次性将所有代码加载到内存的),一些功能所需比如摄像头缓冲区等,还有存放模型, 另外有 2MiB 给 KPU 专用的内存(如果使用 KPU 的话)
因为GC要扫描内存, 如果除了程序占用的内存,剩下的都给GC,那每次扫描需要耗费大量时间,所以分成了两中内存。 堆内存由 C层面的代码控制,主要用于图片内存, AI内存, LCD 内存, 以及模型加载到内存等
GC 内存的总大小是可以设置的, 所以,根据具体的使用情况可以适当修改GC内存大小, 比如:
- 为了加载更大的模型,可以把 GC内存设置小一点
- 如果分配新的变量提示内存不足, 可以适当将GC内存设置大一点即可
- 如果都不够了, 就要考虑缩减固件大小,或者优化代码了
设置GC内存大小示例:
from Maix import utils
import machine
print(utils.gc_heap_size())
utils.gc_heap_size(7 * 1024 * 1024) # 7MiB
machine.reset() # 注意修改后需要重启生效
查看内存分配情况:
import gc
print(gc.mem_free() / 1024) # stack mem
import Maix
print(Maix.utils.heap_free() / 1024) # heap mem
下策:减小固件
重新下载一个精简版固件,
DIY一个小固件,压缩固件体积,通过裁减功能来减少内存占用,这个在前面固件升级部分有说明,使用在线编译定制固件,或者自己本机编译,方法见这里
其他方法
-
减少内存的使用,比如全局变量,不使用了尽量删除(通过del 变量名),删除之后还可以手动回收 GC 内存(通过gc.collect())。图片分辨率也可以尽量不要用太大(一般QVGA)
-
如果模型太大,可以使用kpu.load_flash()函数来加载模型(只支持kmodel):这会在需要模型时实时从flash读取内容,这样就可以装载大模型了,效率会低一点,帧率会有所降低(原理有兴趣可以见另一篇文章K210 从flash实时加载大模型)。使用方法见这里,注意,模型需要先用脚本转一下大小端,别漏了!!文章来源:https://www.toymoban.com/news/detail-494945.html
-
如果你在操作 image时或者lcd画图时遇到这个问题,可以合理利用lcd的display(img, oft=(x,y))的oft参数来实现在lcd指定区域画图,而不是画整副图。文章来源地址https://www.toymoban.com/news/detail-494945.html
到了这里,关于K210(1)解决一些新上手出现的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!