主要内容

用YOLO V2和英特尔MKL DNN生成C++对象检测代码

这个例子展示了如何在英特尔®处理器上生成YOLO V2对象检测网络的C++代码。生成的代码使用英特尔数学内核库,用于深度神经网络(MKL DNN)。

有关详细信息,请参阅基于YOLO v2深度学习的目标检测(计算机视觉工具箱)

先决条件

  • 英特尔深度神经网络数学内核库(MKL-DNN)

  • 参考MKLDNN CPU支金宝app持了解支持MKL-DNN库的处理器列表金宝app

  • MATLAB®编码器™ C++代码生成

  • MATLAB编码器接口的深度学习支持包金宝app

  • 深度学习工具箱™达格网络对象

  • 计算机视觉工具箱™ 用于视频I/O操作

有关受支持版本的编译器和库的详细信息,请参阅金宝app第三方软硬件

这个例子是支持Linux®,Wi金宝appndows®和macOS平台,不支持MATLAB Online。

得到Pretrained达格网络对象

DAG网络包含150层,包括卷积层、ReLU层、批处理正常化层、YOLO v2转换层和YOLO v2输出层。

net=getYOLOv2();
下载预训练检测器(98mb)…

使用命令网。层查看网络的所有层。

网。层

代码生成yolov2_检测函数

这个yolov2_检测附加在示例中的函数接受图像输入,并使用保存在其中的网络在图像上运行检测器yolov2ResNet50VehicleExample.mat.函数从yolov2ResNet50VehicleExample.mat变成一个持久变量yolov2Obj.后续对该函数的调用将重用持久对象进行检测。

类型(“yolov2_detection.m”)
函数outImg=yolov2_检测(in)%2018-2019版权所有MathWorks,Inc.%持久对象yolov2Obj用于加载YOLOV2OBJECTDECTOR对象在第一次调用此函数时,将构造并设置持久对象。对函数的后续调用将重用同一对象来调用输入上的检测%,从而避免必须重新构建和重新加载%网络对象。持久性yolov2Obj;如果isempty(yolov2Obj)yolov2Obj=coder.loadDeepLearningNetwork('yolov2ResNet50VehicleExample.mat');输入[B盒,~,标签]=yolov2Obj.detect(输入,'阈值',0.5)的结束百分比通过率;outImg=in;%将分类标签转换为字符向量标签的单元格数组=cellstr(标签);如果~(isempty(bboxes)&&isempty(labels))%,则对图像中的检测进行注释。outImg=插入对象注释(在“矩形”、“bboxes”和标签中);终止

若要生成代码,请为MEX目标创建代码配置对象,并将目标语言设置为C++。编码器。DeepLearningConfig函数创建MKL-DNN深度学习配置对象。将此对象指定给DeepLearningConfig代码配置对象的属性。将输入大小指定为编码基因命令在本例中,YOLO v2网络的输入层大小为[224,224,3]

cfg=coder.config(“墨西哥”); cfg.TargetLang=“C++”;cfg.DeepLearningConfig=coder.DeepLearningConfig(“mkldnn”); 编码基因-配置cfgyolov2_检测-args{one(224224,3,'uint8')}报告
代码生成成功:要查看报告,请打开('codegen/mex/yolov2_detection/html/report.mldatx')。

在示例输入上运行生成的MEX函数

设置视频文件读取器并读取示例输入视频lanechange.mp4公路.创建一个视频播放器来显示视频和输出检测。

videoFile =“highway_lanechange.mp4”;videoFreader =愿景。VideoFileReader (videoFile“VideoOutputDataType”,‘uint8’); depVideoPlayer=vision.DeployableVideoPlayer(“尺寸”,“自定义”,“定制尺寸”,[640 480]);

逐帧读取视频输入,利用检测器检测视频中的车辆。

续= ~结束(videoFreader);cont I = step(videoFreader);在= imresize(我,[224224]);= yolov2_detection_mex(的);depVideoPlayer(出);= ~isDone(videoFreader) && isOpen(depVideoPlayer);%如果视频播放器图形窗口关闭,则退出循环终止

参考文献

雷蒙德,约瑟夫和阿里·法哈迪。“YOLO9000:更好、更快、更强。”在2017年IEEE计算机视觉和模式识别会议(CVPR),6517–25。檀香山,HI:IEEE,2017。

另见

|

相关的话题