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 CUDA Toolkit およびドライバー。
コンパイラコンパイラライブラリのの。サードパーティハードウェアを参照してください。環境変数の設定は、前提条件となる制品の设定を参照してください。
ホストでの 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)
关键词する
- NVIDIAハードウェアでの実行可能ファイルのとと行
- GPU编码器アプリを使用した NVIDIA ハードウェアでの実行可能ファイルのビルドと実行
- 停止或重新启动NVIDIA硬件上的可执行文件(MATLAB编码器支持包为金宝appNVIDIA Jetson和NVIDIA Drive Platforms)
- 在NVIDIA硬件上运行Linux命令(MATLAB编码器支持包为金宝appNVIDIA Jetson和NVIDIA Drive Platforms)