主要内容

代码生成的对象检测使用YOLO v2的意思

这个例子展示了如何生成CUDA®墨西哥人对你只看一次(YOLO)意思v2对象探测器。YOLO v2意思对象检测网络由两个子网。一个特征提取网络之后,检测网络。这个示例中生成代码的网络训练对象检测使用YOLO v2意思深入学习计算机视觉的工具箱™的例子。有关更多信息,请参见对象检测使用YOLO v2意思深入学习(计算机视觉工具箱)。您可以修改这个示例生成CUDA®网络进口墨西哥人进口Pretrained ONNX YOLO v2意思对象探测器计算机视觉的工具箱™的例子。有关更多信息,请参见进口Pretrained ONNX YOLO v2意思对象探测器(计算机视觉工具箱)

第三方的先决条件

要求

这个示例中生成CUDA墨西哥人,有以下第三方的要求。

  • CUDA®启用NVIDIA GPU®和兼容的驱动程序。

可选

等non-MEX构建静态、动态库或可执行文件,这个例子有以下额外的需求。

验证GPU环境

使用coder.checkGpuInstall(GPU编码器)函数来确认所需的编译器和库运行这个例子是正确设置。

envCfg = coder.gpuEnvConfig (“主机”);envCfg。DeepLibTarget =“cudnn”;envCfg。DeepCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

得到Pretrained DAGNetwork

网= getYOLOv2 ();

DAG网络包含150层包括卷积,ReLU,批归一化层和YOLO v2转换和YOLO v2意思意思的输出层。显示一个交互式可视化的深度学习网络体系结构,使用analyzeNetwork函数。

analyzeNetwork(净);

yolov2_detect入口点函数

yolov2_detect.m入口点函数接受一个图像输入和运行上的探测器使用深度学习网络保存在图像yolov2ResNet50VehicleExample.mat文件。加载的网络对象的函数yolov2ResNet50VehicleExample.mat文件到一个持续的变量yolov2Obj在随后的检测要求和重用持久对象。

类型(“yolov2_detect.m”)
函数outImg = yolov2_detect () % MathWorks版权2018 - 2019,公司持续yolov2Obj;如果isempty (yolov2Obj) yolov2Obj = coder.loadDeepLearningNetwork (“yolov2ResNet50VehicleExample.mat”);结束%通过输入[bboxes、~、标签]= yolov2Obj.detect(“阈值”,0.5);%转换分类标签单元阵列特征向量的MATLAB %执行如果coder.target (MATLAB)标签= cellstr(标签);%注释图像中检测结束。outImg = insertObjectAnnotation(“矩形”,bboxes标签);

墨西哥人运行代码生成

生成CUDA代码yolov2_detect.m入口点函数,创建一个GPU代码配置对象为一个墨西哥人的目标和目标语言设置为c++。使用coder.DeepLearningConfig(GPU编码器)函数创建一个CuDNN深度学习配置对象,并将其分配给DeepLearningConfigGPU代码配置对象的属性。运行codegen命令指定一个输入(224224 3)的大小。这个值对应于输入层YOLOv2的大小。

cfg = coder.gpuConfig (墨西哥人的);cfg。TargetLang =“c++”;cfg。DeepLearningConfig = coder.DeepLearningConfig (“cudnn”);codegen配置cfgyolov2_detectarg游戏{(224224 3 uint8)}报告
代码生成成功:查看报告,打开(“codegen /墨西哥人/ yolov2_detect / html / report.mldatx”)。

运行生成的墨西哥人

设置视频文件阅读器和读取输入的视频。创建一个视频播放器显示视频和输出检测。

videoFile =“highway_lanechange.mp4”;videoFreader = vision.VideoFileReader (videoFile,“VideoOutputDataType”,“uint8”);depVideoPlayer = vision.DeployableVideoPlayer (“大小”,“自定义”,“CustomSize”480年[640]);

读取视频输入帧和使用检测器检测视频中的车辆。

续= ~结束(videoFreader);续我= (videoFreader);在= imresize(我,[224224]);= yolov2_detect_mex(的);步骤(depVideoPlayer);续= ~结束(videoFreader) & & isOpen (depVideoPlayer);%退出循环,如果视频播放器图关闭窗口结束

引用

[1]Redmon,约瑟夫和阿里蒂。“YOLO9000:更好、更快、更强”。2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2017.