这个例子展示了如何生成CUDA®墨西哥人对你只看一次(YOLO)意思v2对象探测器。YOLO v2意思对象检测网络由两个子网。一个特征提取网络之后,检测网络。这个示例中生成代码的网络训练对象检测使用YOLO v2意思深入学习计算机视觉的工具箱™的例子。有关更多信息,请参见对象检测使用YOLO v2意思深入学习(计算机视觉工具箱)。您可以修改这个示例生成CUDA®网络进口墨西哥人进口Pretrained ONNX YOLO v2意思对象探测器计算机视觉的工具箱™的例子。有关更多信息,请参见进口Pretrained ONNX YOLO v2意思对象探测器(计算机视觉工具箱)。
要求
这个示例中生成CUDA墨西哥人,有以下第三方的要求。
CUDA®启用NVIDIA GPU®和兼容的驱动程序。
可选
等non-MEX构建静态、动态库或可执行文件,这个例子有以下额外的需求。
英伟达工具包。
英伟达cuDNN图书馆。
环境变量的编译器和库。有关更多信息,请参见第三方硬件(GPU编码器)和设置必备产品s manbetx 845(GPU编码器)。
使用coder.checkGpuInstall
(GPU编码器)函数来确认所需的编译器和库运行这个例子是正确设置。
envCfg = coder.gpuEnvConfig (“主机”);envCfg。DeepLibTarget =“cudnn”;envCfg。DeepCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);
网= 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
深度学习配置对象,并将其分配给DeepLearningConfig
GPU代码配置对象的属性。运行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.