全国产的香橙派 AIpro AI开发硬件,对标nvidia jetson硬件。太香了

news2024/11/29 2:49:34

1. 导语

国产化AI芯片的发展不仅反映了中国在信息技术产业的战略布局,更是对全球科技竞争格局的积极回应。随着人工智能与大数据技术的飞速进步,国内对高性能计算的需求日益增长,促使科研机构与高新技术企业加大对AI芯片研发的投入,旨在打破海外技术垄断,保障国家信息安全与技术自主。

2. 国产化AI芯片模型部署的重要意义

•安全与自主可控:在全球化的背景下,依赖海外AI芯片技术可能使国家面临供应链中断的风险,尤其是在当前国际形势复杂多变的环境下。国产AI芯片的部署,能够有效降低这种依赖,增强国家在关键技术领域的自给自足能力,保障国家安全与数据隐私。

•技术创新与核心竞争力提升:发展国产AI芯片不仅能够促进国内企业在芯片设计与制造领域的技术突破,还能加速上下游产业链的成熟,形成完整的创新生态系统。这将显著提升中国在全球AI芯片市场的竞争力,推动国内企业走向世界舞台。

•经济与社会价值:国产AI芯片的广泛应用将催生新的商业模式与应用场景,如智能制造、智慧城市、医疗健康等,带动经济增长点的形成。同时,通过推动技术普及与应用,可以提升公众生活质量,促进社会公平与可持续发展。

3. 香橙派 AIpro的硬件配置

CPU:昇腾 AI 处理器 4 核 64 位 Arm 处理器 + AI 处理器

NPU:

• 半精度(FP16):4 TFLOPS

• 整数精度(INT8):8 TOPS

内存:8GB 或 16GB

存储:

• 板载 32MB 的 SPI Flash

• Micro SD 卡插槽

• eMMC 插座:可外接 eMMC 模块

• M.2 M-Key 接口:可接 2280 规格的 NVMe SSD 或 SATA SSD

以太网:

• 支持 10/100/1000Mbps

• 板载 PHY 芯片:RTL8211F

Wi-Fi+蓝牙

• 支持 2.4G 和 5G 双频 WIFI

• BT4.2

• 模组:欧智通 6221BUUC

USB

• 2 个 USB3.0 Host 接口

• 1 个 Type-C 接口(只支持 USB3.0,不支持 USB2.0)

摄像头

2 个 MIPI CSI 2 Lane 接口

显示

• 2 个 HDMI 接口

• 1 个 MIPI DSI 2 Lane 接口

音频

• 1 个 3.5mm 耳机孔,支持音频输入输出

• 2 个 HDMI 音频输出

支持的操作系统

Ubuntu 22.04 和 openEuler 22.03

来张实图:

  1. 部署流程

整体流程是基于现有模型、使用pyACL提供的Python语言API库开发深度神经网络应用,用于实现目标识别、图像分类等功能。

整体流程如下图所示:

我们基于已有的系统进行开发,无须进行环境的搭建。我们只需要进行后面的模型转换,再调用python接口进行模型推理,。

5. 官方目标检测yolov5测试

登录 Linux 系统桌面,然后打开终端,再切换到保存 AI 应用样例的目录下,然后执行 start_notebook.sh 脚本启动 Jupyter Lab

cd cd samples/notebooks
./start_notebook.sh

然后我们选择yolov5的项目,用我们自己的图像进行测试。

infer_mode = 'image'
if infer_mode == 'image':
    img_path = '000000.jpg'
    infer_image(img_path, model, labels_dict, cfg)

结果可视化

为模型加上推理耗时统计代码,统计前进行5次预热推理。这样统计的时间更加精确。

# 预热
    for _ in range(5):
        output = model.infer([img])[0]

    # 模型推理
    s0 = time.perf_counter()
    for i in range(10):
        output = model.infer([img])[0]

    s1 = time.perf_counter()
    print(f"模型推理耗时: {(s1-s0) * 1000 / 10} ms")

结果

[INFO] acl init success

[INFO] open device 0 success

[INFO] load model yolo.om success

[INFO] create model description success

模型推理耗时: 41.645452300144825 ms

odel success, model Id is 1

[INFO] end to destroy context

[INFO] end to reset device is 0

[INFO] end to finalize acl

6. own人脸模型face-parse测试

人脸分割模型为人像美颜,人像AR,人像AE调整等各种应用提供了基础能力,这里我们测试香橙派AIpro在通用模型部署上的通用性。

1.首先从百度网盘百度网盘 请输入提取码 code: 8gin,下载开源的模型:face_parsing_512x512.onnx

2.采用如下命令将onnx模型转换成ascend芯片支持的om模型,转换成功之后获得face_parse.om文件

atc --model=face_parsing_512x512.onnx --framework=5 --output=face_parse --input_format=NCHW --input_shape="input:1,3,512,512" --log=error --soc_version=Ascend310B1

3.然后使用以下的代码进行测试。

import cv2
import numpy as np
import ipywidgets as widgets
from IPython.display import display
import torch
from skvideo.io import vreader, FFmpegWriter
import IPython.display
from ais_bench.infer.interface import InferSession

from det_utils import letterbox, scale_coords, nms
import time
from PIL import Image


def preprocess_image(image, shape, bgr2rgb=True):
    """图片预处理"""
    img, scale_ratio, pad_size = letterbox(image, new_shape=shape)
    if bgr2rgb:
        img = img[:, :, ::-1]
    img = img.transpose(2, 0, 1)  # HWC2CHW
    img = np.ascontiguousarray(img, dtype=np.float32)
    return img, scale_ratio, pad_size


class InferEngine(object):
    def __init__(self, model_path, infer_shape) -> None:
        self.model = InferSession(0, model_path)
        self.infer_shape = infer_shape

    def generate_mask(self, img, seg, scale=0.4):
        '分割结果可视化'
        color = [
            [255, 0,   0],
            [255, 85,  0],
            [255, 170, 0],
            [255, 0,   85],
            [255, 0,   170],
            [0,   255, 0],
            [85,  255, 0],
            [170, 255, 0],
            [0,   255, 85],
            [0,   255, 170],
            [0,   0,   255],
            [85,  0,   255],
            [170, 0,   255],
            [0,   85,  255],
            [0,   170, 255],
            [255, 255, 0],
            [255, 255, 85],
            [255, 255, 170],
            [255, 0,   255],
            [255, 85,  255]
        ]
        img = img.transpose(1, 2, 0)  # HWC2CHW
        minidx = int(seg.min())
        maxidx = int(seg.max())
        color_img = np.zeros_like(img)
        for i in range(minidx, maxidx):
            if i <= 0:
                continue
            color_img[seg == i] = color[i]
        showimg = scale * img + (1 - scale) * color_img
        Image.fromarray(showimg.astype(np.uint8)).save("face_parse_res.png")


    def infer_image(self, img_path, times=10):
        # 图片载入
        image = cv2.imread(img_path)
        # 数据预处理
        img, scale_ratio, pad_size = preprocess_image(image, self.infer_shape)
        showimg = img.copy()
        mean = np.asarray([0.485, 0.456, 0.406])
        scale = np.asarray([0.229, 0.224, 0.225])
        mean = mean.reshape((3, 1, 1))
        scale = scale.reshape((3, 1, 1))
        img = (img / 255 - mean) * scale 
        img = img.astype(np.float32)

        for _ in range(5):
            output = self.model.infer([img])[0]
        # 模型推理
        s0 = time.perf_counter()
        for i in range(times):
            output = self.model.infer([img])[0]

        s1 = time.perf_counter()
        print(f"模型推理耗时: {(s1-s0) * 1000 / times} ms")
        
        seg = np.argmax(output, axis=1).squeeze()
        self.generate_mask(showimg, seg)


if __name__ == '__main__':
    # atc --model=face_parsing_512x512.onnx --framework=5 --output=face_parse --input_format=NCHW --input_shape="input:1,3,512,512" --log=error --soc_version=Ascend310B1
    imgpath = 'test_lite_face_parsing.png'
    modelpath = 'face_parse.om'
    shape = (512, 512)
    net = InferEngine(modelpath, shape)
    out = net.infer_image(imgpath)

测试图像/可视化结果

7. 模型推理耗时统计

序号

模型

分辨率

om模型大小/MB

推理耗时/ms

yolov5s

640x640

15

40.99

face_parse

512x512

26

106.46

  1. 总结

优点:

  • 香橙派AIpro全国产,在中美关系紧张下能替代nVidia jetson。
  • 部署方便,模型转换,python调用,都很适合新手入手
  • 文档和工具链完善方便学习

缺点:

  • 发热严重,边跑程序,边写文档就很卡了。

TODO

  • 更多sample的部署测试
  • c++ api的调用
  • 梳理asend的芯片链条

参考:

  1. CANN说明文档:什么是AIPP-AIPP使能-高级功能-ATC模型转换-推理应用开发-CANN商用版6.3.RC2开发文档-昇腾社区
  2. 浅谈国产化AI芯片模型部署实践:https://zhuanlan.zhihu.com/p/663715171

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

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

相关文章

vscode编辑器警告, jsconfig.json 第一行红色波浪线

问题 配置文件jsconfig.json 第一行总是有个&#xff0c;红色下划线 项目是可以正常运行的&#xff0c;就是编辑器有个红色提示看着不顺眼。 开启检查 解决红色波浪线问题

算法体系-20 第二十节暴力递归到动态规划

前言 动态规划模型从尝试暴力递归到傻缓存到动态规划 四种模型和体系班两种模型一共六种模型 0.1 从左往右模型 0.2 范围讨论模型范围尝试模型 &#xff08;这种模型特别在乎讨论开头如何如何 结尾如何如何&#xff09; 玩家博弈问题&#xff0c;玩家玩纸牌只能那左或者右 0.3 …

MapperStruct拷贝数据的介绍和使用

1、前言 在java 编程中&#xff0c;对象直接拷贝是很常用的方法&#xff0c;最初我们常用spring提供的拷贝工具BeanUtils的copyProperties方法完成对象之间属性的拷贝。但是它有几个明显的如下缺点 1、属性类型不一致导致摸一个属性值拷贝失败 2、通一个字段使用基本类型和包…

2024年高考志愿填报,计算机相关专业还值得选择吗?

一、引言 在科技日新月异的今天&#xff0c;计算机专业无疑是推动社会进步和经济发展的重要力量。从最初的简单数据处理到如今的云计算、大数据、人工智能等前沿技术&#xff0c;计算机专业的发展速度之快、影响之广&#xff0c;已经深入到我们生活的方方面面。本文将详细分析…

Qt程序打包成单个exe文件

文章目录 0. 准备工作1. 使用 windeployqt 提取必要的动态链接库和资源文件1.1 操作步骤1.2 补充 2. 使用 Enigma Virtual Box将文件夹打包成单个exe2.1 操作步骤 0. 准备工作 Qt程序打包用到的工具有&#xff1a; windeployqt &#xff1a;安装Qt时自带Enigma Virtual Box 下…

AUTOSAR学习

文章目录 前言1. 什么是autosar&#xff1f;1.1 AP&#xff08;自适应平台autosar&#xff09;1.2 CP&#xff08;经典平台autosar)1.3 我的疑问 2. 为什么会有autosar3.autosar的架构3.1 CP的架构3.1.1 应用软件层3.1.2 运行时环境3.1.3 基础软件层 3.2 AP的架构 4. 参考资料 …

电商数据都有哪些种类?对电商数据进行分析有什么重要意义?

在数字化时代&#xff0c;电商行业的蓬勃发展带来了前所未有的数据积累。每一笔交易、每一次点击、每一条用户反馈都构成了电商数据的庞大体系&#xff0c;成为企业最宝贵的资产之一。电商数据分析不仅能够帮助企业洞察消费者行为&#xff0c;优化产品和服务&#xff0c;还能在…

一键Mock工具(Http协议接口调试工具)

1. 前言 在进行Web开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑回路开发”&#xff0c;无法调用真实的接口&#xff0c;也无法…

IP隔离是什么,你了解多少?

一、IP地址隔离的概念和原理 当我们谈论 IP 地址隔离时&#xff0c;我们实际上是在讨论一种网络安全策略&#xff0c;旨在通过技术手段将网络划分为不同的区域或子网&#xff0c;每个区域或子网都有自己独特的 IP 地址范围。这种划分使网络管理员可以更精细地控制哪些设备或用…

Vue3中子组件挂载问题,父组件修改子组件值的问题

1&#xff0c;首先在父组件导入子组件 挂载 2&#xff0c;传递值给子组件 3&#xff0c;子组件

记录清除挖矿病毒 solrd 过程

1、发现solrd病毒 端午节期间&#xff0c;kafka 服务器被黑客攻击了&#xff0c;植入了挖矿病毒 solrd&#xff0c;这个病毒很聪明&#xff0c;内存&#xff0c;CPU并没有异常升高&#xff0c;以致于上班第一天完全没有察觉。 上班第一天 正常登录服务器查看 flink ,消费kafka…

【JavaScript】简单数据类型 与 复杂数据类型 ① ( 堆内存和栈内存 | 简单数据类型内存存储 | 复杂数据类型内存存储 )

文章目录 一、简单数据类型1、简单数据类型简介2、简单数据类型 null 空类型的特殊性 二、复杂数据类型三、堆内存和栈内存 一、简单数据类型 1、简单数据类型简介 JavaScript 中 , " 简单数据类型 “ 又称为 ” 基本数据类型 " 或 " 值类型 " , 与 简单数…

AI口语练习软件的技术难点

实现AI口语练习软件是一项复杂的任务&#xff0c;需要攻克多项技术难点。随着人工智能技术的不断发展&#xff0c;AI口语练习软件将变得更加智能和人性化&#xff0c;为用户提供更加有效的口语练习体验。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0…

Kubeadm 1.24.x安装教程

第一章 基本环境配置 1.1 配置hosts 所有节点 修改/etc/hosts如下&#xff1a; 192.168.0.93 W31-ywzt-SIT-1 192.168.0.94 W31-ywzt-SIT-2 1.2 CentOS 7安装yum源如下 所有节点 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo…

FastLineDetector(FLD)快速直线检测器的使用方法

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 1.功能描述 opencv_contrib中有一个用于快速检测直线的类&#xff0c;叫FastLineDetector&#xff0c;下面介绍一下如何使用它&#xff0c;首先要用到一个cv:…

巴伦在接收链路中的应用

一、巴伦的定义 "巴伦"&#xff08;Balun&#xff09;&#xff0c;是一种平衡-不平衡转换器&#xff0c;通常用于将平衡信号&#xff08;如差分信号&#xff09;转换为不平衡信号&#xff08;如单端信号&#xff09;&#xff0c;或者反之。巴伦在无线通信、广播、天…

手机流畅运行470亿大模型:上交大发布LLM手机推理框架PowerInfer-2,提速29倍

卡奥斯智能交互引擎是卡奥斯基于海尔近40年工业生产经验积累和卡奥斯7年工业互联网平台建设的最佳实践&#xff0c;基于大语言模型和RAG技术&#xff0c;集合海量工业领域生态资源方优质产品和知识服务&#xff0c;旨在通过智能搜索、连续交互&#xff0c;实时生成个性化的内容…

GEE数据集——全球河流阻塞数据库 (GROD)1.1 版

全球河流阻塞数据库 (GROD) GROD v1.1&#xff08;文件名&#xff1a;GROD_v1.1.csv&#xff09;&#xff0c;即全球河流阻塞数据库 1.1 版&#xff0c;包含 30549 个人工识别的阻碍河流纵向流动的人为结构。谷歌地球引擎卫星地图上的所有河流障碍物都已在全球陆地卫星河宽&am…

2024年数字技术与智慧教育国际会议(DTSE 2024,7月26-28)

2024年数字技术与智慧教育国际会议&#xff08;DTSE 2024&#xff09;将于2024年7月26日在广东省广州市召开&#xff0c;本次会议专注于“数字技术与智慧教育”领域&#xff0c; 将汇集全球范围内的学者、研究人员以及教育技术开发者&#xff0c;共同探索和分享该领域内的最新学…

软件游戏缺失mfc100u.dll如何解决,教你多种有效的方法

在现代科技日新月异的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的一部分。然而&#xff0c;随着使用时间的增长&#xff0c;电脑也会出现各种各样的问题。其中&#xff0c;“电脑中丢失mfc100u.dll”是许多用户经常遇到的问题之一。那么&#xff0c;这个问题究竟是…