您的位置:

Nvidia NX开发全解析

Nvidia Jetson NX 是Nvidia推出的一款运用于嵌入式系统的AI平台,它具有高性能的GPU,丰富的外设接口并且尺寸小巧,适用于各种应用场景,例如智能家居、智能制造、智能安防等。下面,我们将从 Nvidia NX 的开发环境、硬件介绍和应用开发三个方面来全面解析 Nvidia Jetson NX。

一、Nvidia Jetson NX 的硬件介绍

1. CPU/GPU

Nvidia Jetson NX 的 CPU 为6核ARM Cortex-A57(2+4), 而GPU 则是NVIDIA Volta架构的NVIDIA® GeForce® GTX 1050 Ti GPU。CPU和GPU的强大性能,使得 Nvidia Jetson NX 完美的支持各种高效计算的应用或任务。

2. 存储/内存

Nvidia Jetson NX 集成了 8GB 128-bit LPDDR4x,128GB/s的内存性能,和16GB eMMC 5.1 Flash。并且还支持 SD 卡,SATA、NVMe 磁盘等多种存储介质。这些存储介质的使用能使用户可以更加灵活地管理和存储数据。

3. 外设接口

Nvidia Jetson NX 有丰富的外设接口,例如8路GPIO、I2C、PWM、SPI、UART、USB3.0、SATA等设备接口。还有HDMI、DP、 eDP、CSI、DSI等显像和音频接口。这些开源接口保证了用户可以自由的进行个性化的硬件扩展,为用户的应用提供了更大的灵活性。

二、Nvidia Jetson NX 的开发环境

1. Jetson SDK Manager

Jetson SDK Manager 是一款由 Nvidia 研发的图形化软件开发套件,用户就可以通过它来开发工具链、驱动、文件系统等。而且 Jetson SDK Manager 还提供了包括 OpenGL/GLES、CUDA/CUDNN、VisionWorks 和 TensorRT 在内的软件开发套件和工具箱,可以快速开发和调试 AI 应用,提高应用开发的效率和质量。

2. JetPack

除了 Jetson SDK Manager,Nvidia Jetson NX 还支持 NVIDIA JetPack,JetPack 是一个包含NVIDIA Jetson装置上所有必要软件套件和工具的完整软件解决方案。JetPack 中包含各种软件包,例如深度学习框架TensorFlow, Pytorch, Mxnet, Caffe 等,还包括了Nvidia 软件开发工具、Nvidia CUDA™ 工具和Nvidia RTX™ 库。JetPack简化了Jetson使用者资料设置过程,并可以在最新的Jetson系统上启供新软件更新。

3. NVIDIA Jetson 的开发套件

NVIDIA 专门为 Jetson 平台提供了许多开发套件,例如 Jetson Nano 开箱即用图像分类样品、JetPack SDK、TensorRT等。这些开发套件使得用户的应用开发更加方便和高效,也节省了用户的时间和精力。

三、Nvidia Jetson NX的应用开发

1. 待办事项识别应用开发

将 Nvidia NX 作为一个强大的嵌入式AI平台,我们可以运用它来开发各种应用。下面以待办事项识别为例,简单阐述 Nvidia Jetson NX的应用开发过程:

import io
import cv2
import numpy as np
from PIL import Image

def preprocess_image(image):
    "图像预处理"
    a = (np.asarray(image) / 255.0)
    b = cv2.resize(a, (224, 224), interpolation=cv2.INTER_CUBIC)
    c = np.expand_dims(b,axis=0)
    d = np.transpose(c, (0, 3, 1, 2)).astype(np.float32)
    return d

def predict_result(image,model):
    '''CG 模型预测'''
    inputs = preprocess_image(image)
    output = model(inputs)
    return output

def load_model(model_path):
    '''模型加载'''
    try:
        import jetson.inference
        import jetson.utils
        model = jetson.inference.imageNet("googlenet", model_path)
    except:
        import deepstreaming_utils
        model = deepstreaming_utils.load_engine(model_path)
    return model

model_path = "./googlenet.onnx"
model = load_model(model_path)

img_path = "./test.png"
image = Image.open(img_path)
output = predict_result(image,model)
label = model.GetClassDesc(output[0])
print(label)

通过以上代码,我们实现了基于 Nvidia Jetson NX 的待办事项识别,识别一张图片的类别,从而可以为用户提供更多便捷生活服务。

2. 人脸识别应用开发

除了待办事项识别应用,我们还可以基于 Nvidia Jetson NX 开发人脸识别应用。下面,我们阐述 Nvidia Jetson NX 的人脸识别应用开发过程:

import jetson.inference
import jetson.utils

# 加载检测模型
net_detect = jetson.inference.detectNet("ssd-mobilenet-v2", threshold=0.5)

# 加载识别模型
net_recognize = jetson.inference.detectNet("facenet", threshold=0.5)

cap = cv2.VideoCapture(0+cv2.CAP_V4L2)

while (cap.isOpened()):
    ret, img = cap.read()
    # 图像检测和识别
    detections = net_detect.Detect(img)
    for detection in detections:
        top = int(detection.Top)
        left = int(detection.Left)
        right = int(detection.Right)
        bottom = int(detection.Bottom)

        #人脸识别
        face_origin = img[top:bottom, left:right]
        face = cv2.cvtColor(face_origin,cv2.COLOR_BGR2RGB).astype(np.float32)/255.0
        matches = net_recognize.Detect(face)
        if len(matches) > 0:
            print("找到人脸: %i, 置信度:%f" % (matches[0].ClassID,matches[0].Confidence))
        else:
            print("未找到人脸。")

    cv2.imshow('img', img)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()

通过以上代码,我们实现了基于 Nvidia Jetson NX 的人脸识别应用,可以检测出摄像头录下的视频中的人脸信息,方便应用开发者进行人脸数据的采集、识别和处理。

结论

Nvidia Jetson NX 是一款针对于嵌入式AI领域开发的高效计算平台,它不仅拥有强大的 CPU/GPU 计算能力,还支持丰富的外设接口和多种存储介质。同时 NVIDIA 也专门为 Jetson 平台提供了多种开发套件和工具,使得应用开发更为方便,效率更为提升。因此,基于 Nvidia Jetson NX 平台进行 AI 应用的开发,能够为用户提供更好的 AI 体验和更优秀的产品性能。