今日開始學習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