【树莓派4B】MindSpore lite 部署demo
一个demo,mindspore lite 部署在树莓派4B ubuntu22.04中,为后续操作开个门!

环境
- 开发环境:wsl-ubuntu22.04分发版
- 部署环境:树莓派4B,操作系统为ubuntu22.04
- mindspore lite版本:mindspore-lite-2.4.1-linux-aarch64.tar.gz
- demo模型:mnist手写数字识别
步骤
1. 准备交叉编译环境
- 安装交叉编译器
sudo apt install gcc-aarch64-linux-gnu
# 验证是否安装成功
(base) joke@ShineZhang:~/mindspore_deploy_demo_aarch64$ aarch64-linux-gnu-gcc --version
aarch64-linux-gnu-gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- 设置交叉编译环境
# file: toolchain.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
2. 下载demo并交叉编译
- 下载
# 有用的话给个star呗
git clone https://gitee.com/Shine_Zhang/mindspore_aarch64_runtime_demo.git
- 文件结构说明:
.
├── CMakeLists.txt
├── README.md
├── build.sh # 执行编译
├── main.c
├── model
│ └── mnist.ms # mnist模型文件
└── toolchain.cmake # 编译工具链
- 模型文件转换:
MindSpore Lite端侧模型转换
执行交叉编译:
chomd +x build.sh
./build.sh
3. 部署环境配置
- 准备环境
编译后目录如下:
.
├── CMakeLists.txt
├── README.md
├── bin
│ └── mindspore_mnist_demo # es
├── build
│ ├── CMakeCache.txt
│ ├── CMakeFiles
│ ├── Makefile
│ ├── bin
│ ├── cmake_install.cmake
│ ├── mindspore-lite-2.4.1-linux-aarch64
│ ├── mindspore-lite-2.4.1-linux-aarch64.tar.gz
│ ├── mindspore_mnist_demo
│ └── mindspore_quick_start_c
├── build.sh
├── include
│ ├── api
│ ├── c_api
│ ├── dataset
│ ├── ir
│ ├── kernel_interface.h
│ ├── mindapi
│ ├── registry
│ ├── schema
│ └── third_party
├── lib
│ ├── libmindspore-lite.so # es
│ ├── libmindspore_glog.so -> /home/mindspore_deploy_demo_aarch64/lib/libmindspore_glog.so.0
│ └── libmindspore_glog.so.0 # es
├── main.c
├── model
│ └── mnist.ms # es
└── toolchain.cmake
将目录中标记es的文件拷贝至要部署的树莓派4B中
- 配置运行环境
将libmindspore-lite.so和libmindspore_glog.so.0拷贝至/usr/local/lib
# 编辑~/.bashrc 增加环境变量
vim ~/.bashrc# ~/.bashrc 末尾增加以下内容后保存:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH# 重新加载当前用户的 ~/.bashrc 配置文件
source ~/.bashrc# 检验动态库是否加载成功
joke in ~ λ ldd mindspore_mnist_demolinux-vdso.so.1 (0x0000ffffb580b000)libmindspore-lite.so => /usr/local/lib/libmindspore-lite.so (0x0000ffffb5040000)libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffffb4e90000)/lib/ld-linux-aarch64.so.1 (0x0000ffffb57d2000)libmindspore_glog.so.0 => /usr/local/lib/libmindspore_glog.so.0 (0x0000ffffb4e30000)libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000ffffb4e10000)libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000ffffb4be0000)libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffffb4b40000)libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffffb4b10000)libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffffb4af0000)
4. 执行demo
joke in ~ λ ./mindspore_mnist_demo mnist.ms
----------------------------------------------------------
Model Inputs (1):Input 0:Name: serving_default_keras_tensor:0Shape: [1, 28, 28]Data Type: 43Data Size: 3136 bytesModel Outputs (1):Output 0:Name: StatefulPartitionedCall_1:0Shape: [-1]Data Type: 43Data Size: 0 bytesEstimated Model Size: 3136 bytes
----------------------------------------------------------
inputs: Tensor 1:
Tensor shape: [1, 28, 28]
outputs: Tensor 1:
Tensor shape: [1, 10]
outputs[1]: -5.782
outputs[2]: 0.069
outputs[3]: 1.802
outputs[4]: -12.207
outputs[5]: -7.331
outputs[6]: -18.879
outputs[7]: 6.847
outputs[8]: -5.083
outputs[9]: -4.575
Predicted digit: 7 # 预测结果为数字 7相关文章:
【树莓派4B】MindSpore lite 部署demo
一个demo,mindspore lite 部署在树莓派4B ubuntu22.04中,为后续操作开个门! 环境 开发环境:wsl-ubuntu22.04分发版部署环境:树莓派4B,操作系统为ubuntu22.04mindspore lite版本:mindspore-li…...
Idea汉化插件Datagrip汉化插件
汉化插件 Chinese (Simplified) Language Pack / 中文语言包 插件地址 安装完了之后,如果还不是中文的怎么办 需要手动设置 Seetings -> Appearance & Behavior -> System Settings -> Language and Region -> Language 修改为 [ Chi…...
精彩回顾|Cocos开发者沙龙长沙站
长沙-不一样 Cocos 开发者沙龙长沙站,完全超出了我们的预期,一开始还担心没有太多人报名。最后发现,全场爆满,座无虚席。 <<< 左右滑动见更多 >>> 许多小伙伴曾反馈过,在以往的开发者沙龙回顾文章中…...
算法日记 49 day 图论(A*算法)
这算是算法的最后一篇了,原本A*之前还有一些相关的最短路径算法的,比如dijkstra的堆优化,SPFA等等,但是有些我没看懂,就不写了,用A*做个结尾。 题目:骑士的攻击 127. 骑士的攻击 (kamacoder.co…...
服务器批量清理redis keys,无法适用客户端必须直连的情况
在 Redis 中,批量清理指定模式的键(例如 memberCardData:*)可以通过多种方法来实现。需要注意的是,Redis 的命令执行是单线程的,因此对大量键进行操作时可能会阻塞服务器。以下是几种常见的方法: shell K…...
Grafana配置告警规则推送企微机器人服务器资源告警
前提 已经部署Grafana,并且dashboard接入数据 大屏编号地址:Node Exporter Full | Grafana Labs 创建企微机器人 备注:群里若有第三方外部人员不能创建 机器人创建完成,记录下来Webhook地址 Grafana配置告警消息模板 {{ define &…...
数字货币金融研究,深度学习虚拟币价格预测 数据集 市值top20 (2014年—2024年)
比特币,以太坊,狗狗币,屎币,模因币 声明 此数据集的目的是 用于数字货币金融研究,深度学习虚拟币价格预测 1、数据集 2014年——2024年 市值top20 比特币,以太坊,屎币,狗狗币交易…...
druid.properties图标是齿轮
一、问题 在IDEA中, druid.properties图标是齿轮 二、原因 2023版本开始,IDEA新的UI的问题 三、解决方法 1、点击右上角的齿轮图标 2、点击Settings 3、Appearance & Behavior---->New UI---->取消勾选“Enable new UI”---->右下角OK 4…...
【图像处理】利用numpy、opencv、python实现车牌检测
| 利用opencv实现车牌检测 整体流程涉及5个部分 图像通道转换对比度增强边缘连接二值化边界区域裁剪 图像通道转换 将RGB图像转换为HSV图像,仅保留V通道。V通道表示颜色的明暗,常用于图像对比度拉伸、直方图均衡化等流程。 原图像: V通…...
ModuleNotFoundError: No module named ‘torchvision.transforms.functional_tensor‘
问题: 运行代码时,报错: … File “/home/xzy/anaconda3/envs/groundinggpt/lib/python3.10/site-packages/pytorchvideo/transforms/augmix.py”, line 6, in from pytorchvideo.transforms.augmentations import ( File “/home/xzy/anac…...
Android无障碍服务监听实现自动点击按钮
原理: 通过监听窗口改变事件,监听目标应用,通过视图ID(或文本、或描述、或其他如坐标之类的)找到目标视图,使用无障碍动作点击方法点击它 无障碍服务实现: 1、写一个自己的无障碍服务继承Acc…...
Deveco Studio首次编译项目初始化失败
编译项目失败 Ohpm install失败的时候重新使用管理者打开程序 build init 初始化失败遇到了以下报错信息 Installing pnpm8.13.1... npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.npm.taobao.org/pnpm failed, r…...
Redis缓存应用场景【Redis场景上篇】
文章目录 1.缓存基础2.缓存异步场景1.缓存穿透2.缓存击穿3.缓存雪崩总结 3.缓存一致性 1.缓存基础 Redis由于性能高效,通常可以做数据库存储的缓存。一般而言,缓存分为服务端缓存和客户端缓存。缓存有以下三种模式: Cache Aside(…...
线程与进程基础
文章目录 前言一、 线程与进程1.1 什么是线程与进程?1.2 并发与并行1.3 同步调用与异步调用1.4 为什么要使用多线程? 前言 在学习juc前,需要先对进程和线程之间整体有一个认知。我们之前或多或少接触过,一些特别高大上的概念&…...
electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题
electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题 这篇文章是接我cocos专栏的上一篇文章继续写的,我上一篇文章写的是 cocos 开发触摸屏项目,需要嵌入一个网页用来展示,最后通过 electron 打包成 exe 程序,而且网页里面…...
OpenCV的简单练习
1、读取一张彩色图像并将其转换为灰度图。 import matplotlib.pyplot as pltimg plt.imread("./flower.png") # 灰度化 img_gray img[:,:,0]*0.299 img[:,:,1]*0.587 img[:,:,2]*0.114plt.subplot(121) plt.imshow(img) plt.subplot(122) plt.imshow(img_gray,c…...
JAVA:建造者模式(Builder Pattern)的技术指南
1、简述 建造者模式(Builder Pattern)是一种创建型设计模式,它通过将对象的构造过程与表示分离,使得相同的构造过程可以创建不同的表示。建造者模式尤其适用于创建复杂对象的场景。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 本文将详细介绍建…...
12.11函数 结构体 多文件编译
1.脑图 定义一个数组,用来存放从终端输入的5个学生的信息【学生的信息包含学生的姓名、年纪、性别、成绩】 1>封装函数 录入5个学生信息 2>封装函数 显示学生信息 3>封装函数 删除第几个学生信息,删除后调用显示学生信息函数 显示 4> 封…...
Debezium系列之:使用Debezium采集oceanbase数据库
Debezium系列之:使用Debezium采集oceanbase数据库 一、oceanbase数据库二、安装OceanBase三、安装oblogproxy四、基于Docker的简单采集案例五、生产实际应用案例Debezium 是一个开源的分布式平台,用于监控数据库变化和捕捉数据变动事件,并以事件流的形式导出到各种消费者。D…...
VMware虚拟机 Ubuntu没有共享文件夹的问题
在虚拟机的Ubuntu系统中,共享文件目录存放在 mnt/hgfs 下面,但是我安装完系统并添加共享文件后发现,在mnt下连/hgfs目录都没有。 注意:使用共享文件目录需要已安装VMtools工具。 添加共享文件目录 一:在超级用户下 可…...
重构学术文档翻译:PDFMathTranslate如何突破格式保留与公式处理技术瓶颈
重构学术文档翻译:PDFMathTranslate如何突破格式保留与公式处理技术瓶颈 【免费下载链接】PDFMathTranslate PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI…...
终极Splide轮播组件路线图:从4.1.4到未来版本的升级指南与特性前瞻
终极Splide轮播组件路线图:从4.1.4到未来版本的升级指南与特性前瞻 【免费下载链接】splide Splide is a lightweight, flexible and accessible slider/carousel written in TypeScript. No dependencies, no Lighthouse errors. 项目地址: https://gitcode.com/…...
BRV自定义扩展开发:从零构建专属列表组件的终极教程
BRV自定义扩展开发:从零构建专属列表组件的终极教程 【免费下载链接】BRV [永久维护] Android 快速构建 RecyclerView, 比 BRVAH 更简单强大 项目地址: https://gitcode.com/gh_mirrors/br/BRV 想要在Android开发中快速构建功能强大的RecyclerView列表吗&…...
如何通过QtScrcpy实现跨平台键鼠映射?4个技术要点让PC精准操控Android游戏
如何通过QtScrcpy实现跨平台键鼠映射?4个技术要点让PC精准操控Android游戏 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy QtScrcpy作为一款开源的Android设备投屏与控制…...
如何利用垂直搜索引擎优化提升排名_网站评论优化对 SEO 排名的影响是什么
如何利用垂直搜索引擎优化提升排名 在当今互联网时代,搜索引擎优化(SEO)已经成为网站提升流量和吸引目标用户的重要手段。而在SEO策略中,垂直搜索引擎优化是一个逐渐被重视的方面。与通用搜索引擎不同,垂直搜索引擎&a…...
使用Visio绘制Graphormer模型系统架构图与数据流图
使用Visio绘制Graphormer模型系统架构图与数据流图 1. 引言 作为一名系统架构师或技术文档工程师,能够清晰表达复杂系统的架构设计是一项核心技能。当我们需要展示基于Graphormer的分子属性预测平台时,一张精心设计的系统架构图往往比千言万语更有说服…...
EVA-02模型Ubuntu服务器部署全流程详解
EVA-02模型Ubuntu服务器部署全流程详解 最近有不少朋友在问,怎么把EVA-02这个强大的多模态模型部署到自己的Ubuntu服务器上。确实,相比于在本地电脑上跑,放到服务器上能获得更稳定的性能和更长的运行时间,特别适合用来做API服务或…...
OpenClaw安全防护指南:Qwen3-32B私有化部署下的权限管控策略
OpenClaw安全防护指南:Qwen3-32B私有化部署下的权限管控策略 1. 为什么需要关注OpenClaw的安全防护? 当我第一次把OpenClaw部署在自己的开发机上时,那种兴奋感至今记忆犹新——一个能帮我自动处理文件、整理资料、甚至写代码的AI助手&#…...
CPU fallback方案:Qwen3-4B-Instruct-2507低算力环境适配
CPU fallback方案:Qwen3-4B-Instruct-2507低算力环境适配 1. 引言:当大模型遇上小算力 想象一下,你拿到一个功能强大的新模型,参数高达40亿,支持26万字的超长上下文,指令理解和逻辑推理能力都大幅提升。你…...
次元画室结合Transformer架构:提升图像生成连贯性与细节
次元画室结合Transformer架构:提升图像生成连贯性与细节 你有没有遇到过这样的情况?想用AI画师创作一个漫画故事,第一格主角穿着红色外套,到了第三格,外套颜色莫名其妙变成了蓝色,或者背景里的建筑细节对不…...
