dusty-nv / jetson-containers

Machine Learning Containers for NVIDIA Jetson and JetPack-L4T
MIT License
2.34k stars 478 forks source link

OpenCV 4.10.0 installed instead of OpenCV 4.8.1 #680

Open aapatni opened 1 month ago

aapatni commented 1 month ago

I'm experiencing a bug where trying to build 4.8.1 leads to 4.10.0 being installed.

Build Command: OPENCV_VERSION=4.8.1 CUDA_VERSION=12.2 jetson-containers build opencv:4.8.1

docker run -it opencv:4.8.1-r36.3.0-cu122 python3 -c "import cv2; print(cv2.getBuildInformation())"

General configuration for OpenCV 4.10.0-dev =====================================
  Version control:               08f7f13

  Extra modules:
    Location (extra):            /opt/opencv_contrib/modules
    Version control (extra):     80f1ca2

  Platform:
    Timestamp:                   2024-10-13T19:09:18Z
    Host:                        Linux 5.15.136-tegra aarch64
    CMake:                       3.22.1
    CMake generator:             Unix Makefiles
    CMake build tool:            /usr/bin/gmake
    Configuration:               RELEASE
    Algorithm Hint:              ALGO_HINT_ACCURATE

  CPU/HW features:
    Baseline:                    NEON FP16
      requested:                 DETECT
      required:                  NEON
    Dispatched code generation:  NEON_DOTPROD NEON_FP16 NEON_BF16
      requested:                 NEON_FP16 NEON_BF16 NEON_DOTPROD
      NEON_DOTPROD (1 files):    + NEON_DOTPROD
      NEON_FP16 (2 files):       + NEON_FP16
      NEON_BF16 (0 files):       + NEON_BF16

  C/C++:
    Built as dynamic libs?:      YES
    C++ standard:                11
    C++ Compiler:                /usr/bin/c++  (ver 11.4.0)
    C++ flags (Release):         -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
    C++ flags (Debug):           -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
    C Compiler:                  /usr/bin/cc
    C flags (Release):           -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
    C flags (Debug):             -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
    Linker flags (Release):      -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined  
    Linker flags (Debug):        -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined  
    ccache:                      NO
    Precompiled headers:         NO
    Extra dependencies:          m pthread cudart_static dl rt nppc nppial nppicc nppidei nppif nppig nppim nppist nppisu nppitc npps cublas cudnn cufft -L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu
    3rdparty dependencies:

  OpenCV modules:
    To be built:                 alphamat aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape signal stereo stitching structured_light superres surface_matching text tracking video videoio videostab wechat_qrcode xfeatures2d ximgproc xobjdetect xphoto
    Disabled:                    world
    Disabled by dependency:      -
    Unavailable:                 cannops cvv hdf java julia matlab ovis python2 sfm ts viz
    Applications:                apps
    Documentation:               NO
    Non-free algorithms:         YES

  GUI:                           GTK3
    GTK+:                        YES (ver 3.24.33)
    VTK support:                 NO

  Media I/O: 
    ZLib:                        /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.11)
    JPEG:                        /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 80)
    WEBP:                        build (ver encoder: 0x020f)
    PNG:                         /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.6.37)
    TIFF:                        build (ver 42 - 4.6.0)
    JPEG 2000:                   build (ver 2.5.0)
    OpenEXR:                     build (ver 2.3.0)
    HDR:                         YES
    SUNRASTER:                   YES
    PXM:                         YES
    PFM:                         YES

  Video I/O:
    FFMPEG:                      YES
      avcodec:                   YES (58.134.100)
      avformat:                  YES (58.76.100)
      avutil:                    YES (56.70.100)
      swscale:                   YES (5.9.100)
      avresample:                NO
    GStreamer:                   YES (1.20.3)
    v4l/v4l2:                    YES (linux/videodev2.h)

  Parallel framework:            TBB (ver 2021.5 interface 12050)

  Trace:                         YES (with Intel ITT)

  Other third-party libraries:
    Lapack:                      YES (/usr/lib/aarch64-linux-gnu/liblapack.so /usr/lib/aarch64-linux-gnu/libcblas.so /usr/lib/aarch64-linux-gnu/libatlas.so)
    Eigen:                       YES (ver 3.4.0)
    Custom HAL:                  YES (carotene (ver 0.0.1))
    Protobuf:                    build (3.19.1)
    Flatbuffers:                 builtin/3rdparty (23.5.9)

  NVIDIA CUDA:                   YES (ver 12.2, CUFFT CUBLAS FAST_MATH)
    NVIDIA GPU arch:             87
    NVIDIA PTX archs:

  cuDNN:                         YES (ver 8.9.4)

  Python 3:
    Interpreter:                 /usr/local/bin/python3 (ver 3.10.12)
    Libraries:                   /usr/lib/aarch64-linux-gnu/libpython3.10.so (ver 3.10.12)
    Limited API:                 NO
    numpy:                       /usr/local/lib/python3.10/dist-packages/numpy/core/include (ver 1.26.4)
    install path:                lib/python3.10/dist-packages/cv2/python-3.10

  Python (for build):            /usr/local/bin/python3

  Java:                          
    ant:                         NO
    Java:                        NO
    JNI:                         NO
    Java wrappers:               NO
    Java tests:                  NO

  Install to:                    /usr/local
-----------------------------------------------------------------

I know that the correct tag is being checked out (4.8.1) and that the correct commit hashes for each of the opencv repos is being checked out as well (verified manually).

Additionally after this line: https://github.com/dusty-nv/jetson-containers/blob/6d985857d61dc9fdb4e368a54ac49b82ef9d5bca/packages/opencv/build.sh#L82 I can verify that 4.8.1-dirty is installed. However, after the cmake command, 4.10.0-dev is installed and shows up in the build outputs.

I checked that $OPENCV_VERSION == 4.8.1 and $OPENCV_PYTHON == 4.x

Is anyone else able to repro these results building the container from scratch?

dusty-nv commented 1 month ago

Hi Adam, I think it may be related to this line:

https://github.com/dusty-nv/jetson-containers/blob/6d985857d61dc9fdb4e368a54ac49b82ef9d5bca/packages/opencv/install.sh#L22

Where it installs opencv-contrib~=OPENCV_VERSION

The tilde is it so it matches the dev versions like 4.10.0g281813

You might try changing that or hardcoding it to 4.8 to see if that works?


From: Adam Patni @.> Sent: Sunday, October 13, 2024 3:55:16 PM To: dusty-nv/jetson-containers @.> Cc: Subscribed @.***> Subject: [dusty-nv/jetson-containers] OpenCV 4.10.0 installed instead of OpenCV 4.8.1 (Issue #680)

I'm experiencing a bug where trying to build 4.8.1 leads to 4.10.0 being installed.

Build Command: OPENCV_VERSION=4.8.1 CUDA_VERSION=12.2 jetson-containers build opencv:4.8.1

docker run -it opencv:4.8.1-r36.3.0-cu122 python3 -c "import cv2; print(cv2.getBuildInformation())"

General configuration for OpenCV 4.10.0-dev ===================================== Version control: 08f7f13

Extra modules: Location (extra): /opt/opencv_contrib/modules Version control (extra): 80f1ca2

Platform: Timestamp: 2024-10-13T19:09:18Z Host: Linux 5.15.136-tegra aarch64 CMake: 3.22.1 CMake generator: Unix Makefiles CMake build tool: /usr/bin/gmake Configuration: RELEASE Algorithm Hint: ALGO_HINT_ACCURATE

CPU/HW features: Baseline: NEON FP16 requested: DETECT required: NEON Dispatched code generation: NEON_DOTPROD NEON_FP16 NEON_BF16 requested: NEON_FP16 NEON_BF16 NEON_DOTPROD NEON_DOTPROD (1 files): + NEON_DOTPROD NEON_FP16 (2 files): + NEON_FP16 NEON_BF16 (0 files): + NEON_BF16

C/C++: Built as dynamic libs?: YES C++ standard: 11 C++ Compiler: /usr/bin/c++ (ver 11.4.0) C++ flags (Release): -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG C++ flags (Debug): -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG C Compiler: /usr/bin/cc C flags (Release): -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG C flags (Debug): -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG Linker flags (Release): -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined Linker flags (Debug): -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined ccache: NO Precompiled headers: NO Extra dependencies: m pthread cudart_static dl rt nppc nppial nppicc nppidei nppif nppig nppim nppist nppisu nppitc npps cublas cudnn cufft -L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu 3rdparty dependencies:

OpenCV modules: To be built: alphamat aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape signal stereo stitching structured_light superres surface_matching text tracking video videoio videostab wechat_qrcode xfeatures2d ximgproc xobjdetect xphoto Disabled: world Disabled by dependency: - Unavailable: cannops cvv hdf java julia matlab ovis python2 sfm ts viz Applications: apps Documentation: NO Non-free algorithms: YES

GUI: GTK3 GTK+: YES (ver 3.24.33) VTK support: NO

Media I/O: ZLib: /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.11) JPEG: /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 80) WEBP: build (ver encoder: 0x020f) PNG: /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.6.37) TIFF: build (ver 42 - 4.6.0) JPEG 2000: build (ver 2.5.0) OpenEXR: build (ver 2.3.0) HDR: YES SUNRASTER: YES PXM: YES PFM: YES

Video I/O: FFMPEG: YES avcodec: YES (58.134.100) avformat: YES (58.76.100) avutil: YES (56.70.100) swscale: YES (5.9.100) avresample: NO GStreamer: YES (1.20.3) v4l/v4l2: YES (linux/videodev2.h)

Parallel framework: TBB (ver 2021.5 interface 12050)

Trace: YES (with Intel ITT)

Other third-party libraries: Lapack: YES (/usr/lib/aarch64-linux-gnu/liblapack.so /usr/lib/aarch64-linux-gnu/libcblas.so /usr/lib/aarch64-linux-gnu/libatlas.so) Eigen: YES (ver 3.4.0) Custom HAL: YES (carotene (ver 0.0.1)) Protobuf: build (3.19.1) Flatbuffers: builtin/3rdparty (23.5.9)

NVIDIA CUDA: YES (ver 12.2, CUFFT CUBLAS FAST_MATH) NVIDIA GPU arch: 87 NVIDIA PTX archs:

cuDNN: YES (ver 8.9.4)

Python 3: Interpreter: /usr/local/bin/python3 (ver 3.10.12) Libraries: /usr/lib/aarch64-linux-gnu/libpython3.10.so (ver 3.10.12) Limited API: NO numpy: /usr/local/lib/python3.10/dist-packages/numpy/core/include (ver 1.26.4) install path: lib/python3.10/dist-packages/cv2/python-3.10

Python (for build): /usr/local/bin/python3

Java: ant: NO Java: NO JNI: NO Java wrappers: NO Java tests: NO

Install to: /usr/local

I know that the correct tag is being checked out (4.8.1) and that the correct commit hashes for each of the opencv repos is being checked out as well (verified manually).

Additionally after this line: https://github.com/dusty-nv/jetson-containers/blob/6d985857d61dc9fdb4e368a54ac49b82ef9d5bca/packages/opencv/build.sh#L82 I can verify that 4.8.1-dirty is installed. However, after the cmake command, 4.10.0-dev is installed and shows up in the build outputs.

I checked that $OPENCV_VERSION == 4.8.1 and $OPENCV_PYTHON == 4.x

Is anyone else able to repro these results building the container from scratch?

— Reply to this email directly, view it on GitHubhttps://github.com/dusty-nv/jetson-containers/issues/680, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADVEGK73AY5KMC4GHHOWJHTZ3LF2JAVCNFSM6AAAAABP3XPWASVHI2DSMVQWIX3LMV43ASLTON2WKOZSGU4DIMRTGAZTIMY. You are receiving this because you are subscribed to this thread.Message ID: @.***>

dusty-nv commented 1 month ago

Hi Adam, this is fixed in https://github.com/dusty-nv/jetson-containers/commit/6adb37f23f2abe6e11839a858435941cb47650c4 and the misversioned packages on the server have been reuploaded, sorry about that :+1:

aapatni commented 1 month ago

@dusty-nv Thank you so much! I haven't had a chance to investigate the version yet. I was able to temporarily get around this by using the -deb version of the package. Will test the non-debian when I can and report back here