主要内容

このペ,ジは前リリ,スの情報です。該当の英語のペ,ジはこのリリ,スで削除されています。

歩行者の検出

この例では,深層学習を使用する歩行者検出用途のコ,ド生成を説明します。歩行者検出は,コンピュ,タ,ビジョンの重要な問題です。歩行者検出は,自動運転,監視,ロボット工学などの分野でさまざまに応用できます

必要条件

  • Cuda®対応nvidia®gpu。

  • Nvidia cudaルキットおよびドラバ。

  • NVIDIA cuDNN。

  • コンパ▪▪ラおよびラ▪▪ブラリの環境変数。サポトされているコンパイラおよびライブラリのバージョンの詳細は、サ,ドパ,ティハ,ドウェア(GPU编码器)を参照してください。環境変数の設定は,前提条件となる製品の設定(GPU编码器)を参照してください。

  • GPU编码器深度学习库接口サポ,トパッケ,ジ。このサポトパッケジをンストルするには,アドオンエクスプロラを使用します。

Gpu環境の検証

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

envCfg = code . gpuenvconfig (“主机”);envCfg。DeepLibTarget =“cudnn”;envCfg。DeepCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

歩行者検出ネットワ,ク

歩行者検出ネットワクには,歩行者のメジと歩行者以外のメジを使用して学習させました。このネットワ,クの学習は,matlab®でtrainPedNet.m補助スクリプトを使用して行われています。スライディングウィンドウ手法では,サイズ[64 32]のイメージからパッチをトリミングします。パッチの寸法は,デタセットにあるメジ内の歩行者の分布を表すヒトマップから取得されます。これは,。この例では,カメラに近い歩行者のパッチがトリミングされて処理されます。取得されたパッチに非最大抑制(NMS)が適用され,パッチがマージされて歩行者全体が検出されます。

歩行者検出ネットワ,クには,畳み込み層,全結合層,分類出力層など,12個の層が含まれています。

负载(“PedNet.mat”);PedNet。层
ans = 12×1带有图层的图层数组:1 imageinput的图像输入64×32×3图片2“zerocenter”正常化的conv_1卷积20 5×5×3旋转步[1]和填充[0 0 0 0]3‘relu_1 ReLU ReLU 4“maxpool_1”马克斯池2×2马克斯池步(2 - 2)和填充[0 0 0 0]5 crossnorm的横通道正常化横通道正常化与5频道/元素6‘conv_2卷积20 5×5×20旋转步[1]和填充[0 0 0 0]7‘relu_2 ReLU ReLU 8 maxpool_2马克斯池2×2马克斯pooling with stride [2 2] and padding [0 0 0 0] 9 'fc_1' Fully Connected 512 fully connected layer 10 'fc_2' Fully Connected 2 fully connected layer 11 'softmax' Softmax softmax 12 'classoutput' Classification Output crossentropyex with classes 'NonPed' and 'Ped'

エントリポ@ @ント関数pedDetect_predict

エントリポ@ @ント関数pedDetect_predict.mは,化学键メ,化学键ジ入力を受け取り,PedNet.matファルに保存されている深層学習ネットワクを使用して,いて予測を実行します。この関数は,PedNet.matファ▪▪ルからネットワ▪▪クオブジェクトを永続変数pednetに読み込みます。この関数のそれ以降の呼び出しでは,この永続オブジェクトが再利用されます。

类型(“pedDetect_predict.m”
Copyright 2017-2019 The MathWorks, Inc. code .gpu.kernelfun;持久pednet;if isempty(pednet) pednet = code . loaddeeplearningnetwork (code .const(' pednet .mat'),'Pedestrian_Detection');end [imgHt, imgWd, ~] = size(img);VrHt = [imgHt - 30, imgHt];垂直高度的两个波段被认为是% patchHt和patchWd是从热图中获得的(这里的热图是指以不同%颜色的地图形式表示的%行人数据。不同颜色表示存在不同比例的行人)。patchHt = 300;patchWd = patchHt/3;% PatchCount用于估计每个图像的补丁数量PatchCount = ((imgWd - patchWd)/20) + 2; maxPatchCount = PatchCount * 2; Itmp = zeros(64 , 32 , 3 , maxPatchCount); ltMin = zeros(maxPatchCount); lttop = zeros(maxPatchCount); idx = 1; % To count number of image patches obtained from sliding window cnt = 1; % To count number of patches predicted as pedestrians bbox = zeros(maxPatchCount , 4); value = zeros(maxPatchCount , 1); %% Region proposal for two bands for VrStride = 1 : 2 for HrStride = 1 : 20 : (imgWd - 60) % Obtain horizontal patches with stride 20. ltMin(idx) = HrStride + 1; rtMax = min(ltMin(idx) + patchWd , imgWd); lttop(idx) = (VrHt(VrStride) - patchHt); It = img(lttop(idx): VrHt(VrStride) , ltMin(idx) : rtMax , :); Itmp(:,:,:,idx) = imresize(It,[64,32]); idx = idx + 1; end end for j = 1 : size (Itmp,4) score = pednet.predict(Itmp(:,:,:,j)); % Classify ROI % accuracy of detected box should be greater than 0.90 if (score(1,2) > 0.80) bbox(cnt,:) = [ltMin(j),lttop(j), patchWd , patchHt]; value(cnt,:) = score(1,2); cnt = cnt + 1; end end %% NMS to merge similar boxes if ~isempty(bbox) [selectedBbox,~] = selectStrongestBbox(bbox(1:cnt-1,:),... value(1:cnt-1,:),'OverlapThreshold',0.002); end

関数pedDetect_predictのcuda mexの生成

Mexタ,ゲットのgpu構成オブジェクトを作成し,タ,ゲット言語をc++に設定します。関数编码器。DeepLearningConfig(GPU编码器)を使用してCuDNN深層学習構成オブジェクトを作成し,それをgpuコ,ド構成オブジェクトのDeepLearningConfigプロパティに割り当てます。Cuda mexを生成するには,codegenコマンドを使用し,入力@ @ @ジのサ@ @ @ @ @ @ @この値は歩行者検出ネットワクの入力層サズに対応します。

加载一个输入图像。Im = imread(“test.jpg”);Im = imresize(Im,[480,640]);cfg = code . gpuconfig (墨西哥人的);cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“cudnn”);codegen配置cfgpedDetect_predictarg游戏{我}报告
要查看报告,打开('codegen/mex/pedDetect_predict/html/report.mldatx')。

生成されたmexの実行

入力▪▪メ▪▪ジに対してpednet_predict_mexを呼び出します。

imshow (im);ped_bboxes = pedDetect_predict_mex(im);

最終予測を表示します。

outputImage = insertShape(im,“矩形”ped_bboxes,“线宽”3);imshow (outputImage);

ビデオに対する分類

用意されている補助ファ@ @ルpedDetect_predict.mは,ビデオからフレームを取得して,予測を実行し,取得した各ビデオフレームについて分類結果を表示します。

v = videereader ('LiveData.avi');FPS = 0;im = readFrame(v);Im = imresize(Im,[480,640]);
调用MEX函数进行penet预测;ped_bboxes = pedDetect_predict_mex(im);纽特= toc;
FPS = .9* FPS + .1*(1/newt);
% display outputImage = insertShape(im,'Rectangle',ped_bboxes,'LineWidth',3);imshow(outputImage) pause(0.2)结束

メモリに読み込まれた静的ネットワ,クオブジェクトをクリアします。

清晰的墨西哥人

関連するトピック