深度学习

理解和使用深度学习网络

使用Simulink和NVIDIA Jets万博1manbetxon的机器学习

以下文章来自Bill Chou, AI部署GPU编码器的产品经理。
最新的杰森AGX欧林将一些难以置信的处理能力封装在一个小包中,并为在实验室之外运行更多计算密集型AI算法打开了大门。正如NVIDIA所指出的那样Jetson AGX Orin能够提供高达8倍的AI性能之前的Jetson AGX Xavier我们急切地想尝试一些在Simulink中开发的AI应用程序,看看我们如何快速地将AI算法应用到板子上,并在运行中进行测万博1manbetx试。

展示车道下面的例子,我们将把Jetson AGX Orin

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

在桌面开发者GPU上建立行车道和车辆检测的Simulink模型万博1manbetx

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

从Simulink模型生成CUDA代码万博1manbetx

为了生成CUDA代码并将AI应用程序部署到Jetson AGX Orin上,我们可以使用GPU编码器.使用来自桌面模拟的相同的Sim万博1manbetxulink模型,我们需要用SDL Video output块替换输出Viewer块,这样视频就会出现在Jetson板桌面供我们查看。
我们还需要设置Jetson AGX Orin的代码生成配置。在代码生成的配置参数中,我们可以选择使用NVIDIA的cuDNN或TensorRT作为深度学习网络。对于Simulink模型的非深度学习部分,GPU Coder将自动集成对CUDA优化万博1manbetx库的调用,如cuBLAS和cuFFT。
我们还可以为Jetson板设置硬件配置设置,包括NVIDIA工具链、板登录/密码和构建选项。
配置完成后,我们就可以开始生成代码了。GPU Coder将首先自动识别Simulink模型中计算密集型的部分,并将它们转换为CUDA内核,CUDA内核将在GPU内核上执行,以获得最佳性能。万博1manbetxAI应用程序的其余部分将作为C/ c++代码在Jetson主板的ARM核心上运行。
查看生成的CUDA代码片段,我们可以看到cudaMalloc ()调用在GPU上分配内存,为在GPU内核上运行内核做准备。我们也可以发现cudaMemcpy ()调用,在算法的适当部分在CPU和GPU之间移动数据,几个CUDA内核通过laneAndVehicleD_Outputs_kernel1 ()而且laneAndVehicleD_Outputs_kernel1 ()调用。
我们还可以插入代表两个深度学习网络的代码。查看在我们的AI应用程序开始时执行一次的YOLO v2网络的设置函数,我们可以看到它按顺序将每一层初始化到内存中,包括以二进制文件的形式存储在磁盘上的所有权重和偏差。
最后,虽然为Jetson AGX Or万博1manbetxin配置了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上运行各种AI应用程序是很有趣的,并看到性能的提升超过了之前的Jetson AGX Xavier。我们上面描述的工作流帮助各种用户在探索和创建AI应用程序原型时更快地移动。带着新的Jetson AGX Orin旋转,看看你可以把什么类型的AI应用程序带到你的设计领域。
我们将在即将到来的MATLAB Expo 2022演讲中展示这个使用AGX的演示,并详细介绍这个工作流程:使用Simulink和NVIDIA Jets万博1manbetxon的机器学习2022年5月17日。加入会议,看看工作流程的行动,并访问NVIDIA展台,问更多关于NVIDIA的一切问题,包括他们的最新董事会Jetson AGX Orin杰森AGX欧林
下面是车道和车辆检测示例的链接:
要在Jetson上运行这个和其他AI应用程序,您需要MATLAB Coder万博1manbetxNVIDIA Jetson和NVIDIA DRIVE平台支持包.最后,该示例可以在任何最新的Jetson板上运行,不过为了获得最佳性能,您可能希望使用最新的杰森AGX欧林
|
  • 打印
  • 发送电子邮件

コメント

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