OrangePi AIpro在安防领域的深思和实战(旷视科技CNN模型ShuffleNetV1开发案例测试)

一、前言

公司最近有个项目是安防领域的,主要用在边缘结点,虽然已做成形,但是还是存在一些缺陷,例如:算力问题,开发板的成熟问题,已经各种技术的解决方案落地问题。目前我们集成了很多功能,主要是拉取rtsp等流媒体协议的实时视频流,例如:可以拉取海康相机的rtsp,然后针对这个相机做AI识别以及分析。

Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能 AI 开发板,其搭载了昇腾 AI 处理器,可提供 8TOPS INT8 的计算能力,内存提供了 8GB 和 16GB 两种版本。可以实现图像、视频等多种数据分析与推理计算,可广泛用于教育、机器人、无人机等场景。

今天香橙派AIpro这块板子终于到了,先来探索下在安防领域的应用。

在这里插入图片描述

二、搭建开发环境

梳理这篇文章之前整理了很多篇,这里直接写总结吧,太冗余的废话就不多说了。总结下来,香橙派AIpro的开发环境并没有太复杂的地方,主要是下载好交叉编译工具,配置好环境变量就OK了。

在这里插入图片描述

官网提供了多个下载的资源,在官方工具这个地址中可以下载到交叉编译工具

在这里插入图片描述

还提供了一些额外的辅助工具,远程工具,图片查看工具等:

在这里插入图片描述

下载好,配置环境变量:

 export PATH=$PATH:/你的位置/toolchain/bin/

如果你是windows就加到自己的PATH环境变量中即可,这个就不需要多说了吧。


如何验证安装成功了呢:

1.使用which命令
which aarch64-target-linux-gnu-g++

2.如果能查到说明成功了
/位置/toolchain/bin//aarch64-target-linux-gnu-g++

通过putty的串口连接:

在这里插入图片描述

登录成功:
在这里插入图片描述

三、识别案例

咱们可以参考samples:

(base) HwHiAiUser@orangepiaipro:~$ 
(base) HwHiAiUser@orangepiaipro:~$ cd samples/
(base) HwHiAiUser@orangepiaipro:~/samples$ ls
01-SSD  02-CNNCTC  03-ResNet50  04-HDR  05-CycleGAN  06-Shufflenet  07-FCN  08-Pix2Pix  start_notebook.sh
(base) HwHiAiUser@orangepiaipro:~/samples$ 

可以看到有个启动脚本:

(base) HwHiAiUser@orangepiaipro:~/samples$ cat start_notebook.sh 
. /usr/local/Ascend/ascend-toolkit/set_env.sh
export PYTHONPATH=/usr/local/Ascend/thirdpart/aarch64/acllite:$PYTHONPATH

if [ $# -eq 1 ];then
    jupyter lab --ip $1 --allow-root --no-browser
else
    jupyter lab --ip 127.0.0.1 --allow-root --no-browser
fi

(base) HwHiAiUser@orangepiaipro:~/samples$ 

通过if [ $# -eq 1 ]可以知道,这个脚本可以接收一个IP参数:

在这里插入图片描述

然后把这一串URL复制到浏览器地址栏把127.0.0.1改成自己的IP即可访问:

在这里插入图片描述

访问效果:

在这里插入图片描述

ShuffleNet v1 是由国产旷视科技团队在 2018 年提出的一种计算高效的CNN模型,其和 MobileNet、SqueezeNet 等一样主要是想应用在移动端。

ShuffleNet 的设计目标也是如何利用有限的计算资源来达到最好的模型精度,这需要很好地在速度和精度之间做平衡。目前移动端CNN模型主要设计思路主要是两个方面:模型结构设计和模型压缩。ShuffleNet 和MobileNet 一样属于前者,都是通过设计更高效和轻量化的网络结构来实现模型变小和变快,而不是对一个训练好的大模型做压缩或者迁移。

ShuffleNet 的核心是采用了两种操作:pointwise group convolution 和 channel shuffle,这在保持精度的同时大大降低了模型的计算量。ShuffleNet 的核心设计理念是对不同的 channels 进行 shuffle 来解决 group convolution 带来的弊端。

对这个比较感兴趣,看到有这个案例就研究下跑个试试:

进入到相应的目06-Shufflenet目录:
打开main_shufflenet.ipynb文件,可以打开在线编辑。
在这里插入图片描述

跑自己的模型的话,可以使用香橙派提供的模型转换工具把模型转换一下:

atc --output_type=FP32 --input_format=NCHW--output="./shufflenet" --soc_version=Ascend310B4 --framework=1 --save_original_model=false --model="./shufflenet.air" --precision_mode=allow_fp32_to_fp16

参数含义:

  * --output_type:指定网络输出数据类型。
  * --input_format:输入Tensor的内存排列方式。
  * --output:输出的模型文件路径。
  * --soc_version:昇腾AI处理器型号,此处为"Ascend310B4"。
  * --framework:原始框架类型,  0: Caffe, 1: MindSpore, 3: TensorFlow, 5: ONNX。
  * --save_original_model:转换后是否保留原始模型文件。
  * --model:原始模型文件路径。
  * --precision_mode:选择算子精度模式。

官方的案例中使用python写了4部分的代码:

在这里插入图片描述

运行后就可以得到该模型跑后的结果:

在这里插入图片描述

从提供的日志中可以看到,整个流程涉及初始化、资源释放和模型加载阶段的日志记录。以下是各个阶段的分析:

初始化资源阶段 (init resource stage)

  • Init resource success: 表示初始化资源阶段成功完成。
  • Init model resource start…: 开始初始化模型资源。

初始化模型资源阶段 (Init model resource start…)

  • [AclLiteModel] create model output dataset:
    • malloc output 0, size 40: 为模型输出分配了大小为40的内存。
    • Create model output dataset success: 成功创建了模型输出数据集。
  • Init model resource success: 模型资源初始化成功。

释放资源阶段 (acl resource release all resource)

  • AclLiteModel release source success: 释放模型资源成功。
  • acl resource release stream: 释放ACL流资源。
  • acl resource release context: 释放ACL上下文资源。
  • Reset acl device 0: 重置ACL设备0。
  • Release acl resource success: 成功释放ACL资源。

该算法逻辑梳理:

1. 初始化资源:

  • 成功完成基础资源的初始化。

2. 初始化模型资源:

  • 成功开始并完成模型资源的初始化。
  • 为模型输出分配内存并成功创建输出数据集。

3. 释放资源:

  • 成功释放了所有模型相关资源、ACL流资源和ACL上下文资源。
  • 重置了设备并确认所有ACL资源释放成功。

这些日志信息表明整个流程从初始化到释放资源均顺利完成,没有出现错误或警告。

四、总结

整个过程分为三个主要阶段:初始化资源、初始化模型资源和释放资源。每个阶段的日志显示了操作的开始和结束,所有操作均成功完成。

香橙派Aipro提供的案例完美的执行成功了,学习起来很适合企业开发者用户。往外继续延伸,如果单纯的使用香橙派Aipro做模型的测试也是很可以的,可惜了我这边内存不太够,没办法做太多太消耗内存的东西。总之就是学习起来毫不费劲,官方文档一应俱全。

跑这个模型时挺快的,只是不知道跑上多路流然后实时检测的情况如何,还有待验证!在边缘计算设备中性能还是足够的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis where标签内嵌foreach标签查询报错‘缺失右括号‘或‘命令未正确结束‘

MyBatis <where>标签内嵌<foreach>标签查询报错’缺失右括号’或’命令未正确结束’ <where>标签内嵌<foreach>标签 截取一段脱敏xml&#xff0c;写明大概意思 <select id"queryLogByIds" resultMap"BaseResultMap">SELE…

巧用 VScode 网页版 IDE 搭建个人笔记知识库!

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 巧用 VScode 网页版 IDE 搭建个人笔记知识库! 描述&#xff1a;最近自己在腾讯云轻量云服务器中部署了一个使用在线 VScode 搭建部署的个人Markdown在线笔记&#xff0c;考虑到在线 VScode 支持终…

昇思25天学习打卡营第7天 | 基于MindSpore的GPT2文本摘要

本次打卡基于gpt2的文本摘要 数据加载及预处理 from mindnlp.utils import http_get# download dataset url https://download.mindspore.cn/toolkits/mindnlp/dataset/text_generation/nlpcc2017/train_with_summ.txt path http_get(url, ./)from mindspore.dataset impor…

代码检查规则语言CodeNavi中代码语句的节点和节点属性

本文分享至华为云社区《CodeNavi 中代码语句的节点和节点属性》。作者&#xff1a;Uncle_Tom 1. 前期回顾 《寻找适合编写静态分析规则的语言》 根据代码检查中的一些痛点&#xff0c;提出了希望寻找一种适合编写静态分析规则的语言。 可以满足用户对代码检查不断增加的各种需求…

c语言中的字符串函数

strstr函数 函数介绍 strstr 用于在一个字符串中查找另一个字符串的首次出现。 我们来看这个函数的参数名字&#xff1a;haysytack&#xff08;干草堆&#xff09;needle&#xff08;针&#xff09;,这个其实就是外国的一句谚语&#xff1a;在干草堆中找一根针&#xff0c;就…

Type-C PD芯片:引领充电技术的新纪元

随着科技的飞速发展&#xff0c;人们对电子设备的依赖日益加深&#xff0c;对充电速度、效率和安全性的要求也越来越高。在这样的背景下&#xff0c;Type-C PD&#xff08;Power Delivery&#xff09;芯片应运而生&#xff0c;以其高效、安全、智能的特点&#xff0c;成为了充电…

SAP PP学习笔记26 - User Status(用户状态)的实例,订单分割中的重要概念 成本收集器,Confirmation(报工)的概述

上面两章讲了生产订单的创建以及生产订单的相关内容。 SAP PP学习笔记24 - 生产订单&#xff08;制造指图&#xff09;的创建_sap 工程外注-CSDN博客 SAP PP学习笔记25 - 生产订单的状态管理(System Status(系统状态)/User Status(用户状态)),物料的可用性检查&#xff0c;生…

nssm的下载和使用

nssm&#xff08;Non-Sucking Service Manager&#xff09;是一个用于在Windows系统上管理服务的工具。它允许你将.exe文件和.bat文件转换为Windows服务&#xff0c;并提供了一些功能来管理这些服务。 下载和安装 首先&#xff0c;你需要从nssm官方网站&#xff08;https://n…

STM32智能停车场管理系统教程

目录 引言环境准备智能停车场管理系统基础代码实现&#xff1a;实现智能停车场管理系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;停车场管理与优化问题解决方案与优化收尾与总结 1. 引言 智能停车场管…

echarts 实现水利计算模型-雨量,流量,时间分割线

需求背景解决效果ISQQW代码地址index.vue 需求背景 实现水利计算模型-雨量&#xff0c;流量&#xff0c;时间分割线 解决效果 ISQQW代码地址 链接 index.vue <!--/** * author: liuk * date: 2024/06/13 * describe: 洪水预报结果图表 */--> <template><di…

MySQl高级篇-事务、锁机制、MVCC

存储引擎的选择 在选择存储引擎时&#xff0c;应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统&#xff0c;还可以根据实际情况选择多种存储引擎进行组合。 InnoDB&#xff1a;是Mysql的默认存储引擎&#xff0c;支持事务、外键。如果应用对事务的完整性有比较…

MMLab-dataset_analysis

数据分析工具 这里写目录标题 数据分析工具dataset_analysis.py数据可视化分析 benchmark.pybrowse_coco_json.pybrowse_dataset.pyOptimize_anchors mmyolo、mmsegmentation等提供了数据集分析工具 dataset_analysis.py 数据采用coco格式数据 根据配置文件分析全部数据类型或…

【开源】开源数据库工具推荐

Mysql开源工具推荐 dbeaver下载网速太慢了&#xff0c;这么好用的开源工具&#xff0c;可以从镜像站中下载&#xff1a; 下载地址&#xff1a; https://mirrors.nju.edu.cn/github-release/dbeaver/dbeaver/24.1.1/ Redis开源工具推荐 好看好用&#xff0c;UI真是做的很不…

PE文件(九)导出表

引入导出表 Win32下的一个PE文件&#xff0c;是由多个PE文件组成。比如通过OD打开一个Ipmsg.exe&#xff0c;查看模块M&#xff0c;会发现模块有一个ipmsg.exe文件和多个动态链接库.dll文件。 当一个exe文件通过使用动态链接库.dll的方式导出某.dll文件某函数进行使用时&#…

Qt+ESP32+SQLite 智能大棚

环境简介 硬件环境 ESP32、光照传感器、温湿度传感器、继电器、蜂鸣器 基本工作流程 上位机先运行&#xff0c;下位机启动后尝试连接上位机连接成功后定时上报传感器数据到上位机&#xff0c;上位机将信息进行处理展示判断下位机传感器数据&#xff0c;如果超过设置的阈值&a…

Puppeteer动态代理实战:提升数据抓取效率

引言 Puppeteer是由Google Chrome团队开发的一个Node.js库&#xff0c;用于控制Chrome或Chromium浏览器。它提供了高级API&#xff0c;可以进行网页自动化操作&#xff0c;包括导航、屏幕截图、生成PDF、捕获网络活动等。在本文中&#xff0c;我们将重点介绍如何使用Puppeteer…

项目部署笔记

1、安全组需开放&#xff08;如果不开放配置nginx也访问不到&#xff09; 2、域名解析配置IP(子域名也需配置IP&#xff0c;IP地址可以不同) 3、如果出现图片获其他的文件找不到的情况请仔细检查一下路径是否正确 4、服务器nginx配置SSL证书后启动报错&#xff1a; nginx: […

嘉立创EDA隐藏地线或者

https://prodocs.lceda.cn/cn/pcb/side-panel-left-net/#%E9%A3%9E%E7%BA%BF

Ceph集群部署(基于ceph-deploy)

目录 部署Ceph集群的方法 Ceph生产环境推荐 部署Ceph实验&#xff08;基于ceph-deploy&#xff09; 一、准备工作 二、环境准备 1.关闭selinux与防火墙 2.修改主机名并且配置hosts解析映射 3.admin管理节点配置ssh免密登录node节点 4.安装常用软件和依赖包 5.配置时间…

807.力扣每日一题7/14 Java(执行用时分布击败100%)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 解题思路 解题过程 时间复杂度 空间复杂度 Code 解题思路 首先…