RK3568笔记二十五:RetinaFace人脸检测训练部署

news2024/9/20 9:35:54

若该文为原创文章,转载请注明原文出处。

一、介绍

      Retinaface是来自insightFace的又一力作,基于one-stage的人脸检测网络。RetinaFace是在RetinaNet基础上引申出来的人脸检测框架,所以大致结构和RetinaNet非常像。

    官方提供两种主干特征提取网络:MobilenetV1-0.25和Resnet,本文以MobilenetV1-0.25为模型部署训练。目前 RetinaFace 可称得上是目前最强的开源人脸检测算法。

二、mobilenetV1-0.25的网络结构

mobilenetV1-0.25是mobilenetV1-1通道数压缩为原来1/4的网络,网络结构如下:

具体查看:GitHub - biubug6/Pytorch_Retinaface: Retinaface get 80.99% in widerface hard val using mobilenet0.25.

三、环境

1、训练平台:AutoDL

2、硬件:ATK-DLR3568

四、搭建

1、创建虚拟环境

conda create -n Retinaface_env python=3.8

2、激活

conda activate Retinaface_env

3、下载源码

git clone https://github.com/biubug6/Pytorch_Retinaface.git

4、安装环境

1、ptyorch安裝

根据官方Previous PyTorch Versions | PyTorch ,选择合适版本。

conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0 -c pytorch

2、安装其他

pip install opencv-python
pip install numpy==1.23.5

numpy版本需要对应,其他的没特殊。

3、下载数据

https://drive.google.com/open?id=11UGV3nbVv1x9IC--_tK3Uxf7hA6rlbsS

国内需要梯子才能下载

4、下载预训练模型和训练模型

Retinaface_model_v2_免费高速下载|百度网盘-分享无限制 (baidu.com)

密码:fstq

不想训练模型,可以直接使用网盘上的模型

该模型可以如下所示:

  ./weights/
      mobilenet0.25_Final.pth
      mobilenetV1X0.25_pretrain.tar
      Resnet50_Final.pth

五、训练

使用 WIDER FACE 训练模型:

CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --network resnet50 
CUDA_VISIBLE_DEVICES=0 python train.py --network mobile0.25

这里使用的是mobile0.25网络训练

执行

CUDA_VISIBLE_DEVICES=0 python train.py --network mobile0.25

六、评估

1、生成 txt 文件

python test_widerface.py --trained_model weight_file --network mobile0.25

2、评估 txt 结果

cd ./widerface_evaluate
python setup.py build_ext --inplace
python evaluation.py

七、转成ONNX模型

python convert_to_onnx.py -m ./weights/mobilenet0.25_Final.pth --network mobile0.25 --long_side 320 

转换时出错:

File "convert_to_onnx.py", line 83, in <module>
    inputs = torch.randn(1, 3, args.long_side, args.long_side).to(device)
TypeError: randn(): argument 'size' must be tuple of ints, but found element of type str at pos 3
原因是randn输入的不是size int类型,直接修改成320,重新执行

重新执行,导出正常

转成rknn使用的是rknn-toolkit2 v1.5版本,唤醒根据正点原子手册自行安装。

8、转成RKNN模型

1、下载rknn_model_zoo

https://github.com/airockchip/rknn_model_zoo

把转化好的onnx文件拷贝到 model目录下。

转换格式如下:

python convert.py <onnx_model> <TARGET_PLATFORM> <dtype(optional)> <output_rknn_path(optional)>

使用的平台是RK3568,执行下面命令转换

python convert.py ../model/RetinaFace_mobile320.onnx rk3568

模型需要替换成自己的。

9、部署测试

1、Python Demo Test

 测试格式

python RetinaFace.py --model_path <rknn_model> --target <TARGET_PLATFORM>

对应RK3568

python RetinaFace.py --model_path ../model/xx.onnx --target rk3568

2、板载测试

1、修改GCC_COMPILER

export GCC_COMPILER=/opt/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu

修改成自己的路径

2、编译

./build-linux.sh  -t rk3568 -a aarch64 -d RetinaFace

3、运行

把编译后的执行文件通过adb或tftp上传到板子

运行下面命令测试

export LD_LIBRARY_PATH=./lib
./rknn_retinaface_demo model/RetinaFace.rknn model/test.jpg

注意:尝试搜索 librga.so 的位置,如果在 lib 文件夹中找不到 librga.so,请将其添加到LD_LIBRARY_PATH。 使用以下命令将其添加到LD_LIBRARY_PATH。

export LD_LIBRARY_PATH=./lib:<LOCATION_LIBRGA>

如有侵权,或需要完整代码,请及时联系博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1686096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4月手机行业线上市场销售数据分析

政府对智能手机行业的支持政策&#xff0c;如5G推广&#xff0c;以及相关的产业政策&#xff0c;都在一定程度上推动了智能手机市场的发展&#xff0c;再加上AI应用的推广和全球科技迅猛发展&#xff0c;中国手机市场在2024年迎来了恢复性增长。 据鲸参谋数据统计&#xff0c;…

鸟击防治设备 | 机场专用声光定向驱鸟系统分析

飞机与鸟类相撞&#xff0c;导致飞机受损&#xff0c;鸟类死亡&#xff0c;这被称作“鸟击事故”。全球范围内&#xff0c;每年都会发生多起鸟击事件&#xff0c;而大部分的鸟击都发生在飞机起降或低空飞行的阶段。因此&#xff0c;机场需要驱鸟、防鸟&#xff0c;确保鸟类远离…

Unity 直线间隔放置物体

直线间隔放置物体 设置 间隔距离 和 预制体在Scene中拖动即可按间隔距离实例化物体物体的朝向始终朝向统一方向&#xff0c;并且可以在Scene中拖拽更改 传送门

5.2 Go 参数传递

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

RocketMQ实战教程之RocketMQ安装(含Docker安装,建议收藏!)

RocketMQ实战教程之RocketMQ安装 这里实例采用centos系统天翼云为例,分别采用传统安装以及Docker安装的方式来进行RocketMQ的安装.JDK8我这边已经安装配置好了,这里就不在赘述.直接进入正题: 传统安装包安装 系统要求 64位操作系统&#xff0c;推荐 Linux/Unix/macOS64位 JDK…

el-table-column两种方法处理特殊字段,插槽和函数

问题&#xff1a;后端返回的字段为数字 解决办法&#xff1a; {{ row[item.prop] 1 ? "启用" : "禁用" }} {{ row[item.prop] }} 最终果&#xff1a; 另外&#xff1a;如果多种状态时可用函数 {{ getStatus(row[item.prop]) }} {{ row[item.prop…

java技术:oauth2协议

目录 一、黑马程序员Java进阶教程快速入门Spring Security OAuth2.0认证授权详解 1、oauth服务 WebSecurityConfig TokenConfig AuthorizationServer 改写密码校验逻辑实现类 2、oauth2支持的四种方式&#xff1a; 3、oauth2授权 ResouceServerConfig TokenConfig 4、…

linux---进程通信

提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、匿名管道 进程之间的通信目的一般是来控制另一个进程。也可以用来实现数据的交流&#xff0c;还有资源共享等。 匿名管道原理&#xff1a; &#xff08;铺垫&#xff09;进程之间是具有独立性&…

mysql实战——xtrabackup全量备份/增量备份及恢复

一、测试前准备 mysql数据库 端口3306数据文件目录 /data/mysql/3306/data 安装目录/usr/lcoal/mysql配置文件/etc/my.cnf 创建数据库 testXtra 创建备份目录 备份目录/data/backup/备份恢复数据文件目录/data/mysql/3307/data备份恢复配置文件/etc/my_3307.cnf 二、开始…

宠物医院兽医电子处方管理系统软件操作教程,佳易王兽医处方软件分享

试用超级版宠物医院兽医处方管理系统软件V17.3&#xff0c;软件功能实用&#xff0c;操作简单。试用版免费试用&#xff0c;技术支持可以联系客服。 一、软件下载说明及软件操作教程链接 软件下载请点击最下方官网卡片进入 1、软件下载注意事项 【特别说明&#xff1a;下载的…

比亚迪一4S店着火:浅述烟火识别技术与消防安全预警方案的必要性

据新闻报道&#xff0c;2024年5月16日&#xff0c;福建福州一家比亚迪4S店发生火灾。事发后&#xff0c;当地消防立即调员赶往现场救援&#xff0c;大火导致展厅展车基本烧毁&#xff0c;部分维修车辆受损&#xff0c;没有人员伤亡。 随着汽车市场的不断扩大&#xff0c;4S店作…

web自动化文件上传弹框处理

目录 文件上传介绍文件上传处理Alert 弹窗介绍Alert 弹窗处理 课程目标 掌握文件上传的场景以及文件上传的处理方式。掌握 Alert 弹窗的场景以及 Alert 弹窗的处理方式。 思考 碰到需要上传文件的场景&#xff0c;自动化测试应该如何解决&#xff1f; 文件上传处理 找到文…

linux中的arch命令使用

arch 显示当前主机的硬件架构类型 概要 arch [OPTION]...主要用途 打印机器架构信息&#xff1b;arch 命令输出结果有&#xff1a;i386、i486、i586、alpha、sparc、arm、m68k、mips、ppc、i686等。 选项 --help 显示帮助信息并退出。 --version 显示版本信息并…

华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇

本文作者&#xff1a;郑岩&#xff08;华为云AI变革首席专家&#xff09;全文约3313字&#xff0c;阅读约需8分钟&#xff0c;请仔细看看哦~ 前阵子&#xff0c;我在公司内部发了一篇Sora的科普贴&#xff0c;本来只是个简单的技术总结&#xff0c;但让我意外的是&#xff0c;…

pyqt5与yolov5进行视频检测(一)——登录操作

项目效果展示 一、登录界面 二、主界面 目前在更新中。。。 一、设计 二、登录代码 注意&#xff1a;下面会导入主界面的包&#xff0c;图片资源自己设计一下&#xff0c;密码保存时没设计加密&#xff0c;需要自行设计 main_window主界面下文会设计from main_window impor…

新《体外诊断试剂分类目录》已发布,企业应该如何应对?

除了新版《体外诊断试剂分类目录》的变化外(见&#xff1a;体外诊断试剂分类目录的变与不变)&#xff0c;最值得关心的是&#xff1a;- 2024版《体外诊断试剂分类目录》发布以后&#xff0c;过渡期多久&#xff1f;- 当前分类目录背景下如何管理&#xff1f;- 对在研、已取证、…

编程学习 (C规划) 6 {24_4_14} 六 ( 函数 )

1.函数的概念 C语言中函数就是一个子程序&#xff0c;C语言中的函数就是一个完成某项特定任务的一小段代码&#xff0c;有特殊的写法哥调用方法。 C语言中一般会见到两种函数 &#xff08;1&#xff09;库函数 &#xff08;2&#xff09;自定义函数 2.库函数 其实就是C语…

【MATLAB】基于VMD-SSA-LSTM的回归预测模型

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 基本定义 基于VMD-SSA-LSTM的回归预测模型是一种结合了多种时间序列分析和机器学习技术的综合模型。下面我将分别介绍这三个组成部分的基本原理&#xff0c;并解释它们是如何结合起来进行回归预测的。 变分模态分解&a…

VMware Workstation 虚拟机安装 ubuntu 24.04 server 详细教程 服务器安装图形化界面

1 阿里云下载 ubuntu-releases安装包下载_开源镜像站-阿里云 2 打开vmware,新建虚拟机 3 选择下载的镜像,开始安装 3 光驱这里修改下 4 重新启动&#xff0c;安装图形化界面 #更新软件包列表 sudo apt-get update #安装Ubuntu图形桌面 sudo apt install ubuntu-desktop 5 安…

Helm安装kafka3.7.0无持久化(KRaft 模式集群)

文章目录 2.1 Chart包方式安装kafka集群 5.开始安装2.2 命令行方式安装kafka集群 搭建 Kafka-UI三、kafka集群测试3.1 方式一3.2 方式二 四、kafka集群扩容4.1 方式一4.2 方式二 五、kafka集群删除 参考文档 [Helm实践---安装kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.…