实时目标检测与YOLO v2使用GPU编码器
在MATLAB中使用YOLO v2进行实时目标检测的示例®.我们从MATLAB中发布的一个示例开始,该示例解释了如何训练YOLO v2对象检测器,并使用GPU Coder™生成优化的CUDA代码。
我们通过使用nvcc将生成的代码编译成一个MEX文件来验证生成的代码,我们发现生成的MEX在测试视频文件上以大约每秒80帧的速度运行。
使用NVIDIA的硬件支持包万博1manbetx®图形处理器,我们将生成的代码部署到Jetson Xavier板作为一个独立的应用程序。
大家好,我是Ram Cherukuri, Mathworks的产品经理,在这个视频中,我将向您介绍一个在MATLAB中使用Yolo V2进行实时目标检测的例子。
Yolo是什么?
YOLO代表“你只看一次”,它是一种流行的目标检测方法。
对象检测的一种常用方法是重新使用分类器来执行检测。
例如,RCNN使用区域提议方法首先在图像中生成潜在的边界框,然后在这些提议的盒子上运行分类器,然后改进预测。如您所见,这需要多次计算。
另一方面,Yolo将检测构建为一个回归问题,并将对象检测的独立组件统一为一个单一的神经网络。
它将输入图像划分为一个网格,每个网格单元预测一定数量的边界框以及这些框的置信度分数。这些分数反映了模型对盒子包含对象的信心程度,以及它认为盒子预测的准确性。每个网格单元格还预测条件类概率。
这需要处理很多问题,我建议参考一些论文和文章来理解这种独特方法的细微差别,因为在这个短视频中不可能涵盖所有内容。
Yolo已经变得非常流行和重要,因为它被认为是最先进的技术,因为它使用单一网络,可以非常快速地进行实时物体检测。
即使您不熟悉,也可以通过MATLAB中发布的这个示例开始使用Yolo v2®这解释了如何在数据上训练Yolov2对象检测器。
然后,使用GPU Coder™,您可以生成优化的CUDA代码来针对NVIDIA®像Jetson Xavier这样的板子直接来自MATLAB。
硬件支持包使您能够将生成的万博1manbetx代码部署到Jetson和驱动器平台上,我们将在接下来的演示中看到这一点。
在MATLAB中,我已经从示例中获得训练过的对象检测器作为我的起点,我将在这里对测试图像运行推理。
事实上,我们运行了一个简单的测试,比较Faster RCNN模型和Yolo v2,您可以看到Yolo v2在我的本地机器上快了大约25倍。
现在,使用GPU Coder,我们将从这个函数生成CUDA代码,并使用nvcc将其编译成一个MEX文件,以便我们可以在我的台式机上验证生成的代码。
您可以看到,生成的MEX在我的桌面上的这个视频文件上以大约80帧/秒的速度运行,该视频文件具有Titan Xp GPU。
请注意,这些不是官方的基准测试数字,因为我还有一些其他程序也在后台运行,但这应该让您了解Yolo v2网络的性能。
现在,使用NVIDIA gpu的硬件支持包,我可万博1manbetx以从连接到我的Jetson Xavier板的摄像头获得实时数据,我们可以使用相同的生成MEX文件运行推断。
在这里,我使用窗外的实时数据俯瞰9号公路的交通状况。
最后,我可以从这里的算法生成代码,从网络摄像头获取输入,使用Yolo v2进行对象检测,并显示输出。
NVIDIA硬件支持包支持这些接口的代码万博1manbetx生成,一旦代码生成和构建完成,我们就可以在Jetson Xavier板上作为独立应用程序运行可执行文件。
所以,我们使用Yolo v2在Jetson Xavier上独立运行进行实时物体检测,从连接到它的网络摄像头获取实时输入。
这里总结了这个示例的一些要点。您可以直接从MATLAB中使用简单的api来定位NVIDIA板,如Jetson Xavier和Drive PX,而不需要编写任何CUDA代码。
请参考视频下方的链接,了解更多硬件支持包,并在MATLAB中找到更多目标检测示例。万博1manbetx
了解更多
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。