【 香橙派 AIpro评测】烧系统运行部署LLMS大模型跑开源yolov5物体检测并体验Jupyter Lab AI 应用样例(新手入门)

文章目录

    • 一、引言
      • ⭐1.1下载镜像烧系统
      • ⭐1.2开发板初始化系统配置远程登陆
        • 💖 远程ssh
        • 💖查看ubuntu桌面
        • 💖 远程向日葵
    • 二、部署LLMS大模型&yolov5物体检测
      • ⭐2.1 快速启动LLMS大模型
        • 💖拉取代码
        • 💖下载mode数据
        • 💖启动模型对话
      • ⭐2.2yolov5图片物体检测
    • 三、体验 内置AI 应用样例
      • ⭐3.1运行 jupyterLab
          • 💖进入sample 启动jupyterLab
      • ⭐3.2打开Jupyter Lab页面
          • 💖界面操作
      • ⭐3.3 释放内存
          • 💖 关闭样例
      • ⭐3.4运行目标检测样例
      • ⭐3.5运行图像曝光增强样例
    • 四、总结

一、引言

在这里插入图片描述

大家好,我是yma16,在收到香橙派 AIpro 开发版之后开始动手实操,本期分享 【 香橙派 AIpro评测】烧系统运行部署LLMS大模型跑开源yolov5物体检测并体验Jupyter Lab AI 应用样例(新手入门)

香橙派 AIpro

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

开发版图解

前期的准备工作如下

⭐1.1下载镜像烧系统

官方下载镜像:
http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-AIpro.html
下载unbuntu系统
unbuntu-select

官方的下载烧录镜像软件
https://etcher.balena.io/#download-etcher
下载昇腾开发一键制卡工具
点击下载

build
选择镜像、选择挂载的内存卡,等待约10分钟(3.0接口)
make-unbuntu

⭐1.2开发板初始化系统配置远程登陆

将烧好的unbuntu卡放入sd card槽
正面
在这里插入图片描述

反面
在这里插入图片描述
输入密码 (操作手册有密码:Mind@123)
open
远程ssh配置

sudo vi /etc/ssh/sshd_config
#增加以下配置允许通过ssh登录#PermitRootLogin prohibit-password
PermitRootLogin yes#修改完成后需要重启ssh服务命令如下
sudo service ssh restart

修改root密码

sudo passwd root

验证看root密码

💖 远程ssh

通过热点查看连接设备名称是 orangepi ai的ip
ip-ui

输入指令 查看ip地址

ip addr

切换网络会更改ip
ssh 用户名@ip
输入密码
连接 香橙派 AIpro,连接成功!
ssh

💖查看ubuntu桌面

安装的是ubuntu桌面的系统,进入ubuntu 桌面
unbutu

查看磁盘

df -h

df-h

目录空间
dev/root29G
tempfs3.7G+1.5G
💖 远程向日葵

下载umo的版本即可

SUN-remote

二、部署LLMS大模型&yolov5物体检测

使用开源项目ChatGLM3 ManualReset
在gitee查找32G以内的开源大模型
项目地址:https://gitee.com/wan-zutao/chatglm3-manual-reset

可以gitee搜索,找到ChatGLM3 ManualReset该项目,基于香橙派AIpro部署ChatGLM3-6B大语言模型
在这里插入图片描述

⭐2.1 快速启动LLMS大模型

💖拉取代码

创建chatglm/inference目录拉取该仓库的所有代码

cd /
mkdir -p  /chatglm/inference
git clone https://gitee.com/wan-zutao/chatglm3-manual-reset.git chatglm
cd chatglm/inference
💖下载mode数据

运行 脚本下载model数据,中途网络中断可以删除 mode 和 token 目录 重新下载

bash download.sh

拉取仓库过程运行的过程,下载内容超过6G数据量,过程比较慢长
run
在这里插入图片描述

💖启动模型对话

python 运行main脚本启动
main脚本调用chatglm.om(6.3G),响应有点慢

python3 main.py

打印出项目的可以访问地址
在这里插入图片描述
访问即可和大模型对话
在这里插入图片描述
在这里插入图片描述

⭐2.2yolov5图片物体检测

YOLOv5是一种高效的目标检测算法,具有快速、准确、轻量级的特点。
yolov5项目地址:https://github.com/ultralytics/yolov5
拉取开源项目并安装依赖
在这里插入图片描述
脚本运行的数据:(运行大约4.7ms,两张图片)
Fusing layers…
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients, 16.4 GFLOPs
image 1/2 /root/yolov5_demo/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, 657.6ms
image 2/2 /root/yolov5_demo/yolov5/data/images/zidane.jpg: 384x640 2 persons, 2 ties, 511.0ms
Speed: 4.7ms pre-process, 584.3ms inference, 14.8ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs/detect/exp
运行截图:
在这里插入图片描述

识别图片结果,生成目录位置为 runs/detect/exp
在这里插入图片描述

三、体验 内置AI 应用样例

香橙派 AIpro中预装了 Jupyter Lab 软件。Jupyter Lab 软件是一个基于 web
的交互式开发环境,集成了代码编辑器、终端、文件管理器等功能,使得开发者可以在一个界面中完成各种任务。并且我们在镜像中也预置了一些可以在Jupyter Lab 软件中运行的 AI 应用样例。这些样例都是使用 Python 编写的,并调用了 Python 版本的AscendCL 编程接口

⭐3.1运行 jupyterLab

💖进入sample 启动jupyterLab

进入目录运行sh

cd ~
cd samples
./start_nontebook.sh

在这里插入图片描述

在这里插入图片描述

⭐3.2打开Jupyter Lab页面

💖界面操作

左侧是ai体验的实例,点击进入目录下的ipynb后缀文件会执行python实例,markdown是可执行的,酷

在这里插入图片描述

⭐3.3 释放内存

💖 关闭样例

选择kernel下的shut down allkernets,即可关闭所有运行的样例,避免空间不足
在这里插入图片描述

⭐3.4运行目标检测样例

运动目标检测样例
park-demo
样例代码

import osimport time
import argparseimport matplotlib.pyplot as plt
from PIL import Image
import numpy as npfrom acllite_model import AclLiteModel as Model
from acllite_resource import AclLiteResource as AclResource
# om模型和图片的位置
MODEL_PATH = './cnnctc.om'
IMAGE_PATH = './predict.png'# 初始化acl资源
acl_resource = AclResource()
acl_resource.init()#导入本地om模型
print('load model....')
model = Model(MODEL_PATH)
print('load model finished....')# 文本与数据编码
class CTCLabelConverter():def __init__(self, character):dict_character = list(character)self.dict = {}for i, char in enumerate(dict_character):self.dict[char] = i + 1self.character = ['[blank]'] + dict_characterself.dict['[blank]'] = 0#将文本转换为数字编码def encode(self, text):length = [len(s) for s in text]text = ''.join(text)text = [self.dict[char] for char in text]return np.array(text), np.array(length)# 将数字编码转换为文本def decode(self, text_index, length):texts = []index = 0for l in length:t = text_index[index:index + l]char_list = []for i in range(l):if t[i] != self.dict['[blank]'] and (not (i > 0 and t[i - 1] == t[i])):char_list.append(self.character[t[i]])text = ''.join(char_list)texts.append(text)index += lreturn texts

运行时间8ms左右:输出parking文字和图片内容一致,符合预期
run-time

⭐3.5运行图像曝光增强样例

选择04-HDR 的demo样例
run-img定义资源管理类

import sys
import cv2
import numpy as np
import os
import time
import matplotlib.pyplot as plt
import aclimport acllite_utils as utils
import constants as constants
from acllite_model import AclLiteModel
from acllite_resource import resource_list
class AclLiteResource:"""AclLiteResource类"""def __init__(self, device_id=0):self.device_id = device_idself.context = Noneself.stream = Noneself.run_mode = Nonedef init(self):"""初始化资源"""print("init resource stage:")ret = acl.init() # acl初始化ret = acl.rt.set_device(self.device_id) # 指定运算的deviceutils.check_ret("acl.rt.set_device", ret)self.context, ret = acl.rt.create_context(self.device_id) # 创建contextutils.check_ret("acl.rt.create_context", ret)self.stream, ret = acl.rt.create_stream() # 创建streamutils.check_ret("acl.rt.create_stream", ret)self.run_mode, ret = acl.rt.get_run_mode() # 获取运行模式utils.check_ret("acl.rt.get_run_mode", ret)print("Init resource success")def __del__(self):print("acl resource release all resource")resource_list.destroy()if self.stream:print("acl resource release stream")acl.rt.destroy_stream(self.stream) # 销毁streamif self.context:print("acl resource release context")acl.rt.destroy_context(self.context) # 释放contextprint("Reset acl device ", self.device_id)acl.rt.reset_device(self.device_id) # 释放deviceprint("Release acl resource success")

推理功能

path = os.getcwd()
input_w = 512   # 推理输入width
input_h = 512   # 推理输入height
INPUT_DIR = os.path.join(path, 'data/') # 输入路径
OUTPUT_DIR = os.path.join(path, 'out/') # 输出路径def pre_process(dir_name, input_h, input_w):"""预处理"""BGR = cv2.imread(dir_name).astype(np.float32)h = BGR.shape[0]w = BGR.shape[1]# 进行归一化、缩放、颜色转换BGR = BGR / 255.0BGR = cv2.resize(BGR, (input_h, input_w))RGB = cv2.cvtColor(BGR, cv2.COLOR_BGR2RGB)return RGB, h, wdef post_process(input_img, result_list, pic, input_h, input_w):"""后处理"""o_w, o_h = input_img.shape[:2]# 获取推理结果,进行形状变换data = result_list[0].reshape(input_h, input_w, 3)# 进行缩放、颜色转换output = (cv2.resize(data, (o_w, o_h)) * 255.0).astype(np.uint8)output_img = cv2.cvtColor(output, cv2.COLOR_RGB2BGR)# 保存增强后图像file_name = os.path.join(OUTPUT_DIR, pic)cv2.imwrite(file_name, output_img)# 拼接输入图像和增强后图像,返回进行显示BGR_U8 = np.concatenate([input_img, output_img], axis=1)return BGR_U8def main():# 创建推理结果存放路径if not os.path.exists(OUTPUT_DIR):os.mkdir(OUTPUT_DIR)# acl初始化acl_resource = AclLiteResource()acl_resource.init()# 加载模型model_path = os.path.join(path, "model/image_HDR_enhance.om")model = AclLiteModel(model_path)# 遍历数据集进行推理src_dir = os.listdir(INPUT_DIR)for pic in src_dir:if not pic.lower().endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff')):print('it is not a picture, %s, ignore this file and continue,' % pic)continuepic_path = os.path.join(INPUT_DIR, pic)input_img = cv2.imread(pic_path)# 进行预处理RGB_image, o_h, o_w = pre_process(pic_path, input_h, input_w)# 计算推理耗时start_time = time.time()# 执行推理result_list = model.execute([RGB_image, ])end_time = time.time()# 打印推理的图片信息和耗时print('pic:{}'.format(pic))print('pic_size:{}x{}'.format(o_h, o_w))print('time:{}ms'.format(int((end_time - start_time) * 1000)))print('\n')# 进行后处理img_result = post_process(input_img, result_list, pic, input_h, input_w)      # 显示输入图像和增强后图像img_RGB = img_result[:, :, [2, 1, 0]] # RGBplt.axis('off')plt.xticks([])plt.yticks([])plt.imshow(img_RGB)plt.show()

结果

acl resource release all resource
AclLiteModel release source success
acl resource release stream
acl resource release context
Reset acl device  0
Release acl resource success

生成的图像增强效果如下:
消耗时间316ms,响应极快。
在这里插入图片描述

查看生成的out目录下的结果图片,十分清晰

cd out

res-hdr

四、总结

香橙派 AIpro有良好的生态和入门的技术文档,网上也有相关的视频教程,对新人很友好。
http://www.orangepi.cn
应用场景
香橙派 AIpro 开发板因为比较小巧轻量,内部集合Jupyter Lab 页面,非常方便,对于入门人工智能的开发者非常友好。

试用场景也不仅仅局限于本文的操作,还有以下的多个方向等:

  1. 原型开发:开发板是原型开发的理想工具。通过连接传感器、执行器和其他外设,开发人员可以快速验证和迭代他们的想法,并评估其可行性。

  2. 学习和教育:开发板可以作为学生和初学者学习编程和电子技术的工具。它们提供了一个实践的平台,让学习者通过实际操作来理解电子原理和编程概念。

  3. 项目演示:开发板可以用于演示和展示技术项目。无论是在学术会议上还是在公司内部会议上,通过展示实际的硬件和软件成果,可以增强演示和沟通的效果。

  4. 物联网应用:开发板是物联网应用开发的重要工具。它们可以用于构建和测试各种物联网设备和传感器网络。

  5. 自动化控制:开发板可以用于构建自动化控制系统。通过连接和控制传感器和执行器,可以实现各种自动化任务,如智能家居控制、工业自动化等。

香橙派 AIpro的性能体验
散热:开发板的散热性能良好,持续运行8个小时整个板子的温度都比较低。
噪音:开发板的噪音产生主要来自于风扇,开机过程中存在一点噪音,开机之后噪音就降下来了,影响不大。

负载:开发板的内存和cpu的使用情况状态处于健康状态,能够同时处理的任务或数据量。
在这里插入图片描述
烧录系统部署项目过程体验
香橙派AIpro是一款简化了硬件开发过程的智能开发板。它的优势在于用户无需复杂的安装步骤,只需要通过SD卡加载预配置好的镜像系统,插入设备后就能直接登录并开始使用。这种预先装好的系统大大节省了新手入门的时间,尤其是对于网络配置这类细节,不再需要手动设置。

此外,它配备了内置的Jupyter Lab环境,这使得开发者可以直接在界面上编写、运行和测试人工智能应用程序,极大地提高了开发效率。由于其设计简洁易用,即使是不熟悉底层操作的开发者也能快速上手,无论是调试还是比较数据集结果都变得更加直观和高效。

相比传统的开发板,香橙派AIpro凭借其智能化的特点,为开发者提供了一站式解决方案,不仅减少了繁琐的工作环节,而且在性能稳定性以及交互体验上都有着显著提升。这对于那些寻求快速原型制作和便捷开发环境的工程师来说,无疑是一个理想的选择。

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

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

相关文章

C++树(二)【直径,中心】

目录: 树的直径: 树的直径的性质: 性质1:直径的端点一定是叶子节点 性质2:任意点的最长链端点一定是直径端点。 性质3:如果一棵树有多条直径,那么它们必然相交,且有极长连…

.NET MAUI开源架构_1.学习资源分享

最近需要开发Android的App,想预研下使用.NET开源架构.NET MAUI来开发App程序。因此网上搜索了下相关资料,现在把我查询的结果记录下,方便后面学习。 1.官方文档 1.1MAUI官方学习网站 .NET Multi-Platform App UI 文档 - .NET MAUI | Micro…

Python实战MySQL之数据库操作全流程详解

概要 MySQL是一种广泛使用的关系型数据库管理系统,Python可以通过多种方式与MySQL进行交互。本文将详细介绍如何使用Python操作MySQL数据库,包括安装必要的库、连接数据库、执行基本的CRUD(创建、读取、更新、删除)操作,并包含具体的示例代码,帮助全面掌握这一过程。 准…

CodeSouler:AI赋能,编程效率的革命性飞跃!

🔥 功能大揭秘,让你的代码飞起来!🔥 01 添加代码注释 📝 告别繁琐,一键添加精准注释!提升代码清晰度,让后续维护不再是难题。 02 生成单元测试 🧪 智能分析,自…

C1W4.LAB.Vector manipulation+Hash functions and multiplanes

理论课:C1W4.Machine Translation and Document Search 文章目录 Python 中的矢量操作Transforming vectorsExample 1Example 2 Frobenius Norm Hash functions and multiplanesBasic Hash tablesPlanesHash Function with multiple planesRandom PlanesDocument v…

苹果x怎么录屏?手把手教你操作

随着社交媒体和视频平台的兴起,人们越来越习惯于通过视频来分享生活点滴、传播信息。苹果X手机凭借其出色的性能和高清屏幕,成为了许多用户录制屏幕视频的首选设备。可苹果x怎么录屏呢?本文将详细介绍苹果x手机的内置录屏方法,通过…

Blender使用(二)点线面基本操作

Blender使用之点线面 1.编辑模式 tab键进行切换,为了方便菜单调出,可以设置键位映射为拖动时的饼菜单。 设置好后,按住tab键移动鼠标(注意不要点击鼠标),即可弹出编辑菜单。 默认是点模式,在左上角可进行点线面的切换…

【linux高级IO(三)】初识epoll

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 Linux高级IO 1. 前言2. 初识e…

帕金森营养宝典,守护你的健康每一天!

👋 嗨,亲爱的小伙伴们!今天我们来聊聊一个有点“严肃”但超级重要的话题——帕金森患者应该补充哪些营养?🤔 💪 首先,我们要知道,帕金森是一种常见的神经系统疾病,它可能…

自制一个指定容量缓存,并实现最近使用的最后删除

需求 实现一个缓存key-value结构,并设定容量最大值,当put进去的时候,如果超过最大容量,则将最早放进去的删除当get的时候,返回key值,并将key放到后面(表示最近使用过,最后删除&…

mp3音乐剪辑软件大盘点,安利7款小白必备的免费mp3剪辑软件(详解)

mp3现在是最常见的音频格式,无处不在,包括下载音乐、播放播客、保存有声读物等等。因此,拥有一款强大的mp3音乐剪辑软件至关重要。使用mp3剪辑软件,你可以修剪、合并、压缩,甚至转换mp3为其他常见音频格式。所以&#…

openstack设置IP直接登录,不需要加dashboard后缀

openstack 实验环境,openstack-t版,centos2009 修改配置文件 [rootcontroller ~]# vim /WEBROOT /etc/openstack-dashboard/local_settings #将dashboard去掉 WEBROOT /dashboard/ #改为 WEBROOT /[rootcontroller ~]# vim /etc/httpd/conf.d/openst…

智能优化算法之禁忌搜索(Tabu Search, TS)

上图展示的是使用禁忌搜索算法解决电力系统孤岛问题。该问题旨在在发生严重扰动后将电力系统划分为几个不同的孤岛,目标是在将相关发电机放置在同一孤岛中并保持每个孤岛的连通性的同时,最小化所有孤岛的总发电负荷不平衡状态。 禁忌搜索(Ta…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

C++(week11): C++基础 第六章:关联式容器 set、map

文章目录 第六章:关联式容器1.set(1)set的特点(2)set的构造(3)set的查找操作 (set访问元素)(4)set的插入操作、pair(5)set的遍历 2.map(1)map的特点(2)map的构造(3)map的查找操作(4)map的插入操作(5)map的下标操作 (重点)(5)map的遍历 第六章…

入度与出度在数据结构中的应用

文章目录 应用案例1. 邻接矩阵2. 邻接链表3. 邻接集(字典实现)4. 入度列表(基于邻接链表计算) 特别补充3. 邻接集计算入度(补充)4. 邻接多重表(概念介绍) 入度和出度是图论中的概念&…

手机误删图片怎么办?2个照片恢复大师来帮忙,轻松找回

手机照片早已成为我们日常生活中的一部分,记录着欢笑、泪水等各种瞬间。但有时候,因为各种原因,它们会突然消失,让人痛心疾首。照片恢复有哪些方法呢?别急,今天就给大家带来2位照片恢复大师,它们…

【手写数据库内核组件】0501多线程并发模型,任务分发多工作者执行架构实现,多线程读写状态时volatile存储类型使用技巧

0501 多线程管理 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章目录 0501 多…

[C++] 由浅入深理解面向对象思想的组成模块

文章目录 (一) 类的默认成员函数(二) 构造函数构造函数的特征构造函数示例无参构造带参构造 冲突:全缺省参数的构造函数与无参构造函数 (三)析构函数特性析构函数的析构过程解析 (四)拷贝构造函数什么是拷贝构造?特性为…

数据结构——单链表详解(超详细)(2)

前言: 上一篇文章小编简单的介绍了单链表的概念和一些函数的实现,不过为了保证文章的简洁,小编把它分成了两篇来写,这一篇小编紧接上一篇文章继续写单链表函数功能的实现: 目录: 1.单链表剩余函数的编写 1.…