深度学习

理解和使用深度学习网络

机器学习与Simulink和NVIDIA J金宝appetson

以下文章来自Bill Chou, GPU编码器AI部署产品经理。
最新的Jetson AGX Orin将一些令人难以置信的处理能力打包在一个小程序包中,并为在实验室之外运行更多计算密集型人工智能算法打开了大门。正如英伟达所指出的那样Jetson AGX Orin能够提供高达8倍的人工智能性能之前的Jetson AGX Xavier。我们渴望尝试用Simulink开发的一些人工智能应用程序,看看我们如何能快速地将人工智能算法放到电路板上,并在移动中进金宝app行测试。

显示车道下面的例子,我们将放在Jetson AGX Orin

空客等用户一直在使用Simulink和GPU Coder将AI应用程金宝app序部署到各代Jetson板上快速建立原型并测试他们的人工智能应用程序他们可以先在他们的桌面开发机器上测试AI应用程序,然后将AI应用程序迁移到Jetson板上,在实验室之外使用,在各种条件下使用:在飞机内,在道路上的车辆中,或自动水下航行器中。
为了说明这种方法,我们将使用一个高速公路车道跟踪示例来处理来自行车记录仪的视频。一旦我们用测试视频输入验证了AI应用程序,我们就可以将Jetson从桌面开发机中分离出来,将输入测试视频切换为实时视频提要,并将Jetson带出实验室进行额外测试。

基于桌面开发GPU的Simulink运行车道和车辆检测模型金宝app

我们使用金宝app的Simulink模型接受输入视频流,检测视频帧中的左右车道标记以及车辆。它使用基于YOLO v2和AlexNet的两个深度学习网络来实现这一目标。完成了一些前后处理,包括绘制左右车道和车辆周围边界框的标注。
我们从两个详细描述的开箱即用的示例开始,快速构建了这个应用程序的原型在这里而且在这里.在配备了强大的NVIDI金宝appA桌面级GPU的桌面开发机器上运行Simulink模型,我们看到AI应用程序运行平稳,正确识别车道标记和车辆。在底层,Simulink自动识别模型的计算金宝app密集型部分,并与NVIDIA CUDA工具包一起,将这些计算从CPU卸载到桌面GPU核心上,从而为我们提供输出视频中所见的平滑处理。
接下来,让我们关注工作流的部署部分,看看如何将其嵌入到最新的Jetson AGX Orin上。

从Simulink模型生成CUDA代码金宝app

为了生成CUDA代码并将AI应用程序部署到Jetson AGX Orin上,我们可以使用GPU编码器.使用桌面模拟中的相同Simul金宝appink模型,我们需要将输出Viewer块替换为SDL Video output块,以便视频将出现在Jetson板桌面上供我们查看。
我们还需要为Jetson AGX Orin设置代码生成配置。在代码生成的配置参数中,我们可以选择使用NVIDIA的cuDNN或TensorRT用于深度学习网络。对于Simulink模型的非深度学习部分,GPU Coder将自动集成对CUDA优化金宝app库的调用,如cuBLAS和cuFFT。
我们还可以为Jetson板设置硬件配置设置,包括NVIDIA工具链、板登录/密码和构建选项。
配置完成后,就可以开始生成代码了。GPU Coder将首先自动识别Simulink模型的计算密集型部分,并将其转换为CUDA内核,这些内核将在GPU内核上执行,以获得最佳性能。金宝appAI应用程序的其余部分将作为C/ c++代码在Jetson板的ARM核心上运行。
查看生成的CUDA代码片段,我们可以看到cudaMalloc ()为了在GPU内核上运行内核而在GPU内核上分配内存的调用。我们也可以发现cudaMemcpy ()调用在算法的适当部分在CPU和GPU之间移动数据,几个CUDA内核通过laneAndVehicleD_Outputs_kernel1 ()而且laneAndVehicleD_Outputs_kernel1 ()调用。
我们还可以深入研究代表这两个深度学习网络的代码。查看在AI应用程序开始时执行一次的YOLO v2网络的设置函数,我们可以看到它按顺序将每一层初始化到内存中,包括以二进制文件形式存储在磁盘上的所有权重和偏差。
最后,虽然为Jetson AGX Or金宝appin配置了Simulink模型和CUDA代码生成设置,但值得注意的是,生成的CUDA代码是可移植的,可以在所有现代NVIDIA gpu上运行,包括Jetson和DRIVE平台,更不用说桌面和服务器级gpu了。
一旦CUDA代码生成,GPU Coder将自动调用CUDA工具链来编译、下载并启动Jetson AGX Orin上的可执行文件。对于我们的应用程序,我们还将输入视频文件复制到Jetson板上,作为AI应用程序的输入视频。当我们使用SDL视频块时,来自Jetson板的处理输出视频将显示为Jetson板上的SDL窗口,我们可以直观地看到输出与桌面GPU模拟相同,尽管考虑到处理能力的差异,预期的帧率较低。
此时,我们可以将Jetson AGX Orin从我们的主机开发机中拔出,并将其移出我们的实验室,以便在现场进行进一步测试。方法将生成的CUDA代码手动集成到另一个项目中的更大的应用程序中packngo函数整齐地压缩所有必要的源代码。考虑到CUDA的架构方式,生成的CUDA代码是可移植的,可以在所有现代NVIDIA平台上运行,从桌面和服务器级gpu到嵌入式Jetson和DRIVE板。

总结

在Jetson AGX Orin上运行各种人工智能应用程序,并看到比之前的Jetson AGX Xavier性能的提升,这是很有趣的。我们上面描述的工作流程帮助各种用户在探索和原型化AI应用程序时更快地移动。使用新的Jetson AGX Orin旋转,看看您可以将哪种类型的人工智能应用程序带到现场设计中。
我们将使用AGX演示这个演示,并在我们即将到来的MATLAB Expo 2022演讲中详细介绍这个工作流程:机器学习与Simulink和NVIDIA J金宝appetson2022年5月17日。参加会议,了解工作流程的实际运行情况,并参观NVIDIA展台,询问更多有关NVIDIA的一切问题,包括他们的最新主板Jetson AGX OrinJetson AGX Orin
下面是车道和车辆检测示例的链接:
要在Jetson上运行这个和其他AI应用程序,您需要MATLAB Coder金宝appNVIDIA Jetson和NVIDIA DRIVE平台的支持包.最后,该示例可以在任何最新的Jetson板上运行,不过为了获得最佳性能,您需要获取最新的Jetson AGX Orin
|
  • 打印
  • 发送电子邮件

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。