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