冬天的木鱼

  • 2025-01-21
  • 发表了日志: 嵌入式工程师AI挑战营RV1106人脸识别+retinaface/Yolov5识别效果[视频]

  • 发表了主题帖: 嵌入式工程师AI挑战营RV1106人脸识别+retinaface/Yolov5识别效果[视频]

    选几个录制的小视频,看看效果 有些地方没有优化,直接用代码跑一下,效果仅供参考  

  • 发表了主题帖: 嵌入式工程师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 https://github.com/rockchip-linux/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 https://github.com/rockchip-linux/rknn-toolkit2.git 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 https://github.com/bubbliiiing/retinaface-pytorch.git 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 https://github.com/bubbliiiing/facenet-pytorch.git 补充,图片内是在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 https://github.com/airockchip/yolov5.git 图片中仍处于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 https://github.com/LuckfoxTECH/luckfox_pico_rknn_example.git   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 https://github.com/airockchip/rknn_model_zoo.git     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     相关模型经以下处理后,移植至开发板 最后执行,效果如下视频所示  

  • 2024-12-24
  • 回复了主题帖: 【MCXN947开发板测评】RT-Thread系统烧录

    freebsder 发表于 2024-12-20 16:56 nxp官方支持rt-thread吗?还是rt社区自己移植的? rt社区自己移植的,官方好像没有这个信息的

  • 2024-12-20
  • 发表了主题帖: 【MCXN947开发板测评】RT-Thread系统烧录

    【MCXN947开发板测评】RT-Thread系统烧录 参考RT-Thread系统文档,实现源码下载及系统烧录,解决编译过程中问题 Step1. 研究板卡信息 研究板卡硬件信息及接口,插电,启动板卡 FRDM-MCXN947 是NXP官方基于 MCXN947 器件的低成本评估板。MCXN947 器件集成了双 Arm Cortex-M33 微控制器和神经处理单元 (NPU)。该板还具有 P3T1755DP I3C 温度传感器、TJA1057GTK/3Z CAN PHY、以太网PHY、SDHC电路(卡槽为DNP)、RGB LED、触摸板、高速USB电路、按钮等 MCU-Link 调试器电路。该板提供 Arduino 扩展、PMOD拓展,MicroBus总线拓展。该板还支持摄像头模块和 NXP 低成本 LCD 模块 PAR-LCD-S035。板载 MCU-Link 调试器基于 LPC55S69 MCU。 开发板外观如下图所示:   https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/quick-start/frdm_mcxn947/quick-start?id=%e7%bb%a7%e7%bb%ad%e5%ad%a6%e4%b9%a0     常用 板载资源 如下:   启动板卡后,点亮指示灯     Step2. MDK开发环境 安装MDK-5.41,安装方法可以参考 Keil MDK安装 详细细节如下链接所示: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/quick-start/keil/keil   Step3. 获取RT-Thread 5.1.0源码 https://github.com/RT-Thread/rt-thread/releases下载源码,在 Assets 中下载压缩包获取最新稳定版代码,本次使用v5.1.0版本。   RT-Thread-5.1.0源码如下所示     文件结构: Step4. 编译源代码 进入到 rt-thread\bsp\nxp\mcxn\frdm-mcxn947 文件夹中,双击 project.uvprojx 文件,打开 MDK5 工程。按照下图说明,点击相关按钮 下图为具体操作效果 这个显示默认状态是C <default>,解决方案是将Language C: 选c99,图蓝色部分 第一次编译,提示包错误,缺少rt_vsnprintf.c文件 检索网络,下载rt-vsnprintf_full-1.0.0.zip软件包,解压缩并安装到指定位置 再次编译错误解决 Step5. 烧录系统至开发板 Step6. 重启板卡 点击Reset按钮,重启板卡 6.1 串口读数 使用串口读取相关参数,设置波特率115200,停止位1,数据位8和校验位None等参数,实现串口数据读取 6.2 板卡状态 板卡红灯变成了绿灯,呈现周期性闪亮  

  • 发表了日志: 【MCXN947开发板测评】RT-Thread系统烧录

  • 2024-12-17
  • 发表了日志: 嵌入式工程师AI挑战营RV1106人脸识别+板卡烧录系统(0)

  • 发表了主题帖: 嵌入式工程师AI挑战营RV1106人脸识别+板卡烧录系统(0)

    嵌入式工程师AI挑战营RV1106人脸识别+板卡烧录系统(0) 1. 板卡外观特征,可以明显看到芯片上RV1106G3标识,按照下图所示,进行摄像头的连接   结合Luckfox wiki教程,获取板卡硬件特征 https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-RV1106/Luckfox-Pico-Pro-Max/Luckfox-Pico-quick-start 在点亮板卡的基础上,进行镜像烧录。   Step1. 安装DriverAssitant瑞芯微驱动助手v5.12版本: Step2. 镜像烧录 Step2.1 选择SD卡版本 首先使用SD Card Formatter将SD卡格式化 然后,使用烧录工件软件,选中芯片RV1106型号,点击OK 按照wiki的官方流程执行如下操作: SD卡烧录仅适用于 Windows 环境下,下载固件库方法: ① 将 SD 卡装在读卡器并连接到电脑,选择 SD 卡工具。 ② 在 USB 磁盘下会显示 SD 卡大小,如果未显示重新插拔读卡器。 ③ 选择 SD卡启动。 ④ 导入启动文件。(注意:启动文件不包括update.img) ⑤点击创建 SD 卡。 这个是我具体操作及结果:重点是把update.img给取消掉 SD卡烧录系统成功   Step2.2 后来发现SD卡刷系统没有SPI FLASH刷机快捷,就放弃了该方法,使用SPI NAND Flash进行烧录系统。 首先,LuckFox Pico Max开发板选择RV1106.   按照wiki方法进行操作: LuckFox Pico Max 在 Windows下载固件库方法: ① 按住 BOOT 键后连接电脑后,松开 BOOT 键,瑞芯微刷机工具就会显示 MaskRom 设备。 ② 加载固件的存放目录,重载 env 文件,勾选所有项。 ③ 点击下载。 按照上图流程进行操作,本人操作结果如下: 点击下载按钮,实现SPI NAND Flash烧录成功: Step3. 配置静态IP LuckFox Pico Max的USB虚拟网卡具有静态IP地址为172.32.0.93。使用前需要设置RNDIS虚拟网口: 3.1 Windows 安全中心—>防火墙和网络保护—>关闭防火墙 3.2 配置 RNDIS 网卡的静态IP,打开设置—>高级网络设置—>更改适配器选项 3.3 网卡一般是类似这样的名字Remote NDIS based nternet Sharing Device,右键属性 3.4 双击 internet 协议版本(TCP/IPv4),IPV4地址设置为 172.32.0.100,避免和设备地址冲突。 注意:需要把Internet协议版本4(TCP/IPv4)前框给选中: 执行后如下图所示: Step4. 使用Windows PowerShell访问板卡: 连接:ssh root@172.32.0.93 账号:root 密码:luckfox 静态IP地址:172.32.0.93 输入密码luckfox,系统显示登录成功: Step4. 使用adb连接板卡 后续需要使用luckfox-config配置,然后测试了adb连接 按照官方文档,执行如下操作: 4.1 下载 ADB 安装包,解压即可使用(戳我下载)。 4.2 右键我的电脑属性—>高级系统设置—>环境变量。 4.3 系统变量—>编辑—>将adb解压路径新建进去。 4.4 保存环境变量 如果系统变量Path中信息太多,可以添加至用户变量Path路径下,只需要系统能够找到相关可执行文件即可。 4.5 执行adb指令 ssh root@172.32.0.93 按Win+R快捷键输入cmd, 打开windows终端,在终端输入adb命令,查看adb相关信息: 仅有一个设备 adb shell 查看adb设备信息:adb devices。通过插拔重新执行查询指令以确认需要连接的设备(如果未识别设备尝试更换Type-c线解决)   使用adb -s XXX shell登录到开发板 Step5. 执行luckfox-config,启动图形化配置界面 点击1,点击回车,进入高级选项配置界面  进入Compatible Devices -> CSI 界面,选中 enable 使能,选中 disable 禁用 选中CSI配置,确保CSI使能 如果有其他 I2C4 引脚被使用,无法配置 CSI ,防止 CSI 配置的使能和禁用影响 I2C4 正在运行的任务。 注意: CSI 配置需要重启后才能生效   进入userdata文件夹,检查是否有rkipc.ini文件 Step6. 使用Windows的VLC播放器,访问开发板摄像头媒体流。 点击媒体==>打开网络串流==>网络,输入rtsp://172.32.0.93/live/0 实时媒体流还可以,图像质量还是可以的,除了响应有点慢,个人觉得其他没啥大的问题。          

  • 2024-12-16
  • 发表了主题帖: 嵌入式工程师AI挑战营RV1106人脸识别+InsightFace简单应用测试(1)

     嵌入式工程师AI挑战营RV1106人脸识别+InsightFace简单应用测试(1) Step1. 在Anaconda3环境下安装InsightFace 使用pip install -U insightface指令安装包及依赖 等待指令操作结束 提示出现错误,分析是依赖版本产生冲突 安装1.24.4版本的numpy。其他方法也进行了测试,但这个1.24.4版本更好解决问题 这个numba是版本问题,就没有解决。 重新测试安装一下,显示没有问题 另一种方案是使用whl文件安装,没有测试 https://pan.baidu.com/link/zhihu/7thmzNuShoiyV2QGhmNv12w2QTVlFDTQUK12==#list/path=%2F 其中,cp310代表Python3.10,cp311代表Python3.11 直接安装whl文件也可以实现insightface安装   Step2 安装onnxruntime 使用pip install onnxruntime指令,如果有gpu,使用 pip install onnruntime-gpu 使用简单示例程序测试安装软件效果 运行程序: 搜索网络发现onnx版本1.17.0,版本产生冲突。选择安装1.16.1版本 再测试程序 数据有效果。 使用官方程序 图片没显示出来,搜了一下,代码有点问题 将insightface/app文件夹下face_analysis.py中第84行和88行的np.int改为int Step3. 测试效果 使用官方程序,效果如下 Step4. 使用电脑摄像头 使用笔记本摄像头测试,编写测试程序:   提示如下错误 安装opencv-python 成功调用笔记本摄像头 下一步,将两者结合起来,实现对摄像头的人脸识别

  • 发表了日志: 嵌入式工程师AI挑战营RV1106人脸识别+InsightFace简单应用测试(1)

  • 2024-12-03
  • 回复了主题帖: 测评入围名单:NXP 边缘AI FRDM-MCXN947开发板

    个人信息无误,确认可以完成测评分享计划

  • 2024-11-22
  • 回复了主题帖: 入围名单公布:嵌入式工程师AI挑战营(进阶)的挑战者们,领取板卡啦

    个人信息已确认,领取板卡,可继续完成任务。

  • 2024-11-11
  • 回复了主题帖: 嵌入式工程师AI挑战营(进阶):在RV1106部署InsightFace算法的多人实时人脸识别实战

     -申请理由 1. 基本思路 1.1 简述了解的InsightFace: InsightFace算法是一种用于人脸分析和识别任务的深度学习模型,主要侧重于人脸识别和人脸验证。其是一个用于2D和3D人脸分析的集成Python库,实现了多种先进的人脸识别、人脸检测和人脸对齐算法,并针对训练和部署进行了优化。 1.2 部署InsightFace在RV1106开发板 Step1. 获取一个带有摄像头的RV1106开发板; Step2. 熟悉SDK。下载SDK,解压并查看其目录结构。 Step3. ‌交叉编译‌:使用Pico SDK进行交叉编译。安装LuckFoxPicoSDK,设置环境变量,确保cmake版本大于3.15。 Step4. 部署InsightFace算法‌:在RV1106上部署InsightFace算法,实现多人的实时人脸识别。 Step5. ‌测试和调试‌:部署完成后,进行测试和调试,确保算法在RV1106上正常运行,实现多人的实时人脸识别功能‌   2. 具体应用 2.1 复杂场景下多人实时人脸识别 尝试使用家庭场景内多人脸实时识别场景,时间允许的情况下,使用会议场景内多人脸识别来进行算法和模型的测试和验证

最近访客

< 1/2 >

统计信息

已有35人来访过

  • 芯积分:40
  • 好友:--
  • 主题:7
  • 回复:5

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言