Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
NVIDIA VisionWorks Tips紹介
第45回コンピュータビジョン勉強会@関東
2018/4/21
@dandelion1124
自己紹介
Twitter ID:@dandelion1124
webpage: http://atinfinity.github.io/
• 学生時代は画像処理、VRの研究に従事
• 現在は都内勤務エンジニア
• Build Insiderにて...
TL;DR
➢ NVIDIA VisionWorksの環境構築はとっても簡単
➢ CMake、OpenCVとの連携もできる
➢ VisionWorksやるならgraph mode
➢ 日本語情報少ないのでみんなで使って記事を書こ
う!
OpenVXとは
• Khronos Groupが仕様策定しているコンピュータビ
ジョンアプリケーション向けのライブラリ、フレーム
ワーク
– https://www.khronos.org/openvx/
• ターゲットは低消費電力、リアルタ...
NVIDIA VisionWorksとは
• NVIDIAが提供するOpenVX implementation
• ソフトウェアスタックはざっくりとこんな感じ
https://www.khronos.org/assets/uploads/dev...
NVIDIA VisionWorks Tips
JetPackでJetson、PC環境にセットアップできる
✓ わかりにくいけどホストPCのみインストールすることも可
ホストPCへのインストール
Jetsonへのインストール
NVIDIA VisionWorks Tips
CMakeで使うときはfind_package(VisionWorks)でOK
• VisionWorks_FOUND:システムからの検出可否
• VisionWorks_INCLUDE_DIRS...
NVIDIA VisionWorks Tips
下記の場所に各種ファイルがある。
➢ インクルードパス
✓ /usr/include/VX
✓ /usr/include/NVX
➢ ライブラリパス
✓ /usr/lib
➢ サンプルコード、デー...
NVIDIA VisionWorks Tips
➢ OpenCVとの連携(cv::Mat)
✓ NVIDIA VisionWorksに連携APIが用意されている
✓ NVX/nvx_opencv_interop.hppをインクルードする必要が
...
NVIDIA VisionWorks Tips
➢ OpenCVとの連携(cv::cuda::GpuMat)
✓ NVIDIA VisionWorksに連携APIが用意されている
✓ NVX/nvx_opencv_interop.hppをインク...
NVIDIA VisionWorks Tips
nvprof、 NVIDIA Visual Profiler(nvvp)で簡単にプロファ
イリングできる
✓ nvvpを使ってJetson上で動作するVisionWorksプログラム
のプロファイ...
NVIDIA VisionWorks Tips
nvprof、 NVIDIA Visual Profiler(nvvp)で簡単にプロファ
イリングできる
✓ nvvpを使ってJetson上で動作するVisionWorksプログラム
のプロファイ...
NVIDIA VisionWorks Tips
➢graph modeを使おう!
OpenVXには2つのモードがあります。
✓graph mode
✓同期処理が少ないので高速
✓immediate mode
✓内部的にはOpenVXのVisio...
NVIDIA VisionWorks Tips
➢graph modeを使おう!
✓ graph modeの方が本当に速いのか実験
✓ 今回はSemiGlobalMatchingを使ったコードで実験
Color
Convert
SGM
left...
NVIDIA VisionWorks Tips
➢graph modeを使おう!
✓ 実行環境
✓NVIDIA Jetson TX2
✓JetPack 3.2
✓VisionWorks 1.6
✓ 入力画像
✓画像サイズ:1240x375
✓ ...
NVIDIA VisionWorks Tips
➢graph modeを使おう!
✓ 計測結果
✓ graph mode: 20.9 ms
✓ Immediate mode: 31.6 ms
✓ 実行結果
✓下図は入力画像にdepth(colo...
NVIDIA VisionWorks Tips
➢ その他試したこと
✓ graph最適化レベル変更
✓vxSetGraphAttributeで最適化レベルを指定できる
特に指定しない場合、デフォルトでは-O2となっている
NVIDIA VisionWorks Tips
➢ その他試したこと
✓ graph最適化レベル変更
✓コード例はこんな感じ
✓今回のサンプルでは効果が見られなかった・・・
✓もう少し複雑なgraphじゃないと効果がないのかも?(要検証)
co...
TODO(という名の積み残し)
➢ カスタムOpenVXノード実装
✓ 自作のOpenVXノードを作る
➢ OpenVXのスケジューリングAPI周りを試す
✓ どの程度高速化に効いてくるのか気になる
➢ VisionWorksのCUDA連携
➢...
まとめ
➢ NVIDIA VisionWorksの環境構築はとっても簡単
✓ JetPackでチェックするだけ
➢ CMake、OpenCVとの連携もできる
✓ CUDA連携については別の機会で
➢ VisionWorksやるならgraph m...
Nächste SlideShare
Wird geladen in …5
×

【第45回コンピュータビジョン勉強会@関東】NVIDIA VisionWorks Tips紹介

2.669 Aufrufe

Veröffentlicht am

【第45回コンピュータビジョン勉強会@関東】NVIDIA VisionWorks Tips紹介

Veröffentlicht in: Technologie
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

【第45回コンピュータビジョン勉強会@関東】NVIDIA VisionWorks Tips紹介

  1. 1. NVIDIA VisionWorks Tips紹介 第45回コンピュータビジョン勉強会@関東 2018/4/21 @dandelion1124
  2. 2. 自己紹介 Twitter ID:@dandelion1124 webpage: http://atinfinity.github.io/ • 学生時代は画像処理、VRの研究に従事 • 現在は都内勤務エンジニア • Build Insiderにて「OpenCV入門」という記事を連載中 – http://www.buildinsider.net/small/opencv
  3. 3. TL;DR ➢ NVIDIA VisionWorksの環境構築はとっても簡単 ➢ CMake、OpenCVとの連携もできる ➢ VisionWorksやるならgraph mode ➢ 日本語情報少ないのでみんなで使って記事を書こ う!
  4. 4. OpenVXとは • Khronos Groupが仕様策定しているコンピュータビ ジョンアプリケーション向けのライブラリ、フレーム ワーク – https://www.khronos.org/openvx/ • ターゲットは低消費電力、リアルタイムのアプリケー ション • 目的の処理を連結グラフで記述 OpenVXについて知りたい方は以前の発表資料もご参考ください。 https://www.slideshare.net/YasuhiroYoshimura/33openvx-nvidia-visionworks
  5. 5. NVIDIA VisionWorksとは • NVIDIAが提供するOpenVX implementation • ソフトウェアスタックはざっくりとこんな感じ https://www.khronos.org/assets/uploads/developers/library/2016-embedded-vision- summit/V2_VisionWorks_OpenVX_tutorial.pdf
  6. 6. NVIDIA VisionWorks Tips JetPackでJetson、PC環境にセットアップできる ✓ わかりにくいけどホストPCのみインストールすることも可 ホストPCへのインストール Jetsonへのインストール
  7. 7. NVIDIA VisionWorks Tips CMakeで使うときはfind_package(VisionWorks)でOK • VisionWorks_FOUND:システムからの検出可否 • VisionWorks_INCLUDE_DIRS:インクルードパス • VisionWorks_LIBRARIES:ライブラリファイル find_package(VisionWorks REQUIRED) if(VisionWorks_FOUND) include_directories(${VisionWorks_INCLUDE_DIRS}) add_executable(hoge ${SOURCES}) target_link_libraries(hoge ${VisionWorks_LIBRARIES}) endif(VisionWorks_FOUND)
  8. 8. NVIDIA VisionWorks Tips 下記の場所に各種ファイルがある。 ➢ インクルードパス ✓ /usr/include/VX ✓ /usr/include/NVX ➢ ライブラリパス ✓ /usr/lib ➢ サンプルコード、データ ✓ /usr/share/visionworks/sources/samples ✓ /usr/share/visionworks/sources/demos ✓ /usr/share/visionworks/sources/data
  9. 9. NVIDIA VisionWorks Tips ➢ OpenCVとの連携(cv::Mat) ✓ NVIDIA VisionWorksに連携APIが用意されている ✓ NVX/nvx_opencv_interop.hppをインクルードする必要が ある // Mat->vx_image cv::Mat src = cv::imread(“hoge.png”); vx_image v_src = nvx_cv::createVXImageFromCVMat(context, src); // vx_image->Mat nvx_cv::VXImageToCVMatMapper mapper(v_dst, 0, NULL, VX_READ_AND_WRITE, VX_MEMORY_TYPE_HOST); cv::Mat result = mapper.getMat();
  10. 10. NVIDIA VisionWorks Tips ➢ OpenCVとの連携(cv::cuda::GpuMat) ✓ NVIDIA VisionWorksに連携APIが用意されている ✓ NVX/nvx_opencv_interop.hppをインクルードする必要が ある // GpuMat->vx_image cv::cuda::GpuMat d_src(src); vx_image v_dsrc = nvx_cv::createVXImageFromCVGpuMat(context, d_src); // vx_image->GpuMat nvx_cv::VXImageToCVMatMapper mapper(v_ddst, 0, NULL, VX_READ_AND_WRITE, NVX_MEMORY_TYPE_CUDA); cv::cuda::GpuMat d_result = mapper.getGpuMat(); 最近やっと 3.x対応された
  11. 11. NVIDIA VisionWorks Tips nvprof、 NVIDIA Visual Profiler(nvvp)で簡単にプロファ イリングできる ✓ nvvpを使ってJetson上で動作するVisionWorksプログラム のプロファイルを取るときはホスト側のnvvpを起動して、 ssh経由でリモートプロファイリングする
  12. 12. NVIDIA VisionWorks Tips nvprof、 NVIDIA Visual Profiler(nvvp)で簡単にプロファ イリングできる ✓ nvvpを使ってJetson上で動作するVisionWorksプログラム のプロファイルを取るときはホスト側のnvvpを起動して、 ssh経由でリモートプロファイリングする あっ、VisionWorks内部はOpenCVのcudev::GlobPtrSzを 引数にしたCUDAカーネルになっているのか(学び)
  13. 13. NVIDIA VisionWorks Tips ➢graph modeを使おう! OpenVXには2つのモードがあります。 ✓graph mode ✓同期処理が少ないので高速 ✓immediate mode ✓内部的にはOpenVXのVision APIを1つのgraphとして処 理 ✓つまり、同期処理が増えるので遅い ✓あくまでプロトタイプ用途
  14. 14. NVIDIA VisionWorks Tips ➢graph modeを使おう! ✓ graph modeの方が本当に速いのか実験 ✓ 今回はSemiGlobalMatchingを使ったコードで実験 Color Convert SGM left gray right gray disparity right 画像データ ノード Color Convert left virtual image
  15. 15. NVIDIA VisionWorks Tips ➢graph modeを使おう! ✓ 実行環境 ✓NVIDIA Jetson TX2 ✓JetPack 3.2 ✓VisionWorks 1.6 ✓ 入力画像 ✓画像サイズ:1240x375 ✓ オリジナル画像サイズは1242x375だが、VisionWorksのSGMでは入力する画 像幅が4の倍数でないといけない制約があるため ✓KITTI stereo datasetを使用 ✓ http://www.cvlibs.net/datasets/kitti/eval_scene_flow.php?benchmark=stereo
  16. 16. NVIDIA VisionWorks Tips ➢graph modeを使おう! ✓ 計測結果 ✓ graph mode: 20.9 ms ✓ Immediate mode: 31.6 ms ✓ 実行結果 ✓下図は入力画像にdepth(colormap)を重畳したもの ✓ graph modeの方が高速! ✓ Jetson TX2でこの速度は魅力
  17. 17. NVIDIA VisionWorks Tips ➢ その他試したこと ✓ graph最適化レベル変更 ✓vxSetGraphAttributeで最適化レベルを指定できる 特に指定しない場合、デフォルトでは-O2となっている
  18. 18. NVIDIA VisionWorks Tips ➢ その他試したこと ✓ graph最適化レベル変更 ✓コード例はこんな感じ ✓今回のサンプルでは効果が見られなかった・・・ ✓もう少し複雑なgraphじゃないと効果がないのかも?(要検証) const char* option = "-O3"; vxSetGraphAttribute(graph, NVX_GRAPH_VERIFY_OPTIONS, option, strlen(option)); vxVerifyGraph(graph); O3を明示的に指定
  19. 19. TODO(という名の積み残し) ➢ カスタムOpenVXノード実装 ✓ 自作のOpenVXノードを作る ➢ OpenVXのスケジューリングAPI周りを試す ✓ どの程度高速化に効いてくるのか気になる ➢ VisionWorksのCUDA連携 ➢CUDA対応ライブラリや自作CUDAカーネルを組み込む時 に便利 ➢ VisionWorksを使ったROSパッケージ作成 ✓ SGM、Sfm、trackingあたりとか需要あるのでは?
  20. 20. まとめ ➢ NVIDIA VisionWorksの環境構築はとっても簡単 ✓ JetPackでチェックするだけ ➢ CMake、OpenCVとの連携もできる ✓ CUDA連携については別の機会で ➢ VisionWorksやるならgraph mode ➢ 日本語情報少ないのでみんなで使って記事を書こ う!

×