前言
人脸检测是人脸识别算法的第一步,人脸识别过程主要分为人脸图像获取、人脸检测、人脸配准、人脸表征以及人脸图像匹配与识别。人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸外接矩形(椭圆)在图像中的坐标,可能还包括姿态如倾斜角度等信息。人脸检测在安防监控,人证比对,人机交互,社交和娱乐等方面有很强的应用价值。
人脸识别是在人脸检测的基础上除了检测到人脸的位置以外, 还可以识别到这个人是谁,利用分析比较是基于人的脸视觉部特征信息进行身份鉴识别的计算机一种生物识别技术。
一、KPU模块方法
1、
KPU.load(offset, file_path)
从flash或者文件系统中加载模型
参数说明:
offset: 模型在 flash 中的偏移大小,如 0xd00000 表示模型烧录在13M起始的地方, 0x300000表示在 Flash 3M的地方。
file_path: 模型在文件系统中为文件名, 如 “/sd/xxx.kmodel”
注意:offset 和 file_path 参数只能二选一,不需要关键词,直接传参即可。
返回值:
kpu_net: kpu 网络对象
如果正确加载,会返回返回值, 否则会抛出错误, 请看抛出的错误提示, 另外错误代码参考这里如果发现错误代码是小于 2000 的值, 则是固件版本太低,需要更新固件版本
2、
kpu.load_flash(model_addr, is_dual_buf, batch_size, spi_speed)
与 load 方法作用相同.
参数说明:
model_addr:Flash addr 经过预处理的模型烧录到 flash 中的偏移地址。注意,这里需要预处理模型文件说明。
is_dual_buf:0,单一缓冲区加载,使用较少的 RAM 和较慢的速度动态加载该模型文件; 1,开启双缓冲加载,需要更大的 RAM, 运行速度相对较快。
batch_size:将 is_dual_buf 设置为 1 时,需要设置 load batch_size,建议值为 0x4000~0x10000,可以测试出模型的最佳值。如果 is_dual_buf 为 0 则设置为 0
spi_speed:使用 SPI flash 加载模型文件时,我们会暂时将 flash 设置为高速模式,并设置所需的 spi 时钟频率。该值应 <= 80000000(实际频率,设值可能不等于实际频率。)
返回值:
kpu_net: kpu 网络对象
3、
KPU.init_yolo2(kpu_net, threshold, nms_value, anchor_num, anchor)
为yolo2网络模型传入初始化参数, 只有使用yolo2时使用
比如:
import KPU as kpu
task = kpu.load(0x300000)
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
参数说明:
pu_net: kpu 网络对象, 即加载的模型对象, KPU.load()的返回值
threshold: 概率阈值, 只有是这个物体的概率大于这个值才会输出结果, 取值范围:[0, 1]
nms_value: box_iou 门限, 为了防止同一个物体被框出多个框,当在同一个物体上框出了两个框,这两个框的交叉区域占两个框总占用面积的比例 如果小于这个值时, 就取其中概率最大的一个框
anchor_num: anchor 的锚点数, 这里固定为 len(anchors)//2
anchor: 锚点参数与模型参数一致,同一个模型这个参数是固定的,和模型绑定的(训练模型时即确定了), 不能改成其它值。
返回值:
success: bool类型, 是否成功
4、
KPU.deinit(kpu_net)
释放模型占用的内存, 立即释放, 但是变量还在,可以使用delkpu_net_object 的方式删除,另外也可以直接只使用del kpu_net_object来标记对象已被删除,下一次GC进行内存回收或者手动调用gc.collect()时,会自动释放内存
比如:
import KPU as kpu
import gc
task
3092



——人脸检测和人脸识别&spm=1001.2101.3001.12003&articleId=124099429&d=1&t=3&u=f41317a74d584fe5ac03c8dd827a1034)

被折叠的 条评论
为什么被折叠?



