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:$PYTHONPATHif [ $# -eq 1 ];thenjupyter lab --ip $1 --allow-root --no-browser
elsejupyter 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做模型的測試也是很可以的,可惜了我這邊內存不太夠,沒辦法做太多太消耗內存的東西。總之就是學習起來毫不費勁,官方文檔一應俱全。

跑這個模型時挺快的,只是不知道跑上多路流然后實時檢測的情況如何,還有待驗證!在邊緣計算設備中性能還是足夠的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44856.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44856.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44856.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Facebook 開源計算機視覺 (CV) 和 增強現實 (AR) 框架 Ocean

Ocean 是一個獨立于平臺的框架,支持所有主要操作系統,包括 iOS、Android、Quest、macOS、Windows 和 Linux。它旨在徹底改變計算機視覺和混合現實應用程序的開發。 Ocean 主要使用 C 編寫,包括計算機視覺、幾何、媒體處理、網絡和渲染&#x…

python中的pickle模塊和json模塊

目錄 pickle: Python 中的pickle 是一個內置模塊,用于序列化和反序列化 Python 對象結構。序列化是將對象轉換成字節流的過程,這樣對象就可以被存儲到文件中或者通過網絡傳輸。反序列化則是將這些字節流重新轉換成原始對象的過程。 json: json模塊是 …

實現多層感知機

目錄 多層感知機: 介紹: 代碼實現: 運行結果: 問題答疑: 線性變換與非線性變換 參數含義 為什么清除梯度? 反向傳播的作用 為什么更新權重? 多層感知機: 介紹:…

taocms 3.0.1 本地文件泄露漏洞(CVE-2021-44983)

前言 CVE-2021-44983 是一個影響 taoCMS 3.0.1 的遠程代碼執行(RCE)漏洞。該漏洞允許攻擊者通過上傳惡意文件并在服務器上執行任意代碼來利用這一安全缺陷。 漏洞描述 taoCMS 是一個內容管理系統(CMS),用于創建和管…

持續集成的自動化之旅:Gradle在CI中的配置秘籍

持續集成的自動化之旅:Gradle在CI中的配置秘籍 引言 持續集成(Continuous Integration, CI)是現代軟件開發中的一項基礎實踐,它通過自動化的構建和測試流程來提高軟件質量和開發效率。Gradle作為一個靈活的構建工具,…

【眼疾病識別】圖像識別+深度學習技術+人工智能+卷積神經網絡算法+計算機課設+Python+TensorFlow

一、項目介紹 眼疾識別系統,使用Python作為主要編程語言進行開發,基于深度學習等技術使用TensorFlow搭建ResNet50卷積神經網絡算法,通過對眼疾圖片4種數據集進行訓練(‘白內障’, ‘糖尿病性視網膜病變’, ‘青光眼’, ‘正常’&…

jenkins系列-05-jenkins構建golang程序

下載go1.20.2.linux-arm64.tar.gz 并存放到jenkins home目錄: 寫一個golang demo程序:靜態文件服務器:https://gitee.com/jelex/jenkins_golang package mainimport ("encoding/base64""flag""fmt""lo…

window下安裝go環境

一、go官網下載安裝包 官網地址如下:https://golang.google.cn/dl/ 選擇對應系統的安裝包,這里是window系統,可以選擇zip包,下載完解壓就可以使用 二、配置環境變量 這里的截圖配置以win11為例 我的文件解壓目錄是 D:\Software…

力扣32.最長有效括號

力扣32.最長有效括號 class Solution {public:int longestValidParentheses(string s) {int n s.size();int res0;int start -1;vector<int> st;for(int i0;i<n;i){if(s[i] ()st.push_back(i);else{//前面沒有( , (開啟下一段)下一段的開始更新為當前下標if(st.emp…

機器學習和人工智能在農業的應用——案例分析

作者主頁: 知孤云出岫 目錄 引言機器學習和人工智能在農業的應用1. 精準農業作物健康監測土壤分析 2. 作物產量預測3. 農業機器人自動化播種和收割智能灌溉 4. 農業市場分析價格預測需求預測 機器學習和人工智能帶來的變革1. 提高生產效率2. 降低生產成本3. 提升作物產量和質量…

Elsaticsearch java基本操作

索引 基本操作 package com.orchids.elasticsearch.web.controller;import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONUtil; import com.orchids.elasticsearch.web.po.User; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOpe…

探索JT808協議在車輛遠程視頻監控系統中的應用

一、部標JT808協議概述 隨著物聯網技術的迅猛發展&#xff0c;智能交通系統&#xff08;ITS&#xff09;已成為現代交通領域的重要組成部分。其中&#xff0c;車輛遠程監控與管理技術作為ITS的核心技術之一&#xff0c;對于提升交通管理效率、保障道路安全具有重要意義。 JT8…

TensorBoard ,PIL 和 OpenCV 在深度學習中的應用

重要工具介紹 TensorBoard&#xff1a; 是一個TensorFlow提供的強大工具&#xff0c;用于可視化和理解深度學習模型的訓練過程和結果。下面我將介紹TensorBoard的相關知識和使用方法。 TensorBoard 簡介 TensorBoard是TensorFlow提供的一個可視化工具&#xff0c;用于&#x…

尚品匯-(十七)

目錄&#xff1a; &#xff08;1&#xff09;獲取價格信息 &#xff08;2&#xff09;獲取銷售信息 前面的表&#xff1a; &#xff08;1&#xff09;獲取價格信息 繼續編寫接口&#xff1a;ManagerService /*** 獲取sku價格* param skuId* return*/ BigDecimal getSkuPrice…

『 Linux 』匿名管道應用 - 簡易進程池

文章目錄 池化技術進程池框架及基本思路進程的描述組織管道通信建立的潛在問題 任務的描述與組織子進程讀取管道信息控制子進程進程退出及資源回收 池化技術 池化技術是一種編程技巧,一般用于優化資源的分配與復用; 當一種資源需要被使用時這意味著這個資源可能會被進行多次使…

mqtt.fx連接阿里云

本文主要是記述一下如何使用mqtt.fx連接在阿里云上創建好的MQTT服務。 1 根據MQTT填寫對應端口即可 找到設備信息&#xff0c;里面有MQTT連接參數 2 使用物模型通信Topic&#xff0c;注意這里的post說設備上報&#xff0c;那也就是意味著云端訂閱post&#xff1b;set則意味著設…

【輕松拿捏】Java-final關鍵字(面試)

目錄 1. 定義和基本用法 回答要點&#xff1a; 示例回答&#xff1a; 2. final 變量 回答要點&#xff1a; 示例回答&#xff1a; 3. final 方法 回答要點&#xff1a; 示例回答&#xff1a; 4. final 類 回答要點&#xff1a; 示例回答&#xff1a; 5. final 關鍵…

搭建hadoop+spark完全分布式集群環境

目錄 一、集群規劃 二、更改主機名 三、建立主機名和ip的映射 四、關閉防火墻(master,slave1,slave2) 五、配置ssh免密碼登錄 六、安裝JDK 七、hadoop之hdfs安裝與配置 1)解壓Hadoop 2)修改hadoop-env.sh 3)修改 core-site.xml 4)修改hdfs-site.xml 5) 修改s…

【進階篇-Day9:JAVA中單列集合Collection、List、ArrayList、LinkedList的介紹】

目錄 1、集合的介紹1.1 概念1.2 集合的分類 2、單列集合&#xff1a;Collection2.1 Collection的使用2.2 集合的通用遍歷方式2.2.1 迭代器遍歷&#xff1a;&#xff08;1&#xff09;例子&#xff1a;&#xff08;2&#xff09;迭代器遍歷的原理&#xff1a;&#xff08;3&…

排序——交換排序

在上篇文章我們詳細介紹了排序的概念與插入排序&#xff0c;大家可以通過下面這個鏈接去看&#xff1a; 排序的概念及插入排序 這篇文章就介紹一下一種排序方式&#xff1a;交換排序。 一&#xff0c;交換排序 基本思想&#xff1a;兩兩比較&#xff0c;如果發生逆序則交換…