Main Content

NVIDIA Jetson TX2 プラットフォームでの Web カメラ イメージの展開と分類

このこのでは,GPU编码器™支持包金宝app用于NVIDIA GPUSをを使てて,DagnetworkオブジェクトからCuda®コードを生成し,その生成コードをnvidia®jetson®tx2ボードに开着方法をを明しし。この例では,Resnet50深层学习ネットワークネットワークして,USB网页カメラのビデオのをををを

必要条件

ターゲットボード要件

  • nvidia jetson tegra tx2组み込みプラットフォーム。

  • ターゲットボードとホストpcを接続するイーサネットクロスオーバーオーバー(ターゲットボードをローカルネットワークネットワーク接続できできない合)。

  • USB カメラ (TX2 に接続するため)。

  • ターゲットボードにインストールされいるnvidia cuda工具包。

  • ターゲットボード上のnvidia cudnnライブラリ。

  • イメージとビデオを読み取っ表示するためのターゲットのopencvライブラリ。

  • コンパイラコンパイラライブラリライブラリ用のターゲットの环境変。安装和设置NVIDIA板的先决条件(MATLAB编码器支持包为金宝appNVIDIA Jetson和NVIDIA Drive Platforms)对于NVIDIA板上をを参照してて。

开発用ホスト

ホストでの NVIDIA サポート パッケージのインストールの検証

关节有关部checkHardwareSupportPackageInstallをを使,ホストシステムに,この例を実するため互换があること确认确认しししし

checkhardware金宝appsupportPackageInstall();

NVIDIA ハードウェアへの接続

GPU编码器支持包为金宝appNVIDIA GPUは,生成さたたたをjetsonプラットフォームでビルド実行しいるいるでの接続使使使しコマンドを実しますますます。そのため,ターゲットプラットフォームをホスト実。。

NVIDIA ハードウェアと通信するには、関数杰森(MATLAB编码器支持包为金宝appNVIDIA Jetson和NVIDIA Drive Platforms)を使用してライブ ハードウェア接続オブジェクトを作成しなければなりません。ライブ ハードウェア接続オブジェクトを作成するには、ターゲット ボードのホスト名または IP アドレス、ユーザー名、およびパスワードを知っている必要があります。

hwobj = jetson('主机名''username''password');

接続接続失败したた合书,MATLABコマンドコマンドラインで诊断エラーがが失败しされれに能能能性性いい原因原因能能性性いい原因は能能名いががているいること

异なるターゲットに対するに対する数の接続オブジェクトががある合书,コードジェネレーターは最新のライブが作物さがターゲットターゲットででビルドリモートででますしますますます。リモートビルドを実行ハードウェアボード选択ははハードウェアハードウェアするははオブジェクトのsetupcodegencontext()メソッドメソッド使ますます。

hwobj.setupcodegencontext;

ターゲットの GPU 環境の検証

关节有关部coder.checkGpuInstallをを使して,この例を実行するのに必要なコンパイラおよびがが设定されれてを検证しし

envcfg = coder.gpuenvconfig('jetson');envcfg.deeplibtarget =.'cudnn'; envCfg.DeepCodegen = 1; envCfg.Quiet = 1; envCfg.HardwareObject = hwobj; coder.checkGpuInstall(envCfg);

Resnet -50エントリポイント关圈

エントリポイント関数Resnet50_Wrapper.。mは,事前学习済みのresnet-50ネットワークを使使しイメージををします.Resnet-50は,Imagenetデータベースののデータを超えるでで习のののです。各クラスのカテゴリカルスコアが含まれます。

类型Resnet50_Wrapper.
function out = resnet50_wrapper(im,ocvFlag) %#codegen % Wrapper function to call ResNet50 predict function. % Copyright 2019-2021 The MathWorks, Inc. % This example uses OpenCV for reading frames from a web camera and % displaying output image. Update buildinfo to link with OpenCV library % available on target. if ocvFlag opencv_link_flags = '`pkg-config --libs opencv4`'; opencv_compile_flags = '`pkg-config --cflags opencv4`'; else opencv_link_flags = '`pkg-config --libs opencv`'; opencv_compile_flags = '`pkg-config --cflags --libs opencv`'; end coder.updateBuildInfo('addLinkFlags',opencv_link_flags); coder.updateBuildInfo('addCompileFlags',opencv_compile_flags); % To avoid multiple loads of the network for each run, we use persistent % rnet persistent rnet; if isempty(rnet) rnet = resnet50(); end out = rnet.predict(im); end

ターゲットターゲットでopencvバージョンの取得

pkg-config.补助ツールを使用して,OpenCV的4.x的がターゲットボードにインストールされているかどうかを照会します。この例では,この情报を使用してビルド情报を更新し,ターゲットで使用できる适切な的OpenCVライブラリにリンクします。

isOpenCV4 = 1; ocvVersion = hwobj.OpenCVVersion();如果(str2double(ocvVersion(1)) <= 3) isOpenCV4 = 0;结尾

ターゲットでの CUDA コードの生成と展開

NVIDIA ターゲットに展開できる CUDA 実行可能ファイルを生成するには、実行可能ファイルを生成するための GPU Coder 構成オブジェクトを作成します。

cfg = coder.gpuconfig('EXE文件');

关节有关部编码器。硬件を使用してjetsonプラットフォームプラットフォームのののの成オブジェクト作物作作作作者:しCFG.硬件プロパティに割り当てます。

cfg.hardware = coder.hardware('nvidia jetson');

深层学习构成を'cudnn'または'张力'に设定ます。

cfg.deeplearningconfig = coder.deeplearningconfig('cudnn');

このをを力として使てコード生成をます。

コード生成のサンプル イメージの入力

im = single(imread('peppers.png')); im = imresize(im,[224,224]);

カスタムメインファイルは,ビデオをを力として受け取っそのビデオシーケンスの各をするようコードされmain_resnet50.cu.ファイルは,生成コード内で关数预测を呼び出すラッパーです。入力フレームに出力を表示するなどの后处理手顺は的OpenCVインターフェイスを使用してメインファイルに追加されています。

cfg.customsource = fullfile('main_resnet50.h');cfg.customsource = fullfile('main_resnet50.cu');

Cudaコードを生成してターゲットに开着するには,关联Codegen.を使用し、GPU コード構成オブジェクトを渡します。ホストでコード生成が行われた後、生成されたファイルがターゲット上のワークスペース ディレクトリにコピーされてビルドされます。

Codegen.-Config.CFG.-  args.{im,coder.Constant(isOpenCV4)}Resnet50_Wrapper.-报告

ターゲットでのアプリケーションのの行

putFileコマンドを使用して,synsetWords_resnet50テキストファイルをホストコンピューターからターゲットデバイスにコピーします。

putfile(hwobj,'synsetwords_resnet50.txt',hwobj.workspacedir);

ハードウェアオブジェクトの禁用メソッドを使用して、ターゲット ハードウェアでアプリケーションを起動します。アプリケーションはワークスペース ディレクトリ内に配置されます。

润载(HWOBJ,'resnet50_wrapper');

ターゲットボードでウェブカメラウィンドウ表示されない场ないれたディスプレイがささている可以setDisplayEnvironmentを使の使ますししますますししますますししますますますますますますますします。$DISPLAY環境変数と同じにしなければなりません。

Jetson TX2でのresnet分析

アプリケーションの强制终了

ハードウェアオブジェクトのkillApplicationメソッドを使用して、ターゲット上で実行中のアプリケーションを強制終了します。

killApplication(hwobj,'resnet50_wrapper');

参考

オブジェクト

  • (MATLAB编码器支持包为金宝appNVIDIA Jetson和NVIDIA Drive Platforms)|(MATLAB编码器支持包为金宝appNVIDIA Jetson和NVIDIA Drive Platforms)

关键词する