地平线旭日X3开发板Object Detection测试调试

旭日X3派具有最高5TOPS的等效算力

(X3M BPU主频1.2GHz、算力5TOS; X3E BPU 主频0.6GHZ,算力3TOPS),

因此在开发板上可以运行丰富的AI算法。

在系统/app/ai_inference目录下提供了基础算法示例:

01_basic_sample

系统给出的测试程序只能对给定的斑马图片(zebra_cls.jpg)进行检测,

对其进行少许改造、使其能够对给定的任意图片进行检测,

同时能够输出对象分类ID、置信度和对象名称。

修改后的测试程序目录结构如下:

修改要点:

1)将imagenet1000_clsidx_to_labels.tx文件转换成imagenet1000_clsidx_to_labels.json

2) 增加image目录

存储测试图片,本次测试使用以下4张图片

3)修改test_mobilenetv1.py

#!/usr/bin/env python3
from hobot_dnn import pyeasy_dnn as dnn
import numpy as np
import cv2
import sys
import json

def bgr2nv12_opencv(image):
    height, width = image.shape[0], image.shape[1]
    area = height * width
    yuv420p = cv2.cvtColor(image, cv2.COLOR_BGR2YUV_I420).reshape((area * 3 // 2,))
    y = yuv420p[:area]
    uv_planar = yuv420p[area:].reshape((2, area // 4))
    uv_packed = uv_planar.transpose((1, 0)).reshape((area // 2,))

    nv12 = np.zeros_like(yuv420p)
    nv12[:height * width] = y
    nv12[height * width:] = uv_packed
    return nv12

def print_properties(pro):
    print("tensor type:", pro.tensor_type)
    print("data type:", pro.dtype)
    print("layout:", pro.layout)
    print("shape:", pro.shape)


def get_hw(pro):
    if pro.layout == "NCHW":
        return pro.shape[2], pro.shape[3]
    else:
        return pro.shape[1], pro.shape[2]

if __name__ == '__main__':
    
    #input a picture file
    if len(sys.argv) == 1:
        print("please input picture!!!\nusage: test_mobilenetv1.py filename\n")
        exit(1)
    
    filename = sys.argv[1]
    
    #load object classify infomation
    data_base = None
    with open("./imagenet1000_clsidx_to_labels.json", "r") as f:
        data_base = json.load(f)  

    #load inference modle file
    models = dnn.load('../models/mobilenetv1_224x224_nv12.bin')
    
    #load image file and process
    img_file = cv2.imread(filename)
    h, w = get_hw(models[0].inputs[0].properties)
    des_dim = (w, h)
    resized_data = cv2.resize(img_file, des_dim, interpolation=cv2.INTER_AREA)
    nv12_data = bgr2nv12_opencv(resized_data)
    
    #ai inference
    outputs = models[0].forward(nv12_data)
    cls_id = np.argmax(outputs[0].buffer)
    confidence = outputs[0].buffer[0][np.argmax(outputs[0].buffer)]
   
    #print result 
    print("#"*20, "Result", "#"*20)
    print("->Object Class Id: %d" % (cls_id))
    print("->Confidence: %f" % (confidence))
    print("->Object Name: ", (data_base[str(cls_id)]))
    print("#"*48)

测试用例:

1)斑马检测

2)老虎检测

3)大鹅检测

4)卷纸检测

通过以上4个测试用例的运行,可以体验到旭日X3派检测分类准确率和效率还是非常高的。

imagenet1000支持1000个物体类别,更多的物体检测和分类,

可以通过增加image中的图片进行测试体验。

文中所有文件,均已打包在附件中,见如下链接:

https://download.csdn.net/download/bingdund/89309722

参考资料:

3.1. 模型推理示例 — 旭日X3派用户手册 1.0.1 文档icon-default.png?t=N7T8https://developer.horizon.ai/api/v1/fileData/documents_pi/Samples/AI_Inference.html

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Transformer是一种常用的深度学习模型,主要应用于自然语言处理领域,例如机器翻译、文本生成等任务。而嵌入式部署是指将深度学习模型部署到嵌入式设备上运行,以实现实时性、低功耗、低延迟等要求。旭日X3开发板是一款基于RISC-V架构的嵌入式系统开发板,可以运行Linux操作系统,支持硬件加速和DSP加速。下面是关于Transformer嵌入式部署和旭日X3开发板的介绍: Transformer嵌入式部署: 在进行Transformer模型的嵌入式部署时,需要考虑模型大小、计算量、内存消耗等因素,以适应嵌入式设备的资源限制。一般来说,可以通过以下几种方式来实现Transformer模型的嵌入式部署: 1. 剪枝(Pruning):利用剪枝技术去掉Transformer模型中冗余的权重和神经元,从而减少模型大小和计算量。 2. 量化(Quantization):将浮点数转换为定点数,以减少内存和计算量。 3. 硬件加速:利用硬件加速器(如FPGA、ASIC等)加速Transformer模型的计算过程。 4. DSP加速:利用数字信号处理器(DSP)加速Transformer模型的计算过程。 旭日X3开发板旭日X3开发板是一款基于RISC-V架构的嵌入式系统开发板,其主要特点如下: 1. 采用RISC-V架构,具有高性能、低功耗、可扩展性等优点。 2. 支持Linux操作系统,提供完整的软件生态和应用支持。 3. 集成AI加速模块,支持TensorFlow Lite、Caffe等深度学习框架,并提供相关的SDK和API。 4. 具有丰富的扩展接口(如PCIe、USB、GPIO等),方便与其他设备进行通信和交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bingdund

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值