基于Simulink的NVIDIA GPU深度学习:使用GPU编码器生成CUDA代码
动态仿真模块®是设计复杂系统的可靠工具,包括决策逻辑和控制器、传感器融合、车辆动力学和3D可视化组件。
从版本2020b开始,您可以将深度学习网络合并到您的Simulink模型中,以执行系统级仿真和部署。
学习如何在NVIDIA的Simulink中使用基于YOLO v2的深度学习网络运行车道和车辆检测器的模拟®gpu。Simulink模型包括预处理和后处理组件,执行诸如调整传入视频的大小、检测坐标和围绕检测到的车辆绘制边界框等操作。使用相同的Simulink模型,您可以使用cuDNN或TensorRT生成优化的CUDA代码,以瞄准NVIDIA Tesla等gpu®和英伟达杰森®平台。
Simulink是设计复杂系统的可靠工具,包括决策逻辑、控制器、传感器融合、车辆动力学和3D可视化组件。从版本2020b开始,您可以将深度学习网络合并到您的Simulink模型中,以执行系统级仿真和部署。如果我们观察车辆和车道检测子系统内部,我们将看到顶部和底部两个深度学习网络的使用。我们输入的视频会进来,然后我们会做一些预处理来调整图像的大小,然后我们把它输入车道检测网络。
这里,你可以看到这是由MATLAB目录下的一个数学文件带来的。我们将做一些后处理来检测左右车道的坐标,最后我们将做一些注释来突出显示车辆和车道。底部的深度学习网络是检测车辆,它基于YOLOv2。你可以看到这是从目录中的mat文件中加载的。回来,我们可以运行模拟。你可以看到我们的输入视频在左边,我们的输出视频在右边,我们用绿色标记突出显示左右车道。然后我们在我们看到的车辆周围开着黄色的边框。所以在这一点上,我们准备继续并生成代码,以便我们可以启动Simulink编码器或嵌入式代码包装。
让我们首先看一下代码生成设置。在这里,您将看到我们使用了正确的系统目标文件,并且选中了这里的复选框以生成CUDA代码。我们还可以看看深度学习库。在本例中,我们可以选择cuDNN或tensort,因此我们暂时保留cuDNN。对于工具链设置,我们使用NVIDIA的CUDA工具包。最后,对于非深度学习部分,我们使用优化的库,如cuBLAS、cuSOLVER和cuFFT。
我们都准备好了,让我们继续生成代码。这是代码生成报告,您可以在左边看到生成的文件。我们先来看阶跃函数。在下面这里,你可以看到cudaMalloc调用它在GPU内存上分配变量。这里,我们有cudaMemcpy,它从CPU内存复制数据到GPU内存,并在正确的位置返回。这里,有几个GPU内核正在启动以加快GPU内核的速度。我们也有两个深度学习网络。这是我们的第一个,LaneNet。你可以在这里看到所有的公共和私有方法。这里我们有设置、预测、清理,还有其他一些。
这是我们的第二个深度学习网络,那是使用YOLOv2的车辆检测器。同样,我们有相同的方法。如果我们看一下setup方法的内部,你可以看到在程序开始时运行一次的代码,将深度学习网络加载到内存中。如果你看这里,我们一次通过一层,我们在通过的过程中加载权重和偏差。以上就是从使用深度学习网络的Simulink模型生成CUDA代码的简单介绍。欲了解更多信息,请查看下面的链接。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。