文章目录
记录一下K210的学习,学习主要按照官网的手册,以及官网内容进行。
1.找到官方给的例程,进入人脸检测的目录当中。
2.将facedetect.kmodel、flash-list.json压缩,并将压缩文件后缀修改为.kfpkg
3点击打开文件,并找到压缩后的.kfpkg文件,再点击下载。
# Untitled - By: Think - 周日 1月 8 2023
import sensor, image, time
import KPU as kpu
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
lcd.init()
task = kpu.load(0x300000)#将模型放入flash的0x300000位置
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437,
6.92275, 6.718375, 9.01025)#模型描参数
a = kpu.init yolo2(task,0.5,0.3,5,anchor)#初始化yolov2网络
clock = time.clock()
while(True):
clock.tick()
img = sensor.snapshot()
code = kpu.run yolov2(task,img)#运行yolov2网络
if code:
for i in code:
print(i)
b = img.draw_rectangle(i.rect())
lcd.display(img)
print(clock.fps())
(代码使用的是官方例程的。)
函数说明:
KPU.load(offset, file_path)
2.1.1. 参数#
offset
和 file_path
参数只能二选一,不需要关键词,直接传参即可
offset
: 模型在 flash 中的偏移大小,如 0xd00000
表示模型烧录在13M起始的地方, 0x300000
表示在 Flash
3M
的地方file_path
: 模型在文件系统中为文件名, 如 “/sd/xxx.kmodel”
返回#
如果正确加载,会返回返回值, 否则会抛出错误, 请看抛出的错误提示, 另外错误代码参考这里
如果发现错误代码是小于 2000
的值, 则是固件版本太低,需要更新固件版本
kpu_net
: kpu 网络对象KPU.init_yolo2(kpu_net, threshold, nms_value, anchor_num, anchor)
为yolo2
网络模型传入初始化参数, 只有使用yolo2
时使用
kpu_net
: kpu 网络对象, 即加载的模型对象, KPU.load()
的返回值threshold
: 概率阈值, 只有是这个物体的概率大于这个值才会输出结果, 取值范围:[0, 1]nms_value
: box_iou 门限, 为了防止同一个物体被框出多个框,当在同一个物体上框出了两个框,这两个框的交叉区域占两个框总占用面积的比例 如果小于这个值时, 就取其中概率最大的一个框anchor_num
: anchor 的锚点数, 这里固定为 len(anchors)//2
anchor
: 锚点参数与模型参数一致,同一个模型这个参数是固定的,和模型绑定的(训练模型时即确定了), 不能改成其它值。KPU.run_yolo2(kpu_net,image_t)
kpu_net
: kpu_load 返回的 kpu_net 对象image_t
:从 sensor 采集到的图像返回
kpu_yolo2_find 的列表