メモ
朝起きてSourcetreeを見たらOpenCVのバージョンが4.0になってたので。夏休み前に公式バイナリが出そうですね。
今回の目標は
VisualStudioで必要なコア機能をつめこんでWorldモジュールを作る
いろいろ高速に処理できると嬉しい。
こんな感じです。
準備としては
CMAKE 3.51以上が必須になりましたので、古いCMAKEを使っている人はアップデートしましょう。
C言語サポートは本格的に切っていく感じです。3.41で指摘されていたCのヘッダーファイルの不具合とかもむにゃむにゃ言ってたのでCで使いたい人は3.4.0までが限界でしょうね。知らんけど。
CUDA入れたいならVisualStudioのバージョンに気をつけましょう。この件は前回書きましたので飛ばしますが。
CUDAするなら、CUDAのSDKをダウンロードして、インストールします。
インテルで配布しているMKL、TBB、MediaSDKは幸せになれる予感がありますのでダウンロードして開発環境にインストールします。
ところで、traincascadeはいつの間にかTBBではなく、OpenCVのParallelLoopBodyを使用するようになっていましたので、以前書いたTBBを有効にすると幸せになれる件は最新ではそうでもないみたいになる予感です。
ただ、MKLがwith tbbというオプションがあり、もしかしたら幸せを呼ぶ可能性があります。
WITH_TBBはOFFにしてMKL_WITH_TBBをONにしてみました。
また、パラレル化のライブラリ選択からCstripが消えています。もともと入れている人はいなかったと思うので気にしません。
TurboJpegのJPEG-STATIC.LIBは使いたいところです。とりあえず準備しておきます。もしかしてJPEG9の新機能とか使っててリンクできない可能性もありますから。 いまのところ問題なさそう。
Eigenもダウンロードしておきます。これは効くような気がするんです。CUDAもこいつがあると使うみたいです。
それではCMAKEしてみましょう。
AVX_512F is not supported by C++ compiler
AVX512_SKX is not supported by C++ compiler
Dispatch optimization AVX512_SKX is not available, skipped
Looking for Mfapi.h
Looking for Mfapi.h - found
MFX_INCLUDE: C:/Program Files (x86)/IntelSWTools/Intel(R)_Media_SDK_2017.0.1/include (C:\Program Files (x86)\IntelSWTools\Intel(R)_Media_SDK_2017.0.1/include)
found Intel IPP (ICV version): 2017.0.3 [2017.0.3]
at: D:/dev/cvmaster/cv400/3rdparty/ippicv/ippicv_win
found Intel IPP IW sources: 2017.0.3
at: D:/dev/cvmaster/cv400/3rdparty/ippicv/ippiw_win
CUDA detected: 9.1
CUDA NVCC target flags: -gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-D_FORCE_INLINES
LAPACK(MKL): LAPACK_LIBRARIES: C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64/mkl_intel_lp64.lib;C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64/mkl_tbb_thread.lib;C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/tbb/lib/intel64_win/vc14/tbb.lib;C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64/mkl_core.lib
LAPACK(MKL): Support is enabled.
Processing WORLD modules...
module opencv_cudev...
module opencv_core...
module opencv_cudaarithm...
module opencv_flann...
module opencv_imgproc...
module opencv_ml...
module opencv_objdetect...
module opencv_video...
module opencv_cudabgsegm...
module opencv_cudafilters...
module opencv_cudaimgproc...
module opencv_cudawarping...
module opencv_dnn...
module opencv_imgcodecs...
module opencv_photo...
module opencv_shape...
module opencv_videoio...
module opencv_cudacodec...
module opencv_highgui...
module opencv_features2d...
module opencv_calib3d...
module opencv_cudafeatures2d...
module opencv_cudalegacy...
module opencv_cudaobjdetect...
module opencv_cudaoptflow...
module opencv_cudastereo...
module opencv_stitching...
module opencv_superres...
module opencv_videostab...
Processing WORLD modules... DONE
Excluding from source files list: /modules/world/layers/layers_common.avx512_skx.cpp
General configuration for OpenCV 4.0.0-pre =====================================
Version control: 3.4.1-308-g10ba6a93a
Platform:
Timestamp: 2018-04-11T03:08:39Z
Host: Windows 10.0.16299 AMD64
CMake: 3.10.3
CMake generator: Visual Studio 15 2017 Win64
CMake build tool: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/MSBuild.exe
MSVC: 1911
CPU/HW features:
Baseline: SSE SSE2 SSE3
requested: SSE3
Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2
requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
SSE4_1 (3 files): + SSSE3 SSE4_1
SSE4_2 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2
FP16 (2 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
AVX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
AVX2 (9 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
C/C++:
Built as dynamic libs?: YES
C++ Compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe (ver 19.11.25547.0)
C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP8 /MD /O2 /Ob2 /DNDEBUG
C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP8 /MDd /Zi /Ob0 /Od /RTC1
C Compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe
C flags (Release): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /MP8 /MD /O2 /Ob2 /DNDEBUG
C flags (Debug): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /MP8 /MDd /Zi /Ob0 /Od /RTC1
Linker flags (Release): /machine:x64 /INCREMENTAL:NO
Linker flags (Debug): /machine:x64 /debug /INCREMENTAL
ccache: NO
Precompiled headers: NO
Extra dependencies: cudart.lib nppc.lib nppial.lib nppicc.lib nppicom.lib nppidei.lib nppif.lib nppig.lib nppim.lib nppist.lib nppisu.lib nppitc.lib npps.lib cublas.lib cufft.lib -LIBPATH:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.1/lib/x64
3rdparty dependencies:
OpenCV modules:
To be built: calib3d core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev dnn features2d flann highgui imgcodecs imgproc java_bindings_generator ml objdetect photo python_bindings_generator shape stitching superres ts video videoio videostab world
Disabled: js
Disabled by dependency: -
Unavailable: java python2 python3 viz
Applications: tests perf_tests apps
Documentation: NO
Non-free algorithms: NO
Windows RT support: NO
GUI:
Win32 UI: YES
Media I/O:
ZLib: build (ver 1.2.11)
JPEG: D:/Tools/libjpeg-turbo/lib/jpeg-static.lib (ver )
WEBP: build (ver encoder: 0x020e)
PNG: build (ver 1.6.34)
TIFF: build (ver 42 - 4.0.9)
JPEG 2000: build (ver 1.900.1)
Video I/O:
Video for Windows: YES
DC1394: NO
FFMPEG: YES (prebuilt binaries)
avcodec: YES (ver 57.107.100)
avformat: YES (ver 57.83.100)
avutil: YES (ver 55.78.100)
swscale: YES (ver 4.8.100)
avresample: YES (ver 3.7.0)
DirectShow: YES
Media Foundation: YES
Intel Media SDK: YES (C:/Program Files (x86)/IntelSWTools/Intel(R)_Media_SDK_2017.0.1/lib/x64/libmfx_vs2015.lib)
Parallel framework: Concurrency
Trace: YES (with Intel ITT)
Other third-party libraries:
Intel IPP: 2017.0.3 [2017.0.3]
at: D:/dev/cvmaster/cv400/3rdparty/ippicv/ippicv_win
Intel IPP IW: sources (2017.0.3)
at: D:/dev/cvmaster/cv400/3rdparty/ippicv/ippiw_win
Lapack: YES (C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64/mkl_intel_lp64.lib C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64/mkl_tbb_thread.lib C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/tbb/lib/intel64_win/vc14/tbb.lib C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64/mkl_core.lib)
Eigen: YES (ver 3.3.90)
Custom HAL: NO
Protobuf: build (3.5.1)
NVIDIA CUDA: YES (ver 9.1, CUFFT CUBLAS NVCUVID)
NVIDIA GPU arch: 60 61
NVIDIA PTX archs:
OpenCL: YES (no extra features)
Include path: D:/dev/cvmaster/opencv/3rdparty/include/opencl/1.2
Link libraries: Dynamic load
Python (for build): C:/Python27/python.exe
Java:
ant: NO
JNI: C:/Program Files/Java/jdk1.8.0_152/include C:/Program Files/Java/jdk1.8.0_152/include/win32 C:/Program Files/Java/jdk1.8.0_152/include
Java wrappers: NO
Java tests: NO
Install to: D:/dev/cvmaster/cv400/install
Configuring done
Generating done
こんな感じです。
ちょっと前までのバージョンですと
AVX512_SKX is not supported by C++ compiler なのに張り切ってなんかやって非常に時間がかかっていたのですがここで時間をとられることはなくなったようです。
MKLはTBB有効な感じで入れました。それでもCV側はちゃんと Parallel framework: Concurrency となっています。
警告はめちゃくちゃ出てましたがエラーはなく、ライブラリの構築が出来ました。
私が気になるのはカスケードトレーニングのパフォーマンスなので、明日にでも試してみたいと思います。
それでは。