嵌入式工程师AI挑战营RV1106人脸识别+流水记录(4)
[复制链接]
本帖最后由 90houyidai 于 2024-12-15 11:29 编辑
上一篇已经将LuckFox这边的跑通了,板上推理可能还欠缺一点
下面看是跑Insightface,为了方便我将InsightFace的环境与RKNN-Toolkit2的环境搭在一起,方便之后模型的转换
首先,依然是环境搭建,又是一通PIP,刚开始是安装这个使用insightface实现人脸检测和人脸识别-物联沃-IOTWORD物联网进行搭建的
- pip install -U insightface -i https:
- pip install onnxruntime -i https:
-
- onnxruntime-gpu 或者onnxruntime 选择GPU或者CPU
环境搭建好了就是下载InsightFace工程
\insightface\python-package 文件夹中有个Readme文件
参照说明建立测试PY文件
- import cv2
- import numpy as np
- import insightface
- from insightface.app import FaceAnalysis
- from insightface.data import get_image as ins_get_image
-
- app = FaceAnalysis(allowed_modules=['detection'],providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
- print("prepare::::")
- app.prepare(ctx_id=0, det_size=(640, 640))
- img = ins_get_image('t1')
- faces = app.get(img)
- print("faces::::", faces)
- rimg = app.draw_on(img, faces)
- cv2.imwrite("./ldh_output.jpg", rimg)
-
- handler = insightface.model_zoo.get_model('/home/ubuntu/.insightface/models/buffalo_l/w600k_r50.onnx', providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
- handler.prepare(ctx_id=0)
- img = ins_get_image('t1')
- feature = handler.get(img, faces[0])
- print("size of feature:", len(feature))
- print("feature:", feature)
- feature = handler.get(img, faces[1])
- print("size of feature:", len(feature))
- print("feature:", feature)
-
运行后就可以在当前路径下得到一张输出图片,其将图片中的人脸全部框出,并标记人脸识别点
第一次运行会比较慢,通过输出可以看到是在下载模型(此步不确定,回忆不起来了)
模型使用的是buffalo_l模型,路径在~/.insightface/models/下,需要打开隐藏才能看到
- 可以在测试文件开头选择所使用的模型:antelopev2、buffalo_l、buffalo_m、buffalo_s、buffalo_sc
- ```
- model_pack_name = 'buffalo_l'
- app = FaceAnalysis(name=model_pack_name)
- ```
从log上可以看出每个模型的功能
1k3d68是检测人脸3D特征的
2d106det是检测人脸2D特征的
det_10g是检测人脸的
genderage是检测人脸年龄和性别的
w600k_r50是检测人脸embedding特征的
find model: /home/ubuntu/.insightface/models/buffalo_l/det_10g.onnx 模型名称model.taskname
detection 功能
[1, 3, '?', '?'] model.input_shape,
127.5 model.input_mean,
128.0 model.input_std
,
(insightface_chw) ubuntu@ubuntu:~/insightface/python-package$ python3 test1.py 检测和识别,返回512维数据
{'bbox': array([466.0821 , 268.6164 , 573.58923, 415.5331 ], dtype=float32),
'kps': array([[491.85046, 321.8314 ],[541.85266, 332.11188],[507.67114, 366.41312],[485.91965, 369.691 ],[533.74945, 378.3811 ]], dtype=float32),
'det_score': 0.9196533},
bbox为人脸框坐标
kps为关键点坐标
det_score为检测分数
至此,insightface算是测试好了,下面就想怎样将insightface与luckfox结合了
|