幾個好用的網(wǎng)站
openmv官方給出了它的包,可以在文檔中找到
sipeed官網(wǎng)給出的操作手冊
MaixPy 精簡版入門教程(AI視覺向)
問題1:AttributeError: ‘image’ object has no attribute ‘xxxx’
這個錯誤出現(xiàn)的原因是沒有下載固件到開發(fā)板上
打開flash_gui,添加固件,(下載鏈接)這個固件版本不能太低
燒錄地址默認為 0x00000 即可。選擇開發(fā)板和串口 COM,串口選擇自己開發(fā)板對應的串口。
然后下載固件,完成,就不會報錯啦
問題2:ERR. NO_ MEM: memory not enough
超出內(nèi)存空間了,這個時候有兩種解決方式
上策: 擴大內(nèi)存
在 MaixPy 中, 目前使用了兩種內(nèi)存管理, 一種是 GC(垃圾回收), 另一種是系統(tǒng)堆內(nèi)存, 兩者同時存在。
k210 比如有 6MiB 通用內(nèi)存, 需要用到內(nèi)存的有固件(K210 是一次性將所有代碼加載到內(nèi)存的),一些功能所需比如攝像頭緩沖區(qū)等,還有存放模型, 另外有 2MiB 給 KPU 專用的內(nèi)存(如果使用 KPU 的話)
因為GC要掃描內(nèi)存, 如果除了程序占用的內(nèi)存,剩下的都給GC,那每次掃描需要耗費大量時間,所以分成了兩中內(nèi)存。 堆內(nèi)存由 C層面的代碼控制,主要用于圖片內(nèi)存, AI內(nèi)存, LCD 內(nèi)存, 以及模型加載到內(nèi)存等
GC 內(nèi)存的總大小是可以設置的, 所以,根據(jù)具體的使用情況可以適當修改GC內(nèi)存大小, 比如:
- 為了加載更大的模型,可以把 GC內(nèi)存設置小一點
- 如果分配新的變量提示內(nèi)存不足, 可以適當將GC內(nèi)存設置大一點即可
- 如果都不夠了, 就要考慮縮減固件大小,或者優(yōu)化代碼了
設置GC內(nèi)存大小示例:
from Maix import utils
import machine
print(utils.gc_heap_size())
utils.gc_heap_size(7 * 1024 * 1024) # 7MiB
machine.reset() # 注意修改后需要重啟生效
查看內(nèi)存分配情況:
import gc
print(gc.mem_free() / 1024) # stack mem
import Maix
print(Maix.utils.heap_free() / 1024) # heap mem
下策:減小固件
重新下載一個精簡版固件,
DIY一個小固件,壓縮固件體積,通過裁減功能來減少內(nèi)存占用,這個在前面固件升級部分有說明,使用在線編譯定制固件,或者自己本機編譯,方法見這里
其他方法
-
減少內(nèi)存的使用,比如全局變量,不使用了盡量刪除(通過del 變量名),刪除之后還可以手動回收 GC 內(nèi)存(通過gc.collect())。圖片分辨率也可以盡量不要用太大(一般QVGA)
-
如果模型太大,可以使用kpu.load_flash()函數(shù)來加載模型(只支持kmodel):這會在需要模型時實時從flash讀取內(nèi)容,這樣就可以裝載大模型了,效率會低一點,幀率會有所降低(原理有興趣可以見另一篇文章K210 從flash實時加載大模型)。使用方法見這里,注意,模型需要先用腳本轉(zhuǎn)一下大小端,別漏了?。?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-494945.html
-
如果你在操作 image時或者lcd畫圖時遇到這個問題,可以合理利用lcd的display(img, oft=(x,y))的oft參數(shù)來實現(xiàn)在lcd指定區(qū)域畫圖,而不是畫整副圖。文章來源地址http://www.zghlxwxcb.cn/news/detail-494945.html
到了這里,關(guān)于K210(1)解決一些新上手出現(xiàn)的問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!