生成c++代码使用YOLO v2和英特尔MKL-DNN意思进行目标检测
这个例子展示了如何生成c++代码YOLO v2意思Intel®处理器对象检测网络。生成的代码使用英特尔数学内核库深神经网络(MKL-DNN)。
有关更多信息,请参见对象检测使用YOLO v2意思深入学习(计算机视觉工具箱)。
先决条件
英特尔数学内核库深层神经网络(MKL-DNN)
请参考MKLDNN CPU支万博1manbetx持知道处理器支持MKL-DNN库的列表万博1manbetx
MATLAB®编码器™为c++代码生成
为深度学习MATLAB编码器接口支持包万博1manbetx
深度学习工具箱™使用
DAGNetwork
对象计算机视觉工具箱™视频I / O操作
有关支持的版本的编译器的更多信息和图书馆,看到的万博1manbetx生成的代码使用第三方库。
这个例子支持Linux®、Win万博1manbetxdows®和macOS平台和不支持在线MATLAB。
得到PretrainedDAGNetwork
对象
DAG网络包含150层包括卷积,ReLU,批归一化层和YOLO v2转换和YOLO v2意思意思的输出层。
网= getYOLOv2 ();
下载pretrained检测器(98 MB)…
使用命令net.Layers
看到的所有层网络。
net.Layers
代码生成的yolov2_detection
函数
的yolov2_detection
函数附加示例需要一个图像输入和运行上的探测器图像保存在使用网络yolov2ResNet50VehicleExample.mat
。函数加载网络对象yolov2ResNet50VehicleExample.mat
到一个持续的变量yolov2Obj
。后续调用函数复用持久对象的检测。
类型(“yolov2_detection.m”)
函数outImg = yolov2_detection() % 2018 - 2019版权MathWorks, Inc . %持久对象yolov2Obj用于加载YOLOv2ObjectDetector对象。%在第一次调用这个函数,构造持久对象和%设置。后续调用函数重用相同的对象来调用检测输入%,从而避免不得不重建并重新载入%网络对象。持久yolov2Obj;如果isempty (yolov2Obj) yolov2Obj = coder.loadDeepLearningNetwork (“yolov2ResNet50VehicleExample.mat”);结束%通过输入[bboxes、~、标签]= yolov2Obj.detect(“阈值”,0.5);outImg =;%转换分类标签单元阵列特征向量的标签= cellstr(标签);如果~ (isempty (bboxes) & & isempty(标签))%注释图像中检测。outImg = insertObjectAnnotation(“矩形”,bboxes标签); end
代码来生成代码,创建一个配置对象为一个墨西哥人的目标和目标语言设置为c++。使用coder.DeepLearningConfig
函数创建一个MKL-DNN深度学习配置对象。给这个对象分配DeepLearningConfig
代码配置对象的属性。指定输入尺寸作为参数codegen
命令。在本例中,输入层YOLO v2意思网络的大小(224224 3)
。
cfg = coder.config (墨西哥人的);cfg。TargetLang =“c++”;cfg。DeepLearningConfig = coder.DeepLearningConfig (“mkldnn”);codegen配置cfgyolov2_detectionarg游戏{(224224 3 uint8)}报告
代码生成成功:查看报告,打开(“codegen /墨西哥人/ yolov2_detection / html / report.mldatx”)。
运行生成的墨西哥人输入函数例子
建立一个视频文件读者和阅读的例子输入视频highway_lanechange.mp4
。创建一个视频播放器显示视频和输出检测。
videoFile =“highway_lanechange.mp4”;videoFreader = vision.VideoFileReader (videoFile,“VideoOutputDataType”,“uint8”);depVideoPlayer = vision.DeployableVideoPlayer (“大小”,“自定义”,“CustomSize”480年[640]);
读取视频逐帧输入和检测视频中的车辆使用探测器。
续= ~结束(videoFreader);而续我= (videoFreader);在= imresize(我,[224224]);= yolov2_detection_mex(的);depVideoPlayer(出);续= ~结束(videoFreader) & & isOpen (depVideoPlayer);%退出循环,如果视频播放器图关闭窗口结束
引用
[1]Redmon,约瑟夫和阿里蒂。“YOLO9000:更好、更快、更强”。In2017年IEEE计算机视觉与模式识别会议(CVPR),6517 - 25所示。火奴鲁鲁,你好:IEEE 2017。
另请参阅
coder.DeepLearningConfig
|coder.hardware