0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于瑞芯微RK3576的resnet50训练部署教程

广州灵眸科技有限公司 2025-09-10 11:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Resnet50简介

ResNet50网络是2015年由微软实验室的何恺明提出,获得ILSVRC2015图像分类竞赛第一名。在ResNet网络提出之前,传统的卷积神经网络都是将一系列的卷积层和池化层堆叠得到的,但当网络堆叠到一定深度时,就会出现退化问题。残差网络的特点是容易优化,并且能够通过增加相当的深度来提高准确率。其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题。

本教程基于图像分类算法ResNet50的训练和部署到EASY-EAI-Orin-nano(RK3576)进行说明。

wKgZO2jA5ReAEOYVAAdga5FMGUQ793.png

2.准备数据集

2.1数据集下载

本教程以车辆分类算法为例,数据集的百度网盘下载链接为:

https://pan.baidu.com/s/1BhSF1PklkTQHg4vWGiRKow?pwd=1234提取码:1234

解压完成后得到以下两个文件夹:

wKgZO2jA5S2AXI9-AAShYaCwOMs401.png

打开可以看到一共10类汽车:

wKgZO2jA5TqAY-vIAAtpnetYLms294.png

类别名称与类别索引关系如下所示:

类别名称

类别索引号

SUV

0

BUS

1

family sedan

2

fire engine

3

heavy truck

4

jeep

5

mini bus

6

racing car

7

taxi

8

truck

9

3.ResNet50图像分类训练

3.1训练源码下载

训练源码的百度网盘下载链接为:

https://pan.baidu.com/s/1-jDyeJEkBqEt0gbnMOdhPw?pwd=1234 提取码:1234

得到下图所示目录:

wKgZPGjA5VGAH3SGAAcd4UZh2o8349.png

把数据集解压到当前目录:

wKgZPGjA5V-AQZA_AAjoqrgPPNY253.png

3.2训练模型

进入anconda的pyTorch环境,切换到训练源码目录执行以下指令开始训练:

python train.py

执行结果如下图所示:

wKgZPGjA5Y2ACFDzAA0akCkz520668.png

训练结束后test loss结果如下所示:

wKgZPGjA5ZyAYvU7AA_-gDQe7fU522.png

训练结束后test accuracy结果如下所示:

wKgZPGjA5a2AW3wpABAOmWS56lU054.png

生成的最优模型如下所示:

wKgZO2jA5b6Adv3eAAVjhmmb2g0023.png

3.3在PC端测试模型

在训练源码目录执行以下指令,测试模型(生成模型名称不一致则修改predict.py脚本):

python predict.py

wKgZO2jA60-AW4sHAAVa0VX2H3o800.png

结果类别索引号为1——BUS,测试结果正确。

3.4pth模型转换为onnx模型

执行以下指令把pytorch的pth模型转换onxx模型:

python pth_to_onnx.py

wKgZO2jA646AfuoCAArPYdzRFJ4673.png

生成ONNX模型如下所示:

wKgZPGjA65yACJZhAAWO34CCtQc086.png

4. rknn-toolkit模型转换

4.1 rknn-toolkit模型转换环境搭建

onnx模型需要转换为rknn模型才能在EASY-EAI-Orin-nano运行,所以需要先搭建rknn-toolkit模型转换工具的环境。当然tensorflow、tensroflow lite、caffe、darknet等也是通过类似的方法进行模型转换,只是本教程onnx为例。

4.1.1概述

模型转换环境搭建流程如下所示:

wKgZPGjA67CAd9C8AAK-5-pbKpg904.png

4.1.2下载模型转换工具

为了保证模型转换工具顺利运行,请下载网盘里“06.AI算法开发/01.rknn-toolkit2模型转换工具/rknn-toolkit2-v2.3.0/docker/rknn-toolkit2-v2.3.0-cp38-docker.tar.gz”

网盘下载链接:https://pan.baidu.com/s/1J86chdq1klKFnpCO1RCcEA?pwd=1234提取码:1234

4.4.3把工具移到ubuntu20.04

把下载完成的docker镜像移到我司的虚拟机ubuntu20.04的rknn-toolkit2目录,如下图所示:

wKgZO2jA68CAEI9lAAgQwmXlEZA886.png

4.1.4运行模型转换工具环境

在该目录打开终端

wKgZPGjA682AeZ-HAAqj94u2J7M003.png

执行以下指令加载模型转换工具docker镜像:

docker load --input rknn-toolkit2-v2.3.0-cp38-docker.tar.gz

执行以下指令进入镜像bash环境:

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb rknn-toolkit2:2.3.0-cp38 /bin/bash

现象如下图所示:

wKgZPGjA6_eAXoByAAVjhmAtv9s841.png

输入“python”加载python相关库,尝试加载rknn库,如下图环境测试成功:

wKgZO2frsheAT5xKAACXUmjHnAI825.png

至此,模型转换工具环境搭建完成。

4.2模型转换为RKNN

EASY-EAI-Orin-nano支持.rknn后缀的模型的评估及运行,对于常见的tensorflow、tensroflow lite、caffe、darknet、onnx和Pytorch模型都可以通过我们提供的toolkit工具将其转换至rknn模型,而对于其他框架训练出来的模型,也可以先将其转至onnx模型再转换为rknn模型。模型转换操作流程入下图所示:

wKgZO2fs82CAHe7_AADxwNhuUHo225.png

4.2.1模型转换Demo下载

下载百度网盘链接:https://pan.baidu.com/s/1ZrTRTFqcJpYz5hNl4Fk-Jw 提取码:1234。把resnet50_model_convert.tar.bz2quant_dataset.zip解压到虚拟机,如下图所示:

wKgZO2jA7A-AZDsPAACCnjvHc_k941.png

4.2.2进入模型转换工具docker环境

执行以下指令把工作区域映射进docker镜像,其中/home/developer/rknn-toolkit2/model_convert为工作区域,/test为映射到docker镜像,/dev/bus/usb:/dev/bus/usb为映射usb到docker镜像:

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/developer/rknn-toolkit2/model_convert:/test rknn-toolkit2:2.3.0-cp38 /bin/bash

执行成功如下图所示:

wKgZPGjA7A6AbojxAABz4mTRMDk824.png

4.2.3模型转换Demo目录介绍

模型转换测试Demo由resnet50_model_convertquant_dataset组成。resnet50_model_convert存放软件脚本,quant_dataset存放量化模型所需的数据。如下图所示:

wKgZPGjA7A-AEYFGAACoEUQ1cUQ660.png

resnet50_model_convert文件夹存放以下内容,如下图所示:

wKgZO2jA7A6AeaPDAACVQfz7694447.png

4.2.4生成量化图片列表

在docker环境切换到模型转换工作目录:

cd /test/resnet50_model_convert

如下图所示:

wKgZO2gB-kyAWNQ9AAB9-WP6FUA420.png

执行gen_list.py生成量化图片列表:

python gen_list.py

命令行现象如下图所示:

wKgZO2gB-kyAcciEAACb7G1bFOU508.png

生成“量化图片列表”如下文件夹所示:

wKgZPGjA7BCAFlHtAACISgTCYrA690.png

4.2.5onnx模型转换为rknn模型

rknn_convert.py脚本默认进行int8量化操作,脚本代码清单如下所示:

import os import urllib import traceback import time import sys import numpy as np import cv2 from rknn.api import RKNN ONNX_MODEL = '10class_ResNet50.onnx' RKNN_MODEL = './10class_ResNet50_rk3576.rknn' DATASET = './pic_path.txt' QUANTIZE_ON = True if __name__ == '__main__': # Create RKNN object rknn = RKNN(verbose=False) if not os.path.exists(ONNX_MODEL): print('model not exist') exit(-1) # pre-process config print('--> Config model') rknn.config(mean_values=[[123.67, 116.28,103.53]], std_values=[[58.395, 57.12, 57.375]], target_platform = 'rk3576') print('done') # Load ONNX model print('--> Loading model') ret = rknn.load_onnx(model=ONNX_MODEL) if ret != 0: print('Load failed!') exit(ret) print('done') # Build model print('--> Building model') ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET) if ret != 0: print('Build resnet failed!') exit(ret) print('done') # Export RKNN model print('--> Export RKNN model') ret = rknn.export_rknn(RKNN_MODEL) if ret != 0: print('Export resnet failed!') exit(ret) print('done') rknn.release()

把onnx模型10class_ResNet50.onnx放到resnet50_model_convert目录,并执行rknn_convert.py脚本进行模型转换:

python rknn_convert.py

生成模型如下图所示,此模型可以在rknn-toolkit环境和EASY EAI Orin nano环境运行:

wKgZO2jA7BCAT0TRAAIj9x9y_mo577.png

5.ResNet50图像分类部署

5.1模型部署示例介绍

本小节展示ResNet50模型的在EASY EAI Orin nano的部署过程,该模型仅经过简单训练供示例使用,不保证模型精度。

5.2源码下载以及例程编译

下载ResNet50 C Demo示例文件。

百度网盘链接: (https://pan.baidu.com/s/1fW0EUqEc-DxNPQiYfq6c4w?pwd=1234 提取码:1234)。

下载程序包移至ubuntu环境后,执行以下指令解压:

tar -xvf resnet50_classification_C_demo.tar.bz2

下载解压后如下图所示:

wKgZO2jA7BCAFn-9AACWBYDh3ZI093.png

通过adb接口连接EASY-EAI-Orin-nano

接下来需要通过adb把源码传输到板卡上,先切换目录然后执行以下指令:

cd ~/rknn-toolkit2 adb push resnet50_classification_C_demo /userdata

wKgZPGjA7BCAFW95AADDdbTqQZc504.png

登录到板子切换到例程目录执行编译操作:

adb shell cd /userdata/resnet50_classification_C_demo chmod 777 build.sh ./build.sh

wKgZPGjA7BGANiq7AAJGioqMeX4463.png

5.3 在开发板执行ResNet50图像分类算法

编译成功后切换到可执行程序目录,如下所示:

cd /userdata/resnet50_classification_C_demo/resnet_classification_demo_release/

运行例程命令如下所示:

chmod 777resnet_classification_demo ./resnet_classification_demo

执行结果如下图所示,算法执行时间约为9.7ms:

wKgZPGjA7BCALoOFAAFM9O9H60w834.png

至此,ResNet50图像分类例程已成功在板卡运行。

6.资料下载

资料名称

链接

算法教程完整源码包

https://pan.baidu.com/s/1guL3LGXOe2_wGxlfzQb_YA?pwd=1234

提取码:1234

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式开发
    +关注

    关注

    18

    文章

    1102

    浏览量

    49831
  • 瑞芯微
    +关注

    关注

    27

    文章

    699

    浏览量

    53454
  • resnet
    +关注

    关注

    0

    文章

    14

    浏览量

    3375
  • rk3576
    +关注

    关注

    1

    文章

    228

    浏览量

    1368
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK3588与RK3576技术参数详解

    电子发烧友网报道(文/李弯弯)不久前表示,2025年上半年AIoT市场延续蓬勃发展趋势,因应AI在端侧应用发展需求,公司旗舰产品RK3588、次新产品
    的头像 发表于 09-23 08:20 7815次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK</b>3588与<b class='flag-5'>RK3576</b>技术参数详解

    米尔RK3576实测轻松搞定三屏八摄像头

    RK3576参数强劲RK3576推出的一款高性能AIoT处理器,这款芯片以其卓越的计算能力、多屏幕支持、强大的视频编解码能力和高效的
    发表于 01-17 11:33

    国产开发板的端侧AI测评-基于米尔RK3576

    ,国产自主可控必须搞起来。那与非网本期内容就跟自主可控强关联——评测一款基于国产SoC的板卡,由米尔电子推出的RK3576开发板(MYD-LR
    发表于 02-14 16:29

    适配多种系统,米尔RK3576核心板解锁多样化应用

    米尔电子发布的基于 RK3576 核心板和开发板,具备高性能数据处理能力、领先的AI智能分析功能、多样化的显示与操作体验以及强大的扩展性与兼容性,适用于多种应用场景。目前米尔电子
    发表于 05-23 16:07

    Onenet云网关方案应用--基于米尔RK3576开发板

    本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于RK3576开发板)的Onenet云网关应用方案测试。 摘自优秀创作者-小手
    发表于 06-06 16:54

    基于米尔RK3576开发板的Qwen2-VL-3B模型NPU多模态部署评测

    关键词: RK3576、NPU(神经网络处理器)、端侧小语言模型(SLM)、多模态 LLM、边缘 AI 部署、开发板、RKLLM随着
    发表于 08-29 18:08

    【作品合集】米尔RK3576开发板测评

    米尔RK3576开发板测评作品合集 产品介绍: RK3576一款面向AI市场推出的高性能处理器,它配备了四核Cortex-A72和
    发表于 09-11 10:19

    RK3576|触觉智能:开启科技新篇章

    ,创新不止步!”——全新芯片RK3576即将震撼登场。指引科技风潮,创造未来无限可能!这款芯片在
    的头像 发表于 03-21 08:31 1994次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3576</b>|触觉智能:开启科技新篇章

    有奖丨米尔 RK3576开发板免费试用

    米尔与合作发布的新品基于RK3576应用
    的头像 发表于 11-12 01:00 1247次阅读
    有奖丨米尔 <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3576</b>开发板免费试用

    追加名额丨米尔RK3576开发板有奖试用

    米尔与合作发布的新品基于RK3576应用
    的头像 发表于 11-22 01:00 1025次阅读
    追加名额丨米尔<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3576</b>开发板有奖试用

    基于RV1126开发板的resnet50训练部署教程

    本教程基于图像分类算法ResNet50训练部署到EASY-EAI-Nano(RV1126)进行说明
    的头像 发表于 04-18 15:07 918次阅读
    基于RV1126开发板的<b class='flag-5'>resnet50</b><b class='flag-5'>训练</b><b class='flag-5'>部署</b>教程

    RK3576主板YNH-536-规格书

    RK3576主板YNH-536-V1
    发表于 05-19 09:51 4次下载

    揭秘算力协处理器,RK3576/RK3588强大算力搭档

    算力协处理器-Gongga1(简称“贡嘎”),是针对旗舰芯片平台
    的头像 发表于 07-17 10:00 824次阅读
    揭秘<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>算力协处理器,<b class='flag-5'>RK3576</b>/<b class='flag-5'>RK</b>3588强大算力搭档

    RK3576RK3576S有什么区别,性能参数配置与型号差异解析

    第二代8nm高性能AIOT平台RK3576家族再添新成员-RK3576S,先说结论:相较主型号的R
    的头像 发表于 08-14 23:57 1736次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3576</b>与<b class='flag-5'>RK3576</b>S有什么区别,性能参数配置与型号差异解析

    迅为如何在RK3576部署YOLOv5;基于RK3576构建智能门禁系统

    迅为如何在RK3576开发板上部署YOLOv5;基于RK3576构建智能门禁系统
    的头像 发表于 11-25 14:06 959次阅读
    迅为如何在<b class='flag-5'>RK3576</b>上<b class='flag-5'>部署</b>YOLOv5;基于<b class='flag-5'>RK3576</b>构建智能门禁系统