主要内容

。

シングルショットマルチボックス検出器材を使したオブジェクト検出の生成

この例では,ssdネットワーク(ssdobjectdetectorオブジェクト)使用のcuda®コードを生成し,nvidia®Cudnnライブラリライブラリとrtsortライブラリを活活活するををします.ssdネットワークネットワーク,イメージはの复のをシングルショット検出する,フィードフォワード畳み込みニューラルネットワークネットワークててます.sdネットワークは,2つのサブネットワークもつとことができます。

このこのでで,计算机Vision Toolbox™の“SSD深層学習を使用したオブジェクト検出“の例で学習させたネットワークのコードを生成します。詳細については,SSD深層学習を使用したオブジェクト検出を参照してください。“SSD深層学習を使用したオブジェクト検出“の例では,特徴抽出にResNet-50を使用します。検出サブネットワークは特徴抽出ネットワークと比べて小さいCNNであり,少数の畳み込み層とSSDに固有の層で構成されます。

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

必须

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

  • CUDA®対応NVIDIA®GPUおよびおよび互换性性あるある

オプション

スタティックライブラリ,ダイナミックライブラリ,または実行可能のmex户外のビルド,この例ではビルド要件要件されます。

GPU環境の検証

关节coder.checkGpuInstall(GPU编码器)をを用し,この例を実行するのに必要なコンパイラおよびがが设定されれてこと検证ししし検证を検证しし

envcfg = coder.gpuenvconfig(“主机”);envcfg.deeplibtarget ='cudnn';envCfg。DeepCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

事前学习済みのdagnetworkのの

net = getssdnw();
下载预用探测器(44 MB)......

DAGネットワ​​ークネットワークに,畳み込み畳み込み,relu层,バッチ正规层に加入て,アンカーアンカー层,ssdマージ层,焦点损失层など,180个の层がれてます。可以化して表示するはは,关联分析(深度学习工具箱)を使用します。

分析(网);

エントリポイント关节ssdobj_detect.

エントリポイント関数ssdobj_detect.m.は,イメージイメージ力を,SSDRESNET50VEHICEEXAMPLE_20A.MAT.ファイルに保存されている习习习ネットワークを使し,イメージイメージ検出器材をし。附近,ネットワークネットワークは,ネットワークオブジェクトをSSDRESNET50VEHICEEXAMPLE_20A.MAT.ファイルファイル永続数ssdobj.に読み込み,それ以降の検出のではこの永続オブジェクトをを利用します。

类型('ssdobj_detect.m'
函数outimg = ssdobj_detect(in)%2019-2020 mathworks,Inc.persistent ssdobj;如果是isempty(ssdobj)ssdobj = coder.loaddeeplearningnetwork('ssdresnet50vehiceplice_20a.mat');终端%通过输入[Bboxes,〜,标签] = ssdobj.detect(in,'threshold',0.7);%将分类标签转换为CharAtor向量的单元格阵列,以%执行标签= CellStr(标签);%注释图像中的检测。如果〜isempty(标签)outimg = InsertObjectAnnotation(IN,'矩形',Bboxes,标签);否则outimg = in;结尾

墨西哥人コード生成の実行

エントリポイント関数ssdobj_detect.m.のcudaコードを生成するは,mexターゲットのgpuコード成オブジェクトを作用成,ターゲットターゲットをc ++に设定ます。关联编码器。DeeplearningConfig(GPU编码器)を使用してCUDNN.深层学习构成オブジェクト作物,それをgpuコード成オブジェクトのDeeplearningConfigプロパティに割り当てます。入力サイズ(300300 3)を指定してCodegen.コマンドを実行します。この値はSSDネットワークの入力層サイズに対応します。

cfg = coder.gpuconfig('mex');cfg.targetlang =.'c ++';cfg.deeplearningconfig = coder.deeplearningconfig('cudnn');Codegen.-Config.CFG.ssdobj_detect.-  args.{ONE(300,300,3,'UINT8')}-报告
代码生成成功:要查看报告,请打开('codegen / mex / ssdobj_detect / html / eport.mldatx')。

生成された墨西哥人の実行

ビデオファイルビデオをし,入ビデオををます。

videoFile ='highway_lanechange.mp4';Videofreader = Vision.videofilereader(VideoFile,'VideoOutputDatatype''uint8');depvideoplayer = Vision.DeployapleDapeplayAlyer('尺寸''风俗''自定义大小',[640 480]);

ビデオビデオ力量をごとに読み取り読み取り読み取りビデオビデオの内内をを検出検出し検出しししし

cont =〜ISDONE(Videofreader);cont i = step(videofreader);在= imresize(i,[300,300]);out = ssdobj_detect_mex(in);步骤(Demvideoplayer,Out);cont =〜ISDONE(VideoFreader)&& Inopen(depvideoplayer);如果关闭视频播放器图形窗口,则%退出循环结尾

参考文献

[1]刘,魏,龙卷风犬,丹麦特·埃哈,基督教斯德,斯科特芦苇,郑阳富,亚历山大C.伯格。“SSD:单次拍摄多杆探测器。”第14届欧洲电脑愿景会议,ECCV 2016年。Springer Verlag,2016年。