【 香橙派 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 os

import time
import argparse

import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

from 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 + 1
        self.character = ['[blank]'] + dict_character
        self.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 = 0
        for 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 += l
        return 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 acl

import 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_id
        self.context = None
        self.stream = None
        self.run_mode = None
        
    def init(self):
        """
        初始化资源
        """
        print("init resource stage:")
        ret = acl.init() # acl初始化

        ret = acl.rt.set_device(self.device_id) # 指定运算的device
        utils.check_ret("acl.rt.set_device", ret)

        self.context, ret = acl.rt.create_context(self.device_id) # 创建context
        utils.check_ret("acl.rt.create_context", ret)

        self.stream, ret = acl.rt.create_stream() # 创建stream
        utils.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) # 销毁stream

        if self.context:
            print("acl resource release context")
            acl.rt.destroy_context(self.context) # 释放context

        print("Reset acl device ", self.device_id)
        acl.rt.reset_device(self.device_id) # 释放device
        
        print("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.0
    BGR = cv2.resize(BGR, (input_h, input_w))
    RGB = cv2.cvtColor(BGR, cv2.COLOR_BGR2RGB)
    return RGB, h, w

def 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_U8

def 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)
            continue
        pic_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]] # RGB
        plt.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凭借其智能化的特点,为开发者提供了一站式解决方案,不仅减少了繁琐的工作环节,而且在性能稳定性以及交互体验上都有着显著提升。这对于那些寻求快速原型制作和便捷开发环境的工程师来说,无疑是一个理想的选择。

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

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

相关文章

nginx代理缓存

在服务器架构中,反向代理服务器除了能够起到反向代理的作用之外,还可以缓存一些资源,加速客户端访问,nginx的ngx_http_proxy_module模块不仅包含了反向代理的功能还包含了缓存功能。 1、定义代理缓存规则 参数详解: p…

esplice老项目(非maven)导入idea问题

解决导入idea显示不正常 老项目导入idea后,显示为如下所示: 显示的不太正常,正常显示为下面这个样子: 解决 非老项目 idea的项目中所有的文件全部变成了.java(已解决) 老项目 以下内容参考:idea导入项目后java文…

Word创建多级列表的样式

Word创建多级列表的样式 要求结果方法创建样式修改样式设置段落创建快捷键 关联多级列表 要求 创建自定义的三级列表样式,要求标题均为黑体,小四字号,1.5倍行距,有快捷键。 结果 方法 在样式中创建三个样式。 创建样式 录入名…

【入门级】docker

开头处生动的描述一下”码头工人”吧:小鲸鱼(登记处Registry:比如docker hub官方)背着好多集装箱(仓库repository:存放各种各样的镜像,一般存放的是一类镜像,这一类镜像中通过tag 版…

kubernetes k8s Deployment 控制器配置管理 k8s 红蓝部署 金丝雀发布

目录 1、Deployment控制器:概念、原理解读 1.1 Deployment概述 1.2 Deployment工作原理:如何管理rs和Pod? 2、Deployment资源清单文件编写技巧 3、Deployment使用案例:创建一个web站点 4、Deployment管理pod:扩…

邮箱验证码功能开发

该文章用于记录怎么进行邮箱验证码开发。 总所周知,我们在某些网站进行注册的适合总是会遇到什么填写邮箱,邮箱接收验证码,验证通过后才可以继续注册,那么这个功能是怎么实现的呢? 一,准备工作 1.1 邮箱…

贪心算法(2024/7/16)

1合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:inter…

朴素模式匹配算法与KMP算法(非重点)

目录 一. 朴素模式匹配算法1.1 什么是字符串的匹配模式1.2 朴素模式匹配算法1.3 通过数组下标实现朴素模式匹配算法 二. KMP算法2.1 算法分析2.2 用代码实现(只会出现在选择题,考察代码的概率不大) 三. 手算next数组四. KMP算法的进一步优化4…

3D可视化赋能智慧园区安防管理,开启园区管理新篇章!

3D可视化,主要是研究大规模非数值型信息资源的视觉呈现,以及利用图形方面的技术与方法,帮助人们理解和分析数据。 传统园区的信息化往往数据不互通,业务难融合,长期面临着服务体验差、综合安防弱、运营效率低、管理成本…

MySQL执行状态查看与分析

当mysql出现性能问题时,一般会查看mysql的执行状态,执行命令: show processlist 各列的含义 列名含义id一个标识,你要kill一个语句的时候使用,例如 mysql> kill 207user显示当前用户,如果不是root&…

烟雾监测与太阳能源:实验装置在其中的作用

太阳光在烟雾中的散射效应研究实验装置是一款模拟阳光透过烟雾环境的设备。此装置能帮助探究阳光在烟雾中的传播特性、散射特性及其对阳光的影响。 该装置主要包括光源单元、烟雾发生装置、光学组件、以及系统。光源单元负责产生类似于太阳光的光线,通常选用高亮度的…

2024牛客暑期多校训练营1 A题(A Bit Common )解题思路

前言: 今年和队友报了牛客暑期多校比赛,写了一下午结果除了签到题之外只写出了一道题(A),签到题没什么好说的,其他题我也没什么好说的(太菜了,根本写不出来),…

django-ckeditor富文本编辑器

一.安装django-ckeditor 1.安装 pip install django-ckeditor2.注册应用 INSTALLED_APPS [...ckeditor, ]3.配置model from ckeditor.fields import RichTextFieldcontent RichTextField()4.在项目中manage.py文件下重新执行迁移,生成迁移文件 py…

常见的数据分析用例 —— 信用卡交易欺诈检测

文章目录 引言数据集分析1. 读入数据并快速浏览2.计算欺诈交易占数据集中交易总数的百分比3. 类别不平衡对模型的影响3.1 总体思路(1)数据的划分(2)训练模型(3)测试模型(4)解决不平衡…

django报错(二):NotSupportedError:MySQL 8 or later is required (found 5.7.43)

执行python manage.py runserver命令时报版本不支持错误,显示“MySQL 8 or later is required (found 5.7.43)”。如图: 即要MySQL 8或更高版本。但是企业大所数用的还是mysql5.7相关版本。因为5.7之后的8.x版本是付费版本,贸然更新数据库肯定…

python自动化之用flask校验接口token(把token作为参数)

用到的库:flask 实现效果: 写一个接口,需要token正确才能登录 代码: # 导包 from flask import Flask,request,jsonify,json # 创建一个服务 appFlask(__name__) # post请求,路径:/query app.route(/query, met…

框架设计MVC

重点: 1.用户通过界面操作,传输到control,control可以直接去处理View,或者通过模型处理业务逻辑,然后将数据传输给view。 2.control包含了model和view成员。 链接: MVC框架详解_mvc架构-CSDN博客 MVC架…

【香橙派 Orange pi AIpro】| 搭建部署基于Yolov5的车牌识别系统

【香橙派 Orange pi AIpro】| 搭建部署基于Yolov5的车牌识别系统 一、香橙派 Orange pi AIpro 开发板介绍及实物开箱1.1 开发板介绍1.2 产品详情图1.3 开箱实物 二、开发部署预先准备2.1 镜像介绍与烧录2.2 启动开发板2.3 连接开发板 三、基于Yolov5的车牌识别系统3.1 项目介绍…

前端pc和小程序接入快递100(跳转方式和api方式)====实时查询接口

文章目录 跳转方式微信小程序(我以uniapp为例)pc api接入说明关于签名计算成功示例 跳转方式 没有任何开发成本,直接一键接入 可以直接看官方文档 https://www.kuaidi100.com/openapi/api_wxmp.shtml 微信小程序(我以uniapp为例…

知识图谱与 LLM:微调与检索增强生成

Midjourney 的知识图谱聊天机器人的想法。 大型语言模型 (LLM) 的第一波炒作来自 ChatGPT 和类似的基于网络的聊天机器人,这些模型在理解和生成文本方面非常出色,这让人们(包括我自己)感到震惊。 我们中的许多人登录并测试了它写…