鹹魚K210體驗筆記—物體檢測

鹹魚K210體驗筆記—物體檢測

寫在前面:本人非專業人員,僅爲此類愛好者。分享一下新手在體驗K210的過程。入門踩坑(各種跳坑),希望大佬幫忙填上一二~。(所選設備都是K210。都想體驗一下。歡迎大佬指點。)因爲之前有些硬件使用基礎所以K210只使用視覺相關功能。

物體識別,是機器視覺裏面非常典型的應用。要實現的就是將一幅圖片裏面的各種物體檢測出來,然後跟已知模型做比較從而判斷物體是什麼。

構造函數

首先簡單介紹一下 K210 的 KPU。KPU 是 K210 內部一個神經網絡處理器,簡單來說就是 KPU 能加載和運行各種現成的 AI 算法模型,實現各種機器視 覺等功能。 MaixPy 中人臉識別本質是目標檢測,主要通過在 K210 的 KPU 上跑 YOLO(You Only Look Once)目標檢測算法來實現。我們來看一下 KPU 在 MaixPy 下的 用法。

import KPU as kpu
#常用的 KPU 模塊導入方法。

使用方法

函數 參數
kpu.load(offset or file_path) 加載模型。【offset】模型存放在 flash 的偏移量,如 0x300000;【file_path】模型在文件系統爲文件名,如“xxx.kmodel”
kpu.init_yolo2(kpu_net,threshold,nms_value,anchor_num,anchor) 初始化 yolo2 網絡;【kpu_net】kpu 網絡對象【threshold】概率閾值;【nms_value】box_iou 門限;【anchor_num】描點數;【anchor】描點參數與模型參數一致。
kpu.run_yolo2(kpu_net,image) 運行 yolo2 網絡;【kpu_net】從 kpu_load()中返回的網絡對象;【image】從 sensor 中採集到的圖像
kpu.deinit(kpu_net) 反初始化。【kpu_net】kpu 網絡對象

參考地址:https://maixpy.sipeed.com/zh/libs/Maix/kpu.html

請按照以下步驟解鎖物體識別(滑稽)

1.下載模型模型地址
在這裏插入圖片描述
下載
在這裏插入圖片描述
2.使用kflash漿把模型文件添加到開發板中,參數如下
在這裏插入圖片描述
3.下載成功就可以浪了
在這裏插入圖片描述
4.示例程序在01科技文件裏也有:路徑:示例程序——機器視覺——物體檢測。

5.導入代碼

#https://blog.sipeed.com/p/677.html (代碼地址)
import sensor,image,lcd,time
import KPU as kpu

lcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1)     #攝像頭後置方式
sensor.run(1)
clock = time.clock()
#模型分類,按照 20class 順序
#“飛機”、“自行車”、“鳥”、“船”、“瓶子”、“公交車”、“汽車”、“貓”、“椅子”、“牛”、“餐桌”、
#“狗”、“馬”、“摩托車”、“人”、“土豆植物”、“羊”、“沙發”、“火車”、“電視監視器”
classes = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']

#需要將模型(20class.kfpkg)燒寫到 flash 的 0x500000 位置
task = kpu.load(0x500000)
anchor = (1.08, 1.19, 3.42, 4.41, 6.63, 11.38, 9.42, 5.11, 16.62, 10.52)
#初始化 yolo2 網絡,識別可信概率爲 0.5(50%)
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
while(True):
    clock.tick()
    img = sensor.snapshot()
    code = kpu.run_yolo2(task, img)
    print(clock.fps())
    if code:
        for i in code:
            a=img.draw_rectangle(i.rect())
            a = lcd.display(img)
            for i in code:
                lcd.draw_string(i.x(), i.y(), classes[i.classid()], lcd.RED, lcd.WHITE)
                lcd.draw_string(i.x(), i.y()+12, '%f1.3'%i.value(), lcd.RED, lcd.WHITE)
    else:
        a = lcd.display(img)
a = kpu.deinit(task)

將代碼保存到開發板的boot.py;保存成功我們就可以不用連數據線了。放個電池就能運行了在這裏插入圖片描述

實現效果
在這裏插入圖片描述

運行程序,準備 20class 裏面相關的物體圖片,可以看到 pyAI-K210 可以輕易地將相關物體識別出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章