48|0

12

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

嵌入式工程师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, 
执行指令:git clone
链接已隐藏,如需查看请登录或者注册
 
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.5 安装 RKNN-Toolkit2 相关的依赖库
pip install tf-estimator-nightly==2.8.0.dev2021122109
pip install -r rknn-toolkit2/packages/requirements_cp38-1.6.0.txt -i https://pypi.mirrors.ustc.edu.cn/simple/
 
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源码
git clone 
链接已隐藏,如需查看请登录或者注册
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源码
git clone
链接已隐藏,如需查看请登录或者注册
补充,图片内是在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 模型源码获取
git clone
链接已隐藏,如需查看请登录或者注册
 
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
git clone
链接已隐藏,如需查看请登录或者注册
 

 

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
 

 

相关模型经以下处理后,移植至开发板

最后执行,效果如下视频所示

 

点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表