Jetson TK1

OpenCVのインストールの前に

  • 公式サイト を参考にすれば、パッケージになっているOpenCV 2.4.9 がインストールできる。*1
  • ただ、面白く無いので、今回は3.0.0-beta を git + cmake でインストールとbuildしてみる

OpenCVのビルドに必要なもの

  • git
  • cmake
    sudo apt-get -y install cmake git
  • cmake は 2.8.12.2

今回のターゲット

  • Jetson TK1
  • L4T (Ubuntu 14.04をベースにしたもの)
  • Arm A15 w/ neon
  • Tegra K1 (192 core)

OpenCV の取得

  • gitでcloneする
    git clone git://code.opencv.org/opencv.git opencv
  • 14min ぐらいかかった
  • cmake してみる
  • cuda が無いと言われる。しかたないので、CUDAをインストールする

OpenCV のオプション

  • できればNEONの有効性も検証したいので -DENABLE_NEON:BOOL=ON する
  • Tegra用のCUDAアーキテクチャさえビルドできれば良いので、 -DCUDA_ARCH_BIN=3.2 -DCUDA_ARCH_PTX= にする
  • ついでにexamplesもビルドする
    cmake . -DWITH_EXAMPLES=ON -DENABLE_NEON:BOOL=ON -DCUDA_ARCH_BIN=3.2 -DCUDA_ARCH_PTX=
  • NEONが有効になってるのかが分からないが、__ARM_NEON__ 定数が入っているっぽいので、とりあえず有効になっていると信じてビルドしてみる
    make -j 4 install
  • Armの4coreをフルに使う
  • Arm Cortex A15 quad core 211minかかった

cvconfig.h

/* OpenCV compiled as static or dynamic libs */
#define BUILD_SHARED_LIBS

/* Compile for 'real' NVIDIA GPU architectures */
#define CUDA_ARCH_BIN " 32"

/* Create PTX or BIN for 1.0 compute capability */
/* #undef CUDA_ARCH_BIN_OR_PTX_10 */

/* NVIDIA GPU features are used */
#define CUDA_ARCH_FEATURES " 32"

/* Compile for 'virtual' NVIDIA PTX architectures */
#define CUDA_ARCH_PTX ""

/* AVFoundation video libraries */
/* #undef HAVE_AVFOUNDATION */

/* V4L capturing support */
/* #undef HAVE_CAMV4L */

/* V4L2 capturing support */
#define HAVE_CAMV4L2

/* Carbon windowing environment */
/* #undef HAVE_CARBON */

/* AMD's Basic Linear Algebra Subprograms Library*/
/* #undef HAVE_CLAMDBLAS */

/* AMD's OpenCL Fast Fourier Transform Library*/
/* #undef HAVE_CLAMDFFT */

/* Clp support */
/* #undef HAVE_CLP */

/* Cocoa API */
/* #undef HAVE_COCOA */

/* C= */
/* #undef HAVE_CSTRIPES */

/* NVidia Cuda Basic Linear Algebra Subprograms (BLAS) API*/
/* #undef HAVE_CUBLAS */

/* NVidia Cuda Runtime API*/
#define HAVE_CUDA

/* NVidia Cuda Fast Fourier Transform (FFT) API*/
#define HAVE_CUFFT

/* IEEE1394 capturing support */
/* #undef HAVE_DC1394 */

/* IEEE1394 capturing support - libdc1394 v2.x */
/* #undef HAVE_DC1394_2 */

/* DirectX */
/* #undef HAVE_DIRECTX */
/* #undef HAVE_D3D11 */
/* #undef HAVE_D3D10 */
/* #undef HAVE_D3D9 */

/* DirectShow Video Capture library */
/* #undef HAVE_DSHOW */

/* Eigen Matrix & Linear Algebra Library */
/* #undef HAVE_EIGEN */

/* FFMpeg video library */
/* #undef HAVE_FFMPEG */

/* ffmpeg's libswscale */
/* #undef HAVE_FFMPEG_SWSCALE */

/* ffmpeg in Gentoo */
/* #undef HAVE_GENTOO_FFMPEG */

/* Geospatial Data Abstraction Library */
/* #undef HAVE_GDAL */

/* GStreamer multimedia framework */
/* #undef HAVE_GSTREAMER */

/* GTK+ 2.0 Thread support */
/* #undef HAVE_GTHREAD */

/* GTK+ 2.x toolkit */
/* #undef HAVE_GTK */

/* Define to 1 if you have the <inttypes.h> header file. */
/* #undef HAVE_INTTYPES_H */

/* Intel Perceptual Computing SDK library */
/* #undef HAVE_INTELPERC */

/* Intel Integrated Performance Primitives */
/* #undef HAVE_IPP */
/* #undef HAVE_IPP_ICV_ONLY */

/* Intel IPP Async */
/* #undef HAVE_IPP_A */

/* JPEG-2000 codec */
#define HAVE_JASPER

/* IJG JPEG codec */
#define HAVE_JPEG

/* libpng/png.h needs to be included */
/* #undef HAVE_LIBPNG_PNG_H */

/* V4L/V4L2 capturing support via libv4l */
/* #undef HAVE_LIBV4L */

/* Microsoft Media Foundation Capture library */
/* #undef HAVE_MSMF */

/* NVidia Video Decoding API*/
/* #undef HAVE_NVCUVID */

/* OpenCL Support */
#define HAVE_OPENCL
/* #undef HAVE_OPENCL_STATIC */

/* OpenEXR codec */
#define HAVE_OPENEXR

/* OpenGL support*/
/* #undef HAVE_OPENGL */

/* OpenNI library */
/* #undef HAVE_OPENNI */

/* OpenNI library */
/* #undef HAVE_OPENNI2 */

/* PNG codec */
#define HAVE_PNG

/* Qt support */
/* #undef HAVE_QT */

/* Qt OpenGL support */
/* #undef HAVE_QT_OPENGL */

/* QuickTime video libraries */
/* #undef HAVE_QUICKTIME */

/* QTKit video libraries */
/* #undef HAVE_QTKIT */

/* Intel Threading Building Blocks */
/* #undef HAVE_TBB */

/* TIFF codec */
#define HAVE_TIFF

/* Unicap video capture library */
/* #undef HAVE_UNICAP */

/* Video for Windows support */
/* #undef HAVE_VFW */

/* V4L2 capturing support in videoio.h */
/* #undef HAVE_VIDEOIO */

/* Win32 UI */
/* #undef HAVE_WIN32UI */

/* Windows Runtime support */
/* #undef HAVE_WINRT */

/* XIMEA camera support */
/* #undef HAVE_XIMEA */

/* Xine video library */
/* #undef HAVE_XINE */

/* Define if your processor stores words with the most significant byte
   first (like Motorola and SPARC, unlike Intel and VAX). */
/* #undef WORDS_BIGENDIAN */


version_string.inc

  • 今気づいたけれど、この文字列はcv::getBuildInformation()を実行した時の結果だな
    General configuration for OpenCV 3.0.0-dev =====================================
      Version control:               3.0.0-beta-255-g2883342
    
      Platform:
        Host:                        Linux 3.10.24-g6a2d13a armv7l
        CMake:                       2.8.12.2
        CMake generator:             Unix Makefiles
        CMake build tool:            /usr/bin/make
        Configuration:               Release
    
      C/C++:
        Built as dynamic libs?:      YES
        C++ Compiler:                /usr/bin/c++  (ver 4.8.2)
        C++ flags (Release):         -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -pthread -fomit-frame-pointer -mfpu=neon -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden   -DNDEBUG
        C++ flags (Debug):           -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -pthread -fomit-frame-pointer -mfpu=neon -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden   -O0 -DDEBUG -D_DEBUG
        C Compiler:                  /usr/bin/cc
        C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -pthread -fomit-frame-pointer -mfpu=neon -ffunction-sections -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
        C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -pthread -fomit-frame-pointer -mfpu=neon -ffunction-sections -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
        Linker flags (Release):      
        Linker flags (Debug):        
        Precompiled headers:         YES
    
      OpenCV modules:
        To be built:                 cudev core flann imgproc imgcodecs videoio highgui ml features2d calib3d cudaarithm objdetect cudalegacy cudawarping cuda cudafilters cudaimgproc video cudabgsegm cudacodec cudafeatures2d cudaoptflow cudastereo photo shape stitching superres ts videostab
        Disabled:                    world
        Disabled by dependency:      -
        Unavailable:                 androidcamera java python2 python3 viz
    
      GUI: 
        QT:                          NO
        GTK+:                        NO
        GThread :                    NO
        GtkGlExt:                    NO
        OpenGL support:              NO
        VTK support:                 NO
    
      Media I/O: 
        ZLib:                        zlib (ver 1.2.8)
        JPEG:                        libjpeg (ver 90)
        WEBP:                        build (ver 0.3.1)
        PNG:                         build (ver 1.5.12)
        TIFF:                        build (ver 42 - 4.0.2)
        JPEG 2000:                   build (ver 1.900.1)
        OpenEXR:                     build (ver 1.7.1)
        GDAL:                        NO
    
      Video I/O:
        DC1394 1.x:                  NO
        DC1394 2.x:                  NO
        FFMPEG:                      NO
          codec:                     NO
          format:                    NO
          util:                      NO
          swscale:                   NO
          gentoo-style:              NO
        GStreamer:                   NO
        OpenNI:                      NO
        OpenNI PrimeSensor Modules:  NO
        OpenNI2:                     NO
        PvAPI:                       NO
        GigEVisionSDK:               NO
        UniCap:                      NO
        UniCap ucil:                 NO
        V4L/V4L2:                    NO/YES
        XIMEA:                       NO
        Xine:                        NO
    
      Other third-party libraries:
        Use IPP:                     NO
        Use Eigen:                   NO
        Use TBB:                     NO
        Use OpenMP:                  NO
        Use GCD                      NO
        Use Concurrency              NO
        Use C=:                      NO
        Use Cuda:                    YES (ver 6.5)
        Use OpenCL:                  YES
    
      NVIDIA CUDA
        Use CUFFT:                   YES
        Use CUBLAS:                  NO
        USE NVCUVID:                 NO
        NVIDIA GPU arch:             32
        NVIDIA PTX archs:
        Use fast math:               NO
    
      OpenCL:
        Version:                     dynamic
        Include path:                /home/ubuntu/opencv/3rdparty/include/opencl/1.2
        Use AMDFFT:                  NO
        Use AMDBLAS:                 NO
    
      Python 2:
        Interpreter:                 /usr/bin/python2.7 (ver 2.7.6)
    
      Python 3:
        Interpreter:                 /usr/bin/python3.4 (ver 3.4)
    
      Python (for build):            /usr/bin/python2.7
    
      Java:
        ant:                         NO
        JNI:                         NO
        Java wrappers:               NO
        Java tests:                  NO
    
      Matlab:
        mex:                         NO
    
      Documentation:
        Doxygen:                     NO
        PlantUML:                    NO
    
      Tests and samples:
        Tests:                       YES
        Performance tests:           YES
        C/C++ Examples:              NO
    
      Install path:                  /usr/local
    
      cvconfig.h is in:              /home/ubuntu/opencv
    -----------------------------------------------------------------

OpenCLをセットアップする

  • OpenCLを有効にしないと、実行時エラーになる
  • ビルド時エラーでなく、実行時エラー
  • OpenCLをインストールする必要がある
     sudo apt-get -y install ocl-icd-opencl-dev

highgui + gtk 2.0

  • highguiでウィンドウを表示する場合、GTK 2.0が必要になる
  • apt-getを使ってインストールする
    sudo apt-get -y install libgtk2.0-dev

performance

CPU        Cuda        (w/transfer)    OpenCL      (w/transfer)
0.252243   0.836868    0.272061    
0.444737   1.89693 0.317164    
19.9843    7.30137 2.19153 
21.0076    2.48653 22.5633 

-0.0259084 -0.176707   0.167617    
0.321134   2.60277 0.311503    
21.1274    7.40303 2.85302 
21.6446    3.48516 22.779  

0.275134   1.12396 0.28873 
0.296786   3.64872 0.283497    
20.062 8.8461  3.33611 
22.0169    2.78913 22.6017 

0.1348 -0.243131   0.156863    
0.341507   2.0028  0.297173    
21.6203    5.98087 0.380911    
23.72  1.96771 22.1059

関連ページ


*1  Jetson/Tutorials/OpenCV - eLinux.org, 2015-01-07閲覧
*2  💻 CUDA GPUS | NVIDIA Developer, 2015-07-01閲覧

添付ファイル: fileCVIM-saisentan-OpenCV-Jetson.pdf 465件 [詳細] fileScreenshot from 2015-01-30 15_29_33.png 247件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-08-24 (木) 10:01:36 (57d)