主要内容

このページの翻訳は最新ではありません。ここをクリックして,英语の最新版を参照してください。

YOLO V2を使用したオブジェクト検出のコードの生成

この例では,你只能看一次(永乐)V2オブジェクト検出器用のCUDA®MEXを生成する方法を说明します.YOLO V2オブジェクトの検出ネットワークは2つのサブネットワークで构成されます。特徴抽出ネットワークに検出ネットワークが続きます。この例では,计算机视觉工具箱™の“YOLO V2深层学习を使用したオブジェクト検出” の例で学习させたネットワークのコードを生成します。详细については,YOLO V2深层学习を使用したオブジェクトの検出(计算机视觉工具箱)を参照してください。この例を変更すれば,“事前学习済みのONNX YOLO V2オブジェクト検出器のインポート” の例で计算机视觉工具箱™からインポートしたネットワーク用のCUDA®MEXを生成できます。详细については,事前学习済み済みonnx yolo v2オブジェクト検出器材のインポート(计算机视觉工具箱)を参照してください。

サードパーティの必要条件

必须

この例では,CUDA MEXを生成します。以下のサードパーティ要件が适用されます。

  • CUDA®対応NVIDIA®GPUおよび互换性のあるドライバー。

オプション

スタティックライブラリ,ダイナミックライブラリ,または実行可能ファイルなどのMEX以外のビルドについて,この例では以下の要件も适用されます。

GPU环境の検证

关数Coder.CheckGPuInstall.(GPU编码器)を使用して,この例を実行するのに必要なコンパイラおよびライブラリが正しく设定されていることを検证します。

envCfg = coder.gpuEnvConfig('主持人');envCfg.DeepLibTarget ='cudnn';envcfg.deepcodegen = 1;Envcf​​g.quiet = 1;Coder.CheckGpuInstall(Envcf​​g);

事前学习済みのDAGNetworkの取得

净= getYOLOv2();

DAGネットワ​​ークには,畳み込み层,RELU层,バッチ正规化层に加えて,YOLO V2変换层やYOLO V2出力层など,150个の层が含まれています。深层学习ネットワークアーキテクチャを対话的に可视化して表示するには,关数analyzeNetworkを使用します。

analyzeNetwork(净值);

エントリポイント关节yolov2_detect

エントリポイント关节yolov2_detect.mは,イメージ入力を受け取り,YOLOV2RESNET50VEHICEEXAMPLE.MAT.ファイルに保存されている深层学习ネットワークを使用して,イメージに対して検出器を実行します。この关数は,ネットワークオブジェクトをYOLOV2RESNET50VEHICEEXAMPLE.MAT.ファイルから永続変数yolov2Objに読み込み,それ以降の検出の呼び出しではこの永続オブジェクトを再利用します。

键入('yolov2_detect.m'
起作用outImg = yolov2_detect(上)%版权所有2018年至2019年MathWorks公司持久yolov2Obj;如果的isEmpty(yolov2Obj)yolov2Obj = coder.loadDeepLearningNetwork( 'yolov2ResNet50VehicleExample.mat');结束输入%的合格[bboxes,〜,标签] = yolov2Obj.detect(在, '阈值',0.5);%转换类别标签来为MATLAB%执行人物造型矢量的单元阵列如果coder.target(“MATLAB”)标签= cellstr(标签);结束图像以%注释检测。outImg = insertObjectAnnotation(在 '矩形',bboxes,标签);

Mexコード生成の行

エントリポイント关节yolov2_detect.mのCUDAコードを生成するには,MEXターゲットのGPUコード构成オブジェクトを作成し,ターゲット言语をC ++に设定します。关数coder.deeplearningconfig(GPU编码器)をを用してCuDNN深层学习构成オブジェクトを作成し,それをGPUコード构成オブジェクトのDeepLearningConfigプロパティに割り当てます。入力サイズ[224,224,3]を指定して代码生成コマンドを実行します。この値はYOLOv2の入力层サイズに対応します。

CFG = coder.gpuConfig('MEX');cfg.TargetLang ='C ++';cfg.DeepLearningConfig = coder.DeepLearningConfig('cudnn');代码生成-configCFGyolov2_detect-args{酮(224,224,3, 'UINT8')}-report
代码生成成功:要查看报告,打开( '代码生成/ MEX / yolov2_detect / HTML / report.mldatx')。

生成され梅克斯の実行

ビデオファイルリーダーを设定し,入力ビデオを読み取ります。ビデオプレイヤーを作成し,ビデオと出力の検出を表示します。

VideoFile =.'highway_lanechange.mp4';videoFreader = vision.VideoFileReader(录像档案,'VideoOutputDataType''UINT8');depVideoPlayer = vision.DeployableVideoPlayer(“大小”“自定义”'CustomSize',[640 480]);

ビデオ入力をフレームごとに読み取り,検出器を使用してビデオ内の车両を検出します。

续=〜isDone(videoFreader);尽管续I =步骤(videoFreader);在= imresize(I,[224224]);OUT = yolov2_detect_mex(IN);步骤(depVideoPlayer,出);续=〜isDone(videoFreader)&& ISOPEN(depVideoPlayer);%退出循环,如果视频播放器图形窗口关闭结束

参考文献

[1]雷德曼,约瑟夫,和Ali法哈迪。“YOLO9000:更好,更快,更强”。2017年IEEE会议计算机视觉与模式识别(CVPR)。IEEE,2017年。