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

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

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值