嵌入式工程师AI挑战营RV1106人脸识别+RKNN推理测试
[复制链接]
本帖最后由 冬天的木鱼 于 2025-1-21 08:05 编辑
嵌入式工程师AI挑战营RV1106人脸识别+RKNN推理测试
本次测试完全按照wiki相关文档执行https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-RKNN-Test。
系统是Ubuntu22.04.5,python3.10,需要配置清华源
有些有错误的地方属于本人错误操作导致,wiki文档依次执行下来没有大的问题
Step1. 安装Miniconda
Step1.1 下载安装包
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh
Step1.2 安装miniconda
chmod 777 Miniconda3-4.6.14-Linux-x86_64.sh
bash Miniconda3-4.6.14-Linux-x86_64.sh
Step1.3 配置Shell文件
gedit nano ~/.bashrc
#在文件末尾添加以下行:
source ~/miniconda3/bin/activate
#退出conda环境
conda deactivate
Step2. 下载rknn-toolkit2,
Step2.1 安装RKNN-ToolKit2依赖包
执行指令:pip3 install -r rknn-toolkit2/packages/requirements_cp310-1.6.0.txt
Step2.2 创建 RKNN-Toolkit2 Conda 环境
创建 RKNN-Toolkit2 开发 Conda 环境,-n 参数表示环境名称,指定python版本为3.8
conda create -n RKNN-Toolkit2 python=3.8
Step2.3 进入RKNN-Toolkit2 Conda环境
conda activate RKNN-Toolkit2
Step2.4 获取 RKNN-Toolkit2 安装包
git clone
Step2.6 安装 RKNN-Toolkit2
pip install rknn-toolkit2/packages/rknn_toolkit2-1.6.0+81f21f4d-cp38-cp38-linux_x86_64.whl
Step2.7 测试是否安装成功
python
>>> from rknn.api import RKNN
测试部署ONNX模型
ONNX模型信息:
Step3 人脸检测 retinaface
Step3.1 获取retinaface源码
Step3.2. 进入源码目录
cd retinaface-pytorch
Step3.3 搭建模型训练环境
conda create -n retinaface python=3.6
Step3.4 进入 Conda 虚拟环境并安装运行的依赖库
conda activate retinaface
pip install -r requirements.txt
在 model_data文件夹下存放有训练好的 .pth权重文件,选择以mobilenet作为骨干网络的权重文件导出为 .onnx格式
强调:执行指令后,model_data 内并没有下载.pth权重文件,需要手工下载.pth权重文件
Step3.5 在工程文件夹下创建导出 ONNX 文件的python脚本
from nets.retinaface import RetinaFace
from utils.config import cfg_mnet
import torch
model_path='model_data/Retinaface_mobilenet0.25.pth' #模型路径
model=RetinaFace(cfg=cfg_mnet,pretrained = False) #模型初始化
device = torch.device('cpu')
model.load_state_dict(torch.load(model_path,map_location=device),strict=False) #模型加载
net=model.eval()
example=torch.rand(1,3,640,640) #给定输入
torch.onnx.export(model,(example),'model_data/retinaface.onnx',verbose=True,opset_version=9) #导出
Step3.6 执行脚本获取ONNX文件
python export_onnx.py
Step4. 人脸特征提取Facenet
Step4.1 获取facenet源码
补充,图片内是在retinaface环境下,应该先执行conda deactivate指令退出retinaface环境,再执行git 指令,这是个bug。
Step4.2 进入源码目录
cd facenet-pytorch
Step4.3 搭建模型训练环境
conda create -n facenet python=3.6
Step4.4 进入 Conda 虚拟环境并安装运行的依赖库
conda activate facenet
pip install -r requirements.txt
Step4.5 在工程文件夹下创建导出 ONNX 文件的python脚本export_onnx.py
from nets.facenet import Facenet
from torch import onnx
import torch
model_path='model_data/facenet_mobilenet.pth' #模型路径
model = Facenet(backbone="mobilenet",mode="predict",pretrained=True) #模型初始化
device = torch.device('cpu')
model.load_state_dict(torch.load(model_path, map_location=device), strict=False)
example=torch.rand(1,3,160,160) #给定一个输入
torch.onnx.export(model,example,'model_data/facenet.onnx',verbose=True,opset_version=9) #导出
Step4.6 执行脚本获取 ONNX 文件(facenet conda 环境下)
python export_onnx.py
Step 5. 物体识别YoloV5
Yolov5 的基本原理是:通过卷积神经网络提取图像特征,并在网格划分的基础上对每个网格单元进行目标检测预测,预测边界框位置和类别,并分配置信度分数。最后,通过非极大值抑制(NMS)筛选和合并重叠较大的边界框,得到最终的目标检测结果。
Step5.1 获取Yolov5源码
git clone
图片中仍处于facenet环境,应该先执行conda deactivate指令退出facenet环境,该处为bug
Step5.2 进入 Yolov5 源码目录
cd yolov5
Step5.3 搭建模型训练环境
conda create -n yolov5 python=3.9
Step5.4 进入 Conda 虚拟环境并安装运行的依赖库
conda activate yolov5
pip install -r requirements.txt
Step5.5 从默认文件中导出 ONNX 文件(yolov5 conda 环境下)
python export.py --rknpu --weight yolov5s.pt
Step6. RKNN 应用示例
Step6.1 模型源码获取
Step6.2 进入 scripts/luckfox_onnx_to_rknn 目录
cd luckfox_pico_rknn_example/scripts/luckfox_onnx_to_rknn
Step 6.3 进入RKNN-Toolkit2 Conda 开发环境
conda activate RKNN-Toolkit2
Step6.4 模型转换
cd convert
convert.py ../model/retinaface.onnx ../dataset/retinaface_dataset.txt ../model/retinaface.rknn Retinaface
Step7 rknn_model_zoo 应用示例
Step7.1 下载 rknn_model_zoo
Step7.2 获取 Yolov5 ONNX模型文件
cd <rknn_model_zoo Path>/rknn_model_zoo/examples/yolov5/model
chmod a+x download_model.sh
./download_model.sh
Step7.3 执行 rknn_model_zoo/examples/yolov5/python目录下的模型转换程序 convert.py
使用方法:
conda activate RKNN-Toolkit2
cd <rknn_model_zoo Path>/rknn_model_zoo/examples/yolov5/python
python3 convert.py ../model/yolov5s.onnx rv1106
相关模型经以下处理后,移植至开发板
最后执行,效果如下视频所示
|